Skip to main content
emnode
Cost

Buy Azure Data Factory reserved capacity

Azure Advisor has spotted that your Data Factory data flows run a steady baseline of compute at the pay-as-you-go rate. A reserved-capacity commitment buys the same cores up front for a one or three year term at a discount, and the saving lands on the bill automatically without touching a single pipeline.

13 min·10 sections·AZURE

Last reviewed

Data Factory reserved capacity: the basics

What is Advisor actually recommending when it says 'consider Data Factory reserved instance'?

Azure Data Factory bills its data flow compute by the vCore-hour. Every time a mapping data flow runs, or a debug session spins up an Azure integration runtime cluster, you pay the pay-as-you-go rate for the cores it uses while it runs. If you run data flows on any kind of regular schedule, hourly loads, nightly transforms, an always-on debug cluster, that adds up to a predictable baseline of compute that you pay full price for, month after month.

Azure Advisor watches that baseline. When it sees enough steady data flow usage over its look-back period, it raises the Cost recommendation 'Consider Data Factory reserved instance to save over the on-demand costs' (recommendation ID 0d524e8d-4cfd-4db5-9f91-8b4bb5235a8e). The recommendation is simple: instead of paying the on-demand rate for those cores, commit to them for a one or three year term and Microsoft gives you a discount on the matching usage. The Advisor text itself reads: 'we recommend reservations to maximize savings. Reservations apply automatically to matching deployments.'

A Data Factory reservation is bought by region, compute type (general purpose or memory optimised) and core count, for a one or three year term. You do not assign it to a specific factory or integration runtime. Once purchased, the reservation discount applies automatically to any matching data flow usage across the scope you chose, and the matching cores stop being charged at the pay-as-you-go rate. Nothing in your pipelines changes. The only thing that changes is the price you pay for compute you were already going to run.

In this lesson you will learn how Azure Data Factory charges for data flow compute, why a steady workload triggers the Advisor reserved-capacity recommendation, how to read what Advisor is offering, and how to size and buy a Data Factory reservation so the discount applies automatically without changing a single pipeline. It is a cost lesson, so the framing throughout is savings and payback, not risk.

Fun fact

The reservation you never have to plug in

A Data Factory reservation is one of the few Azure purchases that buys a discount rather than a thing. Microsoft is explicit that buying reserved capacity does not pre-allocate or reserve any virtual machines or clusters for you, and you never attach the reservation to a factory or an integration runtime. It is purely a billing construct: you commit to a number of cores for a term, and any matching data flow usage anywhere in your chosen scope simply stops being billed at the on-demand rate. The compute you already run quietly gets cheaper, and the only sign anything happened is a smaller line on the invoice.

Reading the Advisor recommendation before you commit

Priya runs the data platform at a retailer whose nightly ETL is built on Azure Data Factory mapping data flows. The pipelines have been stable for months, and the Azure Advisor cost tab now shows 'Consider Data Factory reserved instance to save over the on-demand costs' with a High impact flag.

Before anyone commits money, Priya pulls the recommendation from the command line to see exactly what Advisor is proposing, the term, the quantity and the estimated saving, so the team is sizing a reservation to real baseline usage rather than guessing.

Start by listing the Advisor cost recommendations and filtering to the Data Factory reservation one. This shows the term and savings Advisor has modelled from your actual usage.

$ az advisor recommendation list --category Cost --query "[?contains(shortDescription.solution, 'Data Factory')]" -o table
Category Impact Resource Group Short Description
---------- -------- ---------------- ---------------------------------------------------
Cost High - Consider Data Factory reserved instance to save ...
# High impact: Advisor sees a steady data flow baseline worth reserving.
# Next: check the reservation catalogue for the matching SKU and price before buying.

Advisor sizes the recommendation from your real look-back usage. Read the term and quantity it suggests first; that is your baseline, and it is what you size the commitment to, not your peak.

How a Data Factory reservation actually discounts your billdeep dive

A Data Factory reservation is defined by four attributes: the Azure region, the compute type (general purpose or memory optimised), the core count quantity, and the term (one or three years). When you buy it, you are not buying capacity, you are buying a discounted rate. Microsoft states plainly that purchasing reserved capacity does not pre-allocate or reserve any specific virtual machines or clusters. The reservation is a billing entitlement, nothing more.

The discount applies hour by hour against matching usage. Microsoft's own worked example: if you buy a reservation for one hour of 80 cores of memory optimised compute and run a data flow using 144 memory optimised cores for that hour, the reservation discount covers 80 cores and you pay the pay-as-you-go price for the remaining 64. Conversely, if you buy 32 general purpose cores and only use 16 in an hour, the discount covers what you used and the unused reserved core-hours for that hour are gone. This is the use-it-or-lose-it nature of reservations, and it is why sizing to baseline matters: you cannot carry forward unused reserved hours.

