Note 51 · Databricks (4/4)

Fabric or Databricks? How I Decide

Not a feature war. Five questions I ask before choosing Fabric, Databricks or both, where each choice bites a year later, and when both is honest.

22 October 2026 10 min read

Key takeaways

  • Both platforms can run a medallion lakehouse. Feature lists rarely decide; people, consumers, governance and the billing model do.
  • If Power BI is the main consumer and the team thinks in SQL and reports, Fabric starts ahead. If the team ships code with tests and CI, Databricks does.
  • A Fabric capacity is shared. A heavy background job can push report users into delays and rejections.
  • Databricks scales to zero, but someone has to own compute policies, or the bill spreads across many small decisions.
  • "Both" works when each table has one owner and data flows one way. A mirrored catalog does not carry Unity Catalog grants.

Clients rarely ask which platform has more features. They ask which one they will regret less. The honest answer depends less on the platforms than on the people who will run the thing in its second year.

I deliver on both. The medallion patterns I use, SCD2 history in bronze, current-row silver, dimensional gold, look the same on each. What changes is everything around them: who writes the code, how it deploys, who governs access, and how the cost behaves.

Named model: five questions, in this order

  • People: who builds and runs it in year two?
  • Consumers: what reads the gold layer, and is that Power BI?
  • Footprint: where does the data already land, and what is already governed?
  • Cost: a shared capacity you reserve, or compute you pay for per use?
  • Edge: is there streaming or machine learning that sets the bar?

Five questions, each tilting toward Fabric or Databricks: a BI-first team versus an engineering team, Power BI as main consumer versus many consumers, sources landing in Microsoft services versus an existing Unity Catalog setup, steady predictable load versus spiky jobs, report-led real-time versus code-first machine learning

Figure 1. Each question tilts; none decides alone. Two strong tilts in opposite directions is the signal for both.

Context and constraint

This is a framework, not a scorecard. I do not weight the questions or add them up; I look for the one or two that are not negotiable for this client, and let those lead. Product status below is as of October 2026, with Learn links where it matters.

Design

1. People: who runs it in year two

Fabric lowers the entry bar: pipelines, Dataflows, notebooks and Power BI in one workspace and one place to look. That is a real advantage for a team of BI developers and analysts. The bite comes later: low-code workspaces grow fast and deploy badly unless someone brings Git discipline early. Post 11 and post 46 are what that discipline costs.

Databricks assumes engineers: code in a repo, bundles, tests, a pipeline. Post 50 shows the ladder. Hand that to a team without engineers and it does not get simpler, it gets abandoned, and notebooks get edited in the workspace.

So my first question is not about data at all: who on the client side can review a pull request?

2. Consumers: is Power BI the point?

In most of my projects, Power BI is where the business meets the data, whichever platform sits underneath. If it is the main consumer, Fabric removes a hop: Direct Lake reads Delta tables in OneLake without an import refresh, and the semantic model lives next to the data (post 9, post 24).

Databricks data can still reach Direct Lake. A mirrored Azure Databricks catalog in Fabric is generally available: Fabric mirrors the catalog structure, reads the tables through shortcuts without copying them, and you can build Direct Lake reports on it (mirrored catalog). Changes can take seconds to minutes to appear. Plan for two prerequisites: the EXTERNAL USE SCHEMA privilege on the Unity Catalog side, and network access from Fabric to the storage account behind the catalog (tutorial). Publishing a catalog to OneLake from the Databricks side is a second route, still in Public Preview (Fabric with Azure Databricks).

If the gold layer also feeds applications, APIs, other teams' notebooks and models, Power BI is one consumer among many and stops being the deciding factor.

3. Footprint: what is already governed

Where the data lands today matters more than where it could land. A client with an existing Unity Catalog setup, groups and grants already in place, should not rebuild that governance in another product to save a hop for reports. A client whose sources already land in Microsoft services, with no lakehouse yet, has nothing to migrate away from.

The bite is governance in two places. Unity Catalog grants do not travel with a mirrored catalog: the same tutorial tells you to set access in Fabric's own permission model, and tables with row filters or column masks are not mirrored at all (limitations). On the Fabric side, OneLake security is generally available, but its roles do not restrict workspace Admins, Members and Contributors (OneLake row and column security). Workspace roles are a security decision, not a convenience.

4. Cost: reserved and shared, or per use

No numbers here, because they age badly and depend on your agreement. The shapes are what matter.

A Fabric capacity is reserved compute shared by every workload on it. Smoothing spreads background jobs over the next 24 hours, which makes steady loads pleasant. Overuse it, though, and Fabric first delays and then rejects interactive requests, and report users are the interactive requests (throttling). One oversized nightly job becomes a morning of slow reports. Separate capacities, or on-demand billing for Spark, which takes Spark off the capacity (on-demand billing for Spark), are the usual fixes.

Databricks bills compute as it runs, and idle compute can cost nothing. That suits spiky loads. The bite is ownership: without compute policies, auto-termination and tags, the bill is the sum of many small choices nobody reviews.

5. Edge: streaming and machine learning

Both platforms stream and both do machine learning. The question is how deep. Code-first ML with its own lifecycle, feature pipelines and model serving leans Databricks. Event data that business users explore and alert on leans toward Fabric's Real-Time Intelligence. If neither is on the roadmap, do not let a hypothetical one pick the platform.

6. When the honest answer is both

Two strong tilts in opposite directions, for example an engineering team with an existing Unity Catalog setup and a business that lives in Power BI, usually mean both. The pattern I trust: Databricks owns engineering and the tables; Fabric mirrors the gold catalog and owns semantic models and reports.

It works if three rules hold. Each table has one owner and one writer. Data flows one way per layer. And access is designed twice on purpose: Unity Catalog for the engineering side, Fabric permissions and OneLake security for consumers, reviewed together.

The reverse direction exists too. Azure Databricks can read Fabric Lakehouse and Warehouse tables through OneLake catalog federation, read only, with several Fabric tenant settings to enable (OneLake federation). Writing from Databricks into OneLake through an external location is in Beta, and Learn warns that any non-viewer in that Fabric workspace can read, write and delete the data (OneLake external location). I would not build a two-way flow on that yet.

Both platforms together: Databricks owns ingestion, engineering and Unity Catalog; Fabric mirrors the gold catalog through shortcuts and serves Direct Lake semantic models and reports; OneLake federation lets Databricks read Fabric tables read only; access is designed separately on each side

Figure 2. One owner per table, one direction per layer, two permission models designed on purpose.

Where each choice bites a year later: Fabric workspaces sprawl without Git discipline, shared capacity throttles reports, workspace roles bypass OneLake roles; Databricks setups stall without engineers, compute bills fragment without policies, Direct Lake needs a mirroring hop; both together duplicate governance and add sync latency

Figure 3. Pick the bites you can staff for.

Common mistakes

Choosing by feature list. Both have the feature; the question is who will run it.

One capacity for engineering and reports. The nightly job slows the morning.

Databricks with no engineers. It ends up as edited notebooks and an unowned bill.

Assuming mirrored means governed. Unity Catalog grants stay behind; masked tables do not mirror.

Workspace Contributor as a convenience. It bypasses OneLake security roles.

"Both" without table ownership. Two writers, two truths.

Letting a future ML project decide today. Decide on what is on the roadmap.

Use as-is or adapt

Use as-is

  • The five questions, people first.
  • One owner and one writer per table when you run both.
  • Separate heavy engineering from report capacity, or take Spark off it.
  • Designing access on each side explicitly, never assuming it carries over.

Adapt before you use

  • The order of consumers and footprint, when what already exists is large.
  • How you split capacity, by workload or by environment.
  • Whether reports read a mirrored catalog or a copied gold layer, given sync latency and the row filter and column mask limits.
  • Whether you need the reverse flow at all.

Related

Pick the platform your team can run, then design the seams on purpose.