Wat is Microsoft Fabric en waarom is het in 2026 onmisbaar?
De data-wereld beweegt razendsnel. Organisaties worstelen met silo's: een Azure Synapse-omgeving hier, Power BI daar, een Azure Data Factory-pipeline elders en een apart Azure Machine Learning-workspace bovenop. Microsoft heeft al deze puzzelstukjes in 2023 samengebracht in Microsoft Fabric — één geïntegreerd SaaS-analyticsplatform dat data-engineering, data warehousing, real-time analytics, data science én business intelligence onder één dak brengt.
In 2026 is Fabric niet langer een preview-product; het is de strategische kern van de Microsoft analytics-stack. Grote Nederlandse organisaties — van Schiphol tot Rabobank, van gemeenten tot zorgkoepels — evalueren of migreren actief naar Fabric. Of je nu een data engineer, architect of BI-developer bent: begrip van Fabric is in 2026 een basisvereiste op je cv.
Definitie: Microsoft Fabric
Microsoft Fabric is een unified SaaS analytics platform dat compute, opslag (OneLake), en workloads voor Data Engineering, Data Factory, Data Warehouse, Real-Time Intelligence, Data Science en Power BI integreert in één doorzoekbare, gouvernance-bewuste ervaring — aangedreven door Microsoft 365-identiteiten en gefactureerd via Fabric Capacity.
In dit artikel nemen we je mee door de architectuur, laten we concrete PySpark- en SQL-codevoorbeelden zien, vergelijken we Fabric met Databricks en Snowflake, en geven we production-grade best practices die je morgen al kunt toepassen.
Architectuur: hoe werkt Microsoft Fabric?
De kern van Fabric is OneLake — één logisch data lake per tenant, gebouwd op Azure Data Lake Storage Gen2. Alle Fabric-workloads lezen uit en schrijven naar OneLake. Dat elimineert data-kopiëren tussen services en zorgt voor één consistent beveiligings- en gouvernancemodel.
OneLake
Één multi-cloud, multi-regio data lake per tenant. Delta Parquet als open standaard. Shortcuts naar AWS S3 en GCS mogelijk.
Fabric Workloads
Data Engineering (Notebooks/Spark), Data Factory (pipelines), Data Warehouse, Real-Time Intelligence (Eventhouse), Data Science en Power BI.
Unified Governance
Microsoft Purview-integratie voor data-catalogus, lineage, sensitivity labels en toegangsbeheer via één controlevlak.
De Fabric Workspaces & Capaciteiten
Fabric werkt via Workspaces die aan een Capacity (F-SKU of P-SKU) zijn gekoppeld. Hieronder een overzicht van de meest gebruikte SKU's voor Nederlandse organisaties:
| SKU | CUs (Capacity Units) | Typische use case | Schatting prijs/maand (€) |
|---|---|---|---|
| F2 | 2 | PoC / ontwikkeling | ~€ 270 |
| F8 | 8 | Small teams, departmentaal | ~€ 1.080 |
| F32 | 32 | Enterprise, meerdere teams | ~€ 4.300 |
| F64 | 64 | Grote organisaties, productie | ~€ 8.600 |
| F128+ | 128+ | Dataplatform van de hele organisatie | € 17.200+ |
Tip: Fabric Trial
Microsoft biedt een gratis 60-dagen Fabric Trial per tenant aan (F64-equivalent). Ideaal voor een serieuze PoC. Start via app.fabric.microsoft.com met je werk-tenant.
Stappenplan: Van ruwe data naar dashboard in Fabric
Workspace & Lakehouse aanmaken
Maak een Workspace aan, koppel een Fabric Capacity en voeg een Lakehouse item toe. OneLake-opslag wordt automatisch ingericht.
Data inladen via Data Factory of Notebook
Gebruik een Copy-activiteit in Data Factory om brondata naar de Files/-sectie van je Lakehouse te kopiëren, of laad direct via een PySpark Notebook.
Transformatie in de Bronze → Silver → Gold laag
Transformeer data met PySpark Notebooks of SQL. Sla resultaten op als Delta-tabellen in de Tables/-sectie voor automatische SQL-endpoint beschikbaarheid.
Semantic Model & Power BI rapport
Het Default Semantic Model van het Lakehouse is direct beschikbaar in Power BI. Bouw een rapport zonder data te kopiëren — DirectLake-modus zorgt voor snelle query's.
Governance via Purview
Koppel Microsoft Purview voor automatische data-lineage, sensitivity labels en toegangsbeheer op kolom- of rijniveau.
Praktische codevoorbeelden
3.1 PySpark Notebook: Bronze → Silver transformatie
Hieronder een realistisch voorbeeld van een medallion-architectuur transformatie in een Fabric Notebook. We laden ruwe CSV-bestanden, valideren data en slaan het resultaat op als een Delta-tabel.
# ─────────────────────────────────────────────────────────
# Fabric Notebook: Bronze → Silver transformatie
# Doel: Klantorders valideren en verrijken
# ─────────────────────────────────────────────────────────
from pyspark.sql import SparkSession
from pyspark.sql.functions import (
col, to_date, upper, trim, when, current_timestamp, lit
)
from pyspark.sql.types import DoubleType
from delta.tables import DeltaTable
# In Fabric: spark session is al beschikbaar als 'spark'
# Lakehouse naam configureren
LAKEHOUSE_NAME = "lh_sales"
# ── BRONZE: Lees ruwe CSV uit Files/bronze/ ──────────────
df_raw = (
spark.read
.option("header", "true")
.option("inferSchema", "true")
.csv(f"abfss://[workspace-id]@onelake.dfs.fabric.microsoft.com/"
f"{LAKEHOUSE_NAME}.Lakehouse/Files/bronze/orders/*.csv")
)
print(f"Geladen records: {df_raw.count()}")
df_raw.printSchema()
# ── VALIDATIE & TRANSFORMATIE ────────────────────────────
df_silver = (
df_raw
# Kolomnamen normaliseren
.withColumnRenamed("order_id", "order_id")
.withColumnRenamed("klant_naam", "customer_name")
# Datatypes corrigeren
.withColumn("order_date", to_date(col("order_date"), "dd-MM-yyyy"))
.withColumn("order_amount", col("order_amount").cast(DoubleType()))
# Strings opschonen
.withColumn("customer_name", trim(upper(col("customer_name"))))
.withColumn("country_code", trim(upper(col("country_code"))))
# Null-handling
.filter(col("order_id").isNotNull())
.filter(col("order_amount") > 0)
# Audit kolommen toevoegen
.withColumn("_ingested_at", current_timestamp())
.withColumn("_source", lit("erp_export_csv"))
# Alleen NL en BE orders voor deze pipeline
.filter(col("country_code").isin("NL", "BE"))
)
print(f"Silver records na validatie: {df_silver.count()}")
# ── UPSERT naar Delta (merge on order_id) ────────────────
silver_table_path = (
f"abfss://[workspace-id]@onelake.dfs.fabric.microsoft.com/"
f"{LAKEHOUSE_NAME}.Lakehouse/Tables/silver_orders"
)
if DeltaTable.isDeltaTable(spark, silver_table_path):
delta_tbl = DeltaTable.forPath(spark, silver_table_path)
(
delta_tbl.alias("target")
.merge(
df_silver.alias("source"),
"target.order_id = source.order_id"
)
.whenMatchedUpdateAll()
.whenNotMatchedInsertAll()
.execute()
)
print("✅ Merge voltooid")
else:
df_silver.write.format("delta").save(silver_table_path)
print("✅ Initiële schrijfactie voltooid")
OneLake ABFS-pad
In productie-notebooks kun je de Lakehouse-shorthand gebruiken: Files/bronze/... en Tables/silver_orders
— Fabric lost het volledige ABFS-pad automatisch op wanneer het Lakehouse aan het notebook is toegevoegd via "Add Lakehouse".
3.2 T-SQL in het Fabric Data Warehouse
Het Fabric Data Warehouse biedt een volwaardig T-SQL-endpoint. Hieronder een voorbeeld van een Gold-laag aggregatie met een incrementele load-strategie.
-- ─────────────────────────────────────────────────────────
-- Fabric Data Warehouse: Gold aggregatie - Dagelijkse omzet
-- ─────────────────────────────────────────────────────────
-- Stap 1: Maak de Gold-tabel aan (eenmalig)
CREATE TABLE IF NOT EXISTS gold.daily_revenue (
report_date DATE NOT NULL,
country_code VARCHAR(2) NOT NULL,
product_category VARCHAR(100),
total_orders INT,
total_revenue DECIMAL(18,2),
avg_order_value DECIMAL(10,2),
_updated_at DATETIME2 DEFAULT GETDATE()
);
-- Stap 2: Incrementele load (run dagelijks via Data Factory)
MERGE INTO gold.daily_revenue AS target
USING (
SELECT
CAST(o.order_date AS DATE) AS report_date,
o.country_code,
p.category AS product_category,
COUNT(DISTINCT o.order_id) AS total_orders,
SUM(o.order_amount) AS total_revenue,
AVG(o.order_amount) AS avg_order_value
FROM
silver.orders o
LEFT JOIN silver.products p
ON o.product_id = p.product_id
WHERE
-- Alleen gisteren verwerken (incrementeel)
CAST(o.order_date AS DATE) = CAST(DATEADD(DAY, -1, GETDATE()) AS DATE)
GROUP BY
CAST(o.order_date AS DATE),
o.country_code,
p.category
) AS source
ON target.report_date = source.report_date
AND target.country_code = source.country_code
AND target.product_category = source.product_category
WHEN MATCHED THEN
UPDATE SET
total_orders = source.total_orders,
total_revenue = source.total_revenue,
avg_order_value = source.avg_order_value,
_updated_at = GETDATE()
WHEN NOT MATCHED THEN
INSERT (report_date, country_code, product_category,
total_orders, total_revenue, avg_order_value)
VALUES (source.report_date, source.country_code,
source.product_category, source.total_orders,
source.total_revenue, source.avg_order_value);
-- Stap 3: Verificatie
SELECT
report_date,
country_code,
SUM(total_revenue) AS dag_omzet_eur
FROM gold.daily_revenue
WHERE report_date >= DATEADD(DAY, -7, GETDATE())
GROUP BY report_date, country_code
ORDER BY report_date DESC, dag_omzet_eur DESC;
3.3 Real-Time Intelligence: KQL voor streaming data
Fabric's Eventhouse (voorheen Real-Time Analytics) gebruikt Kusto Query Language (KQL) voor sub-seconde queries op streaming data. Handig voor IoT, clickstreams of financiële transacties.
// ─────────────────────────────────────────────────────────
// KQL: Fraud-detectie op real-time betaaltransacties
// Eventhouse tabel: PaymentEvents
// ─────────────────────────────────────────────────────────
// Verdachte transacties: > 3 pogingen in 60 seconden,
// wisselende locaties
PaymentEvents
| where ingestion_time() > ago(1h)
| where EventType == "payment_attempt"
| summarize
AantalPogingen = count(),
UniekeLocaties = dcount(GeoCity),
TotaalBedrag = sum(Amount),
EerstePoging = min(EventTime),
LaatstePogingen = max(EventTime)
by CustomerId, bin(EventTime, 60s)
| where AantalPogingen > 3 and UniekeLocaties > 1
| project
CustomerId,
EventTime,
AantalPogingen,
UniekeLocaties,
TotaalBedrag,
DuurSeconden = datetime_diff('second', LaatstePogingen, EerstePoging)
| order by AantalPogingen desc
Fabric vs. Databricks vs. Snowflake
De vraag die elke Nederlandse data-architect in 2026 krijgt: "Moeten we naar Fabric of bij Databricks/Snowflake blijven?" Er is geen universeel antwoord, maar onderstaande tabel helpt je de juiste keuze te maken voor jouw context.
| Criterium | Microsoft Fabric | Databricks | Snowflake |
|---|---|---|---|
| Primaire sterkte | End-to-end unified (BI t/m engineering) | ML/AI, grote Spark-workloads | Data sharing, SQL analytics |
| Opslag standaard | Delta Parquet (OneLake) | Delta Lake (open source) | Proprietary (FDN) |
| BI-integratie | ⭐⭐⭐⭐⭐ (Power BI native) | ⭐⭐⭐ (via JDBC/partner) | ⭐⭐⭐ (via partner connect) |
| ML / AI | ⭐⭐⭐⭐ (MLflow + Copilot) | ⭐⭐⭐⭐⭐ (MLflow native, Unity Catalog) | ⭐⭐⭐ (Snowpark ML) |
| Real-time streaming | ⭐⭐⭐⭐ (Eventhouse/KQL) | ⭐⭐⭐⭐ (Structured Streaming) | ⭐⭐ (Snowpipe Streaming) |
| Multi-cloud | ⭐⭐⭐ (Shortcuts AWS S3/GCS) | ⭐⭐⭐⭐⭐ (native AWS/Azure/GCP) | ⭐⭐⭐⭐⭐ (native alle clouds) |
| Microsoft 365-integratie | ⭐⭐⭐⭐⭐ (Teams, SharePoint, Entra) | ⭐⭐ (via connectors) | ⭐⭐ (via connectors) |
| Licentiemodel | Capacity-based (F-SKU) | DBU-based (variabel) | Credit-based (variabel) |
| Ideaal voor | Microsoft-shops, BI-heavy orgs | ML-teams, Spark-engineers | Data-sharing, SQL-first teams |
Praktijkcase: Nederlandse Retailer
Een middelgrote Nederlandse retailer (250 medewerkers, al Microsoft 365 klant) had Power BI Premium P1, Azure Synapse Analytics en Azure Data Factory in gebruik — drie aparte contracten en drie beheer-teams. Na migratie naar Fabric F64 daalden de totale platform-kosten met ~35%, het aantal beheer-FTE's voor het dataplatform van 4 naar 2,5 — en het gemiddelde dashboard-refresh ging van 30 minuten naar DirectLake real-time.
Best practices voor Fabric in productie
Medallion Architectuur
Structureer je Lakehouse altijd in Bronze/Silver/Gold lagen. Gebruik aparte Delta-tabellen per laag, nooit overschrijven — altijd upsert via MERGE.
Git-integratie
Koppel je Workspace aan Azure DevOps of GitHub. Fabric items (Notebooks, Pipelines, Semantic Models) worden als JSON opgeslagen — volledig versie-beheerbaar.
Capacity Smoothing
Fabric gebruikt "bursting + smoothing" over 24 uur. Plan zware batch-jobs buiten kantoortijden om piekoverschrijding (throttling) te vermijden.
Concrete production-tips
Security: Workspace Rollen vs. Item Permissions
Gebruik Workspace Rollen (Admin, Member, Contributor, Viewer) voor teamtoegang. Gebruik Item Permissions voor fijnmazige toegang tot individuele Lakehouses of Warehouses. Combineer met Row-Level Security in Semantic Models voor business-user restricties. Activeer OneLake Data Access Control (DACL) voor kolom- en rijbeveiliging op Delta-laag.
Performance: DirectLake vs. Import vs. DirectQuery
- DirectLake (aanbevolen): Leest rechtstreeks Delta-bestanden uit OneLake. Geen data-kopie, snelste refresh, tot ~300 GB per tabel ondersteund.
- Import: Gebruik alleen voor kleine dimensietabellen (< 1 GB) of externe bronnen.
- DirectQuery: Vermijd voor complexe rapporten; hoge latency op grote datasets.
Delta Table Onderhoud
Plan wekelijks een OPTIMIZE + VACUUM op grote Delta-tabellen:
-- In Fabric Notebook (SQL magic)
%%sql
OPTIMIZE silver.orders ZORDER BY (order_date, country_code);
VACUUM silver.orders RETAIN 168 HOURS; -- 7 dagen history bewaren
Deployment Pipelines
Gebruik Fabric's ingebouwde Deployment Pipelines (Dev → Test → Prod) voor gecontroleerde uitrol van Notebooks, Pipelines en Semantic Models. Combineer met Azure DevOps CI/CD via de Fabric REST API voor volledige automatisering.
Conclusie: Wanneer wel of niet kiezen voor Fabric?
Microsoft Fabric is in 2026 een volwassen, enterprise-grade dataplatform geworden. De propositie is sterk als je organisatie al diep in het Microsoft-ecosysteem zit. Toch is het geen universeel antwoord voor élke situatie.
| Scenario | Advies | Reden |
|---|---|---|
| Microsoft 365 + Power BI Premium klant | ✅ Stap over naar Fabric | Directe kostenreductie, één platform, P-SKU → F-SKU migratie is eenvoudig |
| Azure Synapse + ADF gebruiker | ✅ Migreer naar Fabric | Synapse Analytics wordt afgebouwd; Fabric is de successor |
| Zwaar ML/AI-team met Databricks Unity Catalog | ⚠️ Hybride overwegen | Databricks MLflow-ecosysteem is volwassener; Shortcuts naar OneLake wel mogelijk |
| Multi-cloud strategie (AWS primary) | ⚠️ Voorzichtig evalueren | OneLake draait op Azure; Shortcuts bieden beperkte multi-cloud flexibiliteit |
| Kleine organisatie (< 50 medewerkers) | ✅ F2/F4 als start | Lage instapdrempel, alles-in-één, schaalt mee met de organisatie |
| Compliance-gevoelige sector (zorg, overheid) | ✅ Met aandacht voor regio | OneLake is beschikbaar in West-Europe (Nederland); AVG-compliance goed invulbaar |
De bottom line: voor de meeste Nederlandse organisaties die al met Microsoft-technologie werken, is Fabric de logische volgende stap. Het platform rijpt snel, de roadmap is ambitieus (Copilot-integratie, AI Skills, Fabric Databases) en de community groeit hard. Wacht niet te lang — wie nu een PoC