Dataflow Gen2 vs Pipeline vs Notebook in Fabric (2026)

Abstract illustration of a ribbon of teal and orange light flowing into a glowing glass cylinder

Last updated: October 27, 2026

By ZapAI Team

TL;DR: In Microsoft Fabric, Dataflow Gen2 vs pipeline isn’t really an either-or choice. Pipelines move and orchestrate, Dataflow Gen2 shapes data with Power Query, and notebooks transform with code. The cost gap depends on run length, because a CI/CD dataflow pays 12 CU per second for its first 10 minutes and 1.5 after that. Mirror or copy data in, transform it with the cheapest engine your team can maintain, and let a pipeline run the schedule.

Use pipelines to move data and orchestrate jobs, Dataflow Gen2 for analyst-owned Power Query shaping, and notebooks for code-heavy or high-volume transformation. Mirroring and Copy job are usually the cheapest ways in.

Ask in any Fabric forum whether Dataflow Gen2 or a notebook is cheaper and you’ll get five confident answers that contradict each other. Four to eight times more expensive. Ten to twenty percent cheaper. Depends. They’re all describing real experiences on different versions, different settings, and different run lengths, and almost none of them mention the rates Microsoft actually publishes.

This guide does what Microsoft’s own decision guides don’t. It pairs each Fabric data engineering tool with the job it’s built for and the meter it bills on, then works through the arithmetic. Rates come from Microsoft Learn pricing pages checked on October 27, 2026, and dollar figures use the East US pay-as-you-go rate of $0.18 per capacity unit (CU) hour from the Azure retail price API. Where we’re assuming something, we say so.

What’s the Difference Between Dataflow Gen2, a Pipeline, and a Notebook?

A pipeline orchestrates. It schedules, copies, branches, and retries. Dataflow Gen2 transforms data with Power Query in a visual editor. A notebook transforms data with Python, PySpark, SQL, or Scala code.

Put another way, a pipeline is the conductor, and the other two are instruments. A pipeline can run a Copy activity on its own, but for real transformation it calls a dataflow or a notebook and waits for the result. Microsoft’s notebook activity documentation shows pipelines passing parameters straight into a notebook’s parameter cell.

The confusion comes from overlap. Dataflow Gen2 can land data in a lakehouse on a schedule without any pipeline. A notebook can call other notebooks. Copy job does incremental loads without a pipeline at all. So which one owns which job? That’s the useful question.

Which Fabric Tool Should You Use for Each Job?

Match the tool to the job, not the team’s favorite. Mirror or copy data in, use Dataflow Gen2 when analysts own the logic, use notebooks for heavy or code-first transformation, and orchestrate with pipelines.

Microsoft has two decision guides, one on copy, dataflow, and Spark and one on data movement and transformation. Both are organized by tool and persona. Neither mentions cost. Here’s the same advice organized by job, with the meter attached.

JobFirst choiceMeterFallback
Keep a near-real-time copy of Azure SQL, SQL Server, or SnowflakeMirroringReplication compute freeCopy job with CDC
Multi-table incremental load, no codeCopy job, incremental3 CU-hours, scaled by throughput usedCopy activity with a watermark table
One-time historical bulk loadCopy activity or Copy job full copy1.5 CU-hours, scaled by throughput usedDataflow Gen2 Fast Copy
Power Query shaping owned by analystsDataflow Gen2 (CI/CD)12 CU/s for 10 min, then 1.5 CU/sPython notebook
REST API pulls and small JSON payloadsPython notebook2 vCores by defaultSpark notebook
Large joins, slowly changing dimensions, ML featuresSpark notebook1 CU per 2 vCores, active time onlySpark job definition
Compiled production Spark jobs or streamingSpark job definitionSame Spark meterSpark notebook
SQL-first models with tests and lineagedbt job or materialized lake viewsCompute of the target engineT-SQL in a warehouse
Schedule, retry, and branch all of the abovePipeline0.0056 CU-hours per activity runApache Airflow job

Look at the last row. Orchestration is close to free. A pipeline that runs three activities costs about 0.017 CU-hours, roughly a third of a cent. The money goes to whatever the pipeline triggers, which Microsoft’s pipeline pricing page says bills separately on its own meter.

A central glowing hub sending thin light lines to several glass blocks in sequence, representing a pipeline orchestrating jobs

How Much Does Each Option Cost in Capacity Units?

CI/CD Dataflow Gen2 costs 12 CU per second for the first 10 minutes of each query and 1.5 after. Older non-CI/CD dataflows pay a flat 16. Copy activity and full Copy job cost 1.5 CU-hours, and Spark bills one CU per two vCores.

That tiered rate is the most important number in this whole comparison, and it’s missing from every competing guide we reviewed. Per Microsoft’s Dataflow Gen2 pricing page (updated September 2026), a short dataflow spends its whole life in the expensive tier. A long one gets cheaper every minute past ten.

Dataflow Gen2 run length (CI/CD)CU secondsAverage rateCost per run at $0.18 per CU-hour
5 minutes3,60012 CU/s$0.18
10 minutes7,20012 CU/s$0.36
30 minutes9,0005 CU/s$0.45
60 minutes11,7003.25 CU/s$0.59

Our arithmetic, from Microsoft’s rates. Same check Microsoft’s own worked example passes, by the way. Its 2,131-second query comes to 7,200 plus 1,531 times 1.5, or 9,497 CU seconds, matching the published figure.

Read that table twice. A five-minute dataflow that runs every half hour, all day, every day, spends every single second in the top tier and can end up costing more over a month than one long nightly job that does far more work. Frequency matters as much as duration.

A few other meters matter too.

  • High-scale compute, used when staging is on, runs 6 CU per second.
  • Fast Copy bills 1.5 CU per second of total core time across all cores. Not wall-clock time.
  • Copy job charges 1.5 CU-hours for full copy and 3 for incremental, including the first load in incremental mode. Double. Worth knowing before you set every table to incremental by reflex.
  • Spark, per Microsoft’s Spark compute page, bills one CU per two vCores and only while a session or job is active.
  • Trial capacities don’t apply Dataflow Gen2 pricing at all. Benchmarks run on trials need a grain of salt.

Is Dataflow Gen2 Really More Expensive Than a Notebook?

Sometimes. For short runs, yes, because every second sits in the 12 CU tier. For long runs on a CI/CD dataflow, the gap narrows sharply, and a badly sized Spark notebook can cost more.

Take one nightly transformation and price it four ways. Durations are illustrative inputs, not measurements, and real runtimes vary by engine.

OptionAssumed runCU secondsCost per run30 nightly runs
Dataflow Gen2, legacy non-CI/CD30 minutes at 16 CU/s28,800$1.44$43.20
Dataflow Gen2, CI/CD30 minutes9,000$0.45$13.50
Spark notebook16 vCores for 15 minutes7,200$0.36$10.80
Python notebook2 vCores for 30 minutes1,800 (assumed)$0.09 (assumed)$2.70

The Python notebook row carries an assumption. Microsoft documents the default as a single 2-vCore node but doesn’t publish a CU rate for it, so we applied the Spark ratio of one CU per two vCores. Treat that line as an estimate until you see your own numbers in the Capacity Metrics app.

Three things jump out. The legacy dataflow is the real villain. Saving it as a CI/CD item cuts that run’s compute by 68.75%. Same logic. Same output. The Spark notebook isn’t automatically cheap either. It only wins if it finishes faster or on fewer cores. And a Python notebook is absurdly cheap for small and medium jobs, which almost nobody mentions.

On an F2, which has 172,800 CU seconds a day, the CI/CD dataflow uses about 5% of the daily budget. The legacy version uses about 17%. That’s the difference between a capacity that hums and one that throttles at month end.

About that four-to-eight-times claim you’ll find quoted everywhere. It comes from a September 2025 blog with no published method, before the tiered pricing and the Modern Evaluator engine took effect. Microsoft’s own August 2026 benchmarks show Dataflow Gen2 using 82% to 95% fewer CU than Gen1 in the scenarios measured. Microsoft ran those tests, so weigh them accordingly. The point stands. The old multiples are stale.

When Is Copy Job or a Pipeline Copy Activity the Better Choice?

When the job is moving data, not reshaping it. Both bill 1.5 CU-hours for full copies. Copy job adds a wizard, multi-table setup, and change data capture, at double the rate for incremental loads.

Using a dataflow just to land raw tables in a lakehouse is the most common waste we find in Fabric capacity reviews. Wrong tool. Power Query wasn’t built to be a bulk mover. A Copy activity or Copy job does it on a cheaper meter and puts less load on the source system.

Copy job grew up in 2026. Microsoft’s Data Factory release notes list change data capture, Type 2 slowly changing dimensions, and audit columns as generally available in September 2026. Pick Copy job when someone other than a pipeline developer will maintain it. Pick a Copy activity inside a pipeline when the load is one step in a longer sequence, or when a simple watermark is enough and you’d rather pay the full-copy rate.

When Should You Mirror Instead of Copy?

Mirror when a supported database needs a near-real-time, read-only copy in OneLake. Microsoft doesn’t charge capacity for mirroring’s replication compute, and you get 1 TB of free mirror storage per CU you’ve purchased.

Free. That’s not a typo. Per Microsoft’s mirroring overview, replication doesn’t consume capacity units, an F64 includes 64 TB of free mirroring storage, and changes can land in as little as 15 seconds. You pay normally when you query the mirrored data. Nothing else on this list comes close for keeping an operational database in sync.

The trade-off? The mirrored copy is read-only Delta, and you get the source’s structure as-is. Any cleanup happens downstream in a notebook, a materialized lake view, or a dataflow. For event streams rather than databases, our Fabric Real-Time Intelligence guide covers Eventstreams and Eventhouse.

A glowing glass cylinder reflected perfectly in a calm reflective surface, representing database mirroring

Spark Notebook, Python Notebook, or Spark Job Definition?

Python notebooks for small and medium data and API pulls. Spark notebooks for large joins and distributed work. Spark job definitions for compiled, production Spark applications that don’t need an interactive notebook.

Python notebooks run on a single node with 2 vCores and 16 GB of memory by default, according to Microsoft’s Python notebook documentation, scalable up to 64 vCores. DuckDB, Polars, and delta-rs come preinstalled. For a few million rows, that’s plenty, and you skip the Spark session startup entirely.

Spark notebooks are the default for heavy lifting. Watch session lifetime, though. Spark bills while a session is active, and an interactive notebook that a developer leaves open over lunch, or over a long weekend if the timeout has been raised, keeps burning capacity units the whole time even though nothing useful is happening. Painful. Pipelines can reuse one Spark session across several notebooks with session tags, which cuts startup overhead noticeably on chained jobs.

A Spark job definition submits compiled code, such as a .jar file, with libraries and command-line arguments. Teams coming from Databricks or Synapse with existing Spark applications usually land here.

Does Dataflow Gen2 Support Git and CI/CD Now?

Yes. Since April 2026, every new Dataflow Gen2 is created with CI/CD and Git integration by default. Older classic dataflows still run, and Save As converts them.

Microsoft’s CI/CD documentation confirms deployment pipeline support and save-as-publish behavior. One gotcha. For dataflows saved after February 1, 2026, a refresh fails if the background publish fails, so a broken edit can stop a scheduled load rather than silently running old logic. Arguably better. Still surprising the first time.

If someone tells you dataflows can’t be version controlled, they’re quoting 2024. And the pricing angle makes conversion a no-brainer, since CI/CD items get the tiered rate. Run an inventory of classic Dataflow Gen2 items in your tenant this quarter.

Where Do dbt Jobs, Materialized Lake Views, and Airflow Fit?

They’re newer options for specific teams. dbt jobs and materialized lake views suit SQL-first modelers and both reached general availability in September 2026. Apache Airflow jobs suit teams with existing DAGs.

Microsoft’s dbt job documentation lists adapters for Fabric Warehouse, Lakehouse, Azure SQL, PostgreSQL, and Snowflake. If your analytics engineers already write dbt, this is the shortest path into Fabric. Materialized lake views let you define a transformed table in SQL and let Fabric keep it refreshed.

Airflow jobs bill on pool uptime, 5 CU for a small pool and 10 for a large one, per the Airflow job pricing page. A pool running all day is a meaningful slice of a small capacity. For most mid-market teams, pipelines are the cheaper orchestrator. Where the data lands matters too, and our lakehouse vs warehouse comparison covers that choice.

How Do These Tools Work Together?

Typically, you mirror or copy raw data into a bronze lakehouse layer, transforms it with notebooks or dataflows into silver and gold layers, and use one pipeline to run everything in order with retries and alerts.

Here’s the layout we set up for mid-market clients running Dynamics 365 and Power BI on F8 to F64 capacities. Mileage varies.

  • Bronze. Mirroring for supported databases, Copy job for SaaS sources and anything needing CDC, a Python notebook for REST APIs.
  • Silver. Spark notebooks for big joins and deduplication. Dataflow Gen2 where finance analysts own a mapping table and want to edit it themselves.
  • Gold. Materialized lake views or warehouse T-SQL for the star schema that Power BI reads.
  • One pipeline per domain on a schedule, with failure alerts to a Teams channel.

Nothing exotic. Boring, even. Our Fabric architecture explainer goes deeper on OneLake and the medallion layers.

Three stacked glass layers with glowing particles rising between them, representing bronze, silver, and gold data layers

How Does Fabric Data Factory Compare to Azure Data Factory?

Fabric Data Factory is the SaaS successor. Azure Data Factory and Synapse pipelines remain supported, but Microsoft recommends starting new projects in Fabric.

That guidance comes from the Fabric Data Factory FAQ. Pipeline concepts carry over almost directly, while Mapping Data Flows don’t have a one-to-one twin, and Dataflow Gen2 is the closest equivalent. Moving from Synapse? Our Fabric vs Synapse comparison and Fabric migration guide cover the path.

How Do You Measure and Cut Ingestion Costs?

Measure first in the Fabric Capacity Metrics app, then convert classic dataflows to CI/CD, move raw copies off dataflows, use Python notebooks for small jobs, and stop leaving Spark sessions open.

Our capacity review checklist, in the order that usually saves the most.

  • Sort the Capacity Metrics app by item and find the top 10 consumers. Usually three of them are most of the bill.
  • Any classic Dataflow Gen2 on that list? Save As to CI/CD.
  • Dataflows that only copy tables with no shaping. Replace them with Copy job or mirroring.
  • Short, frequent dataflows, like a 3-minute refresh every 15 minutes. Batch them or move them to a Python notebook, since they never leave the 12 CU tier.
  • Spark sessions left idle. Lower the session timeout and use session tags in pipelines.
  • Incremental Copy job on tables that are tiny anyway. A full copy at half the rate may be cheaper.

Bias disclosed. We sell Fabric engineering, so of course we’d say a review pays off. But the first two items on that list don’t need us. Do them yourself this week. If capacity sizing is the bigger question, our Fabric vs Power BI Premium guide covers SKU choice.

Wrapping Up

Pipelines orchestrate and copy, Dataflow Gen2 shapes data in Power Query, and notebooks handle code. The cost argument is mostly about run length and legacy dataflows, not the tools themselves. Mirroring and Copy job are the cheapest ways in, and a CI/CD dataflow is far cheaper than the stories you’ve heard.

ZapAI is a Microsoft Dynamics 365, Power Platform, Fabric, and AI consulting firm based in Irving, Texas, working with US businesses. Our Fabric data engineering team designs ingestion and transformation layers and runs capacity reviews that put a dollar figure on every item. If your capacity is running hot, book a Fabric capacity review and we’ll show you which jobs to move where.

What Fabric Teams Ask Us About Dataflows, Pipelines, and Notebooks

Is Dataflow Gen2 expensive?

Only when runs are short or the dataflow is a legacy non-CI/CD item. A CI/CD dataflow pays 12 CU per second for 10 minutes, then 1.5, so a 30-minute run costs about $0.45 at East US pay-as-you-go rates.

Can a Fabric pipeline transform data on its own?

Barely. A Copy activity can map columns, but real transformation happens in a dataflow, notebook, stored procedure, or dbt job that the pipeline calls.

Can a pipeline run a notebook and pass parameters?

Yes, through the notebook activity. Parameters map to the notebook’s parameter cell, and session tags let several notebooks in one pipeline share a Spark session so you don’t pay startup time for each one.

What’s the cheapest way to get data into Fabric?

Mirroring, for supported databases, because replication compute doesn’t consume capacity units. After that, Copy job or Copy activity at 1.5 CU-hours for full copies, then Python notebooks for API sources.

Copy job or Copy activity, which should I use?

Copy job for multi-table loads with CDC that someone will manage through a wizard. Copy activity when the load is one step inside a bigger pipeline. Remember that Copy job incremental bills at 3 CU-hours, twice the full-copy rate.

Should I migrate from Dataflow Gen1 to Gen2?

In most cases, yes. Microsoft’s August 2026 benchmarks show Gen2 using 82% to 95% fewer CU than Gen1 in its tests, and an upgrade wizard is in preview. One exception worth checking first is DirectQuery through the dataflow connector, which Gen1 supports and Gen2 doesn’t.

Is Fabric mirroring free?

Replication is. Microsoft doesn’t charge capacity for mirroring compute and includes 1 TB of mirror storage per purchased CU. Querying the mirrored data is billed normally.

Leave a Reply

Your email address will not be published. Required fields are marked *

Book a free consultation