Because the entitlement matches on attributes rather than on a named resource, existing factories and newly deployed factories automatically get the benefit, with no assignment step. You choose a scope at purchase, single subscription or shared across the billing account, and any matching data flow usage in that scope is discounted. The reservation is also not locked in for life: within Microsoft's documented limits you can cancel, exchange or refund it through the self-service reservations experience if your usage changes.

What is the impact of leaving the recommendation unactioned?

The direct impact is straightforward: you keep paying the on-demand rate on compute you were always going to run. Every hour your baseline data flows execute at full price is a chunk of discount you could have captured and did not. Unlike a one-off waste, this is a recurring overpayment that compounds for as long as the workload runs unreserved, which for a stable ETL platform can be years.

There is no operational downside to leaving it, which is exactly why it is easy to ignore. Nothing breaks, no pipeline slows down, no alert fires. The cost is purely financial and entirely silent: a steadily higher invoice than the same workload needs to produce. That silence is what lets the overpayment persist quarter after quarter unless someone owns the decision.

The flip side is that the recommendation is cheap to act on and reversible within limits. The discount applies automatically with no engineering change, the saving appears on the next billing cycle, and reservations can be exchanged or refunded under Microsoft's self-service rules if the workload genuinely moves. The asymmetry runs the opposite way to a security finding: here the cost of inaction is a quiet, recurring overpayment, and the cost of action is a single sizing decision.

How do you buy the reservation safely?

Treat this as a sizing decision followed by a purchase, not a configuration change. The order matters: size to baseline, price the exact SKU, then buy at the scope and term you have decided on. Nothing here touches your pipelines.

1. Read what Advisor is actually recommending

Open the Advisor cost recommendation 'Consider Data Factory reserved instance to save over the on-demand costs' and note the term, quantity and estimated saving it has modelled from your look-back usage. This is your starting point: Advisor has already done the baseline analysis, so use its quantity as the anchor rather than guessing.

2. Separate the steady baseline from the spikes

Confirm how many cores, of which compute type, your data flows run every hour versus only at peaks such as month-end. Reserve the floor, not the peak. Because reservations are use-it-or-lose-it per hour, any reserved core-hour you do not consume is forfeited, so leaving the spiky usage on pay-as-you-go is the cheaper choice for that portion.

3. Choose term and scope to match your confidence

Pick a one year term where the forecast is less certain and a three year term only where the baseline is solid, since the longer term carries the deeper discount but the bigger commitment. Choose single-subscription scope to ring-fence the benefit, or shared scope to let any matching usage across the billing account absorb the discount. You can pay upfront or in fixed monthly instalments at the same effective price.

4. Price it, then purchase

Use the reservation catalogue to find the exact SKU for your region and compute type, calculate the price to confirm the saving before you commit, then purchase. The discount applies automatically to matching usage from that point, with no assignment and no pipeline change. Track the realised saving against on-demand on the next bill to confirm the discount is landing.

# Requires the reservations CLI extension (auto-installs on first use) and
# Owner or Reservation purchaser role on the billing subscription.
SUB="00000000-0000-0000-0000-000000000000"   # subscription billed for the reservation
LOC="westeurope"                              # region your data flows run in

# 1. Confirm Advisor is recommending the Data Factory reservation.
az advisor recommendation list --category Cost \
  --query "[?contains(shortDescription.solution, 'Data Factory')].{impact:impact, solution:shortDescription.solution}" \
  -o table

# 2. Find the matching Data Factory reservation SKU in your region.
az reservations catalog show \
  --subscription-id "$SUB" \
  --reserved-resource-type DataFactory \
  --location "$LOC" \
  --query "[].{sku:skuName, term:terms[].termUnit}" -o table

# 3. Price the commitment BEFORE buying (size --quantity to your baseline cores).
az reservations reservation-order calculate \
  --reserved-resource-type DataFactory \
  --sku <skuName-from-step-2> \
  --location "$LOC" \
  --billing-scope "$SUB" \
  --applied-scope-type Single \
  --applied-scope "$SUB" \
  --term P3Y \
  --billing-plan Monthly \
  --quantity <baseline-cores> \
  --display-name adf-dataflow-baseline

# 4. Purchase once the price checks out. The order id is a new GUID you supply.
az reservations reservation-order purchase \
  --reservation-order-id "$(uuidgen)" \
  --reserved-resource-type DataFactory \
  --sku <skuName-from-step-2> \
  --location "$LOC" \
  --billing-scope "$SUB" \
  --applied-scope-type Single \
  --applied-scope "$SUB" \
  --term P3Y \
  --billing-plan Monthly \
  --quantity <baseline-cores> \
  --display-name adf-dataflow-baseline

Quick quiz

Question 1 of 5

Azure Advisor raises 'Consider Data Factory reserved instance to save over the on-demand costs'. What is it actually recommending?

You can now read the 'Consider Data Factory reserved instance' recommendation for what it is: an offer to pay a discounted rate on data flow compute you already run at full price. You know it is a billing entitlement, not capacity, that the discount applies automatically with no pipeline change, that reservations are use-it-or-lose-it per hour so sizing to baseline matters, and how to price and buy one from the command line.

Back to the library