Dataflows Gen2 in Microsoft Fabric: Complete Power Query Migratiegids
Als je dataflows in Power BI hebt gebruikt, denk je misschien dat Dataflows Gen2 in Microsoft Fabric gewoon een versie-update zijn. Dat is niet zo. Ze zijn volledig opnieuw opgebouwd en werken totaal anders.
Het heeft even geduurd voordat ik begreep waarom Microsoft überhaupt een nieuwe versie heeft gemaakt. Het bleek dat de oude dataflows enkele fundamentele beperkingen hadden, en Dataflows Gen2 lost de meeste daarvan op.
Wat was er mis met gewone dataflows
Gewone dataflows (nu Gen1 genoemd) waren nuttig, maar hadden problemen:
- Performance was wisselvallig, vooral bij grote datasets
- Je kon niet echt bepalen waar de data terechtkwam
- Vernieuwingstijden waren onvoorspelbaar
- Beperkte transformatiemogelijkheden vergeleken met volledige Spark
- Sloeg data op in Dataverse of Power BI storage (een black box)
Ze werkten prima voor kleine tot middelgrote ETL-taken, maar schaalden niet goed.
Wat maakt Gen2 anders
Dataflows Gen2 draaien op Spark in plaats van de oude Power Query engine. Dit verandert alles aan hoe ze werken.
Belangrijkste verschillen:
- Spark backend - veel sneller voor grote datatransformaties
- Destination control - je kiest waar data landt (Lakehouse of Warehouse)
- Delta table output - data wordt geschreven als echte Delta tables
- Better monitoring - echte Spark logs en metrics
- Meer flexibel - kan Power Query mixen met aangepaste Spark code
De Power Query interface ziet er vergelijkbaar uit, maar onder de motorkap wordt je M code vertaald naar Spark-operaties.
Gen1 bestaat nog steeds
Je kunt nog steeds gewone dataflows maken in Microsoft Fabric. Ze verschijnen als gewoon "dataflow" en niet "Dataflow Gen2". Microsoft heeft Gen1 nog niet afgeschreven, maar Dataflows Gen2 is duidelijk de toekomst.
Een Dataflow Gen2 maken
Het proces is vrij eenvoudig:
- Ga naar je Microsoft Fabric workspace
- Klik op New > Dataflow Gen2
- Haal data op en bouw je transformaties (dezelfde Power Query ervaring)
- Configureer je data destination
- Sla op en publiceer
Het Power Query gedeelte voelt identiek aan gewone dataflows. De magie zit in stap 4, waar je de destination kiest.
Schrijven naar een Lakehouse
Dit is het meest voorkomende patroon. Je dataflow schrijft data naar Delta tables in een Lakehouse.
Wanneer je een Dataflow Gen2 publiceert:
- Klik op een query in je dataflow
- Rechtsonder zie je "data destination"
- Selecteer Lakehouse
- Kies je target Lakehouse
- Kies een table name
- Stel de write mode in (append, replace, etc.)
Write modes uitgelegd:
- Replace - verwijdert de bestaande table en schrijft nieuwe data (full refresh)
- Append - voegt nieuwe rijen toe aan de bestaande table (incremental)
Voor de meeste use cases is replace eenvoudiger. Append is handig als je alleen nieuwe records wilt laden, maar vereist dat je zelf de deduplication logic afhandelt.
# the dataflow generates spark code similar to this
df.write.format("delta") \
.mode("overwrite") \
.option("mergeSchema", "true") \
.saveAsTable("your_table_name")
Nadat de dataflow is uitgevoerd, verschijnen je data in het Lakehouse als een Delta table. Je kunt deze queryen met SQL, gebruiken in notebooks, of er Semantic models bovenop bouwen.
Table naming
Gebruik duidelijke en consistente namen voor je tables. Iets als bronze_raw_sales of silver_cleaned_customers. Zo is het meteen duidelijk welke tables brondata zijn versus getransformeerde data.
Schrijven naar een Warehouse
Je kunt de output van Dataflows Gen2 ook naar een Microsoft Fabric Warehouse schrijven in plaats van een Lakehouse.
Hetzelfde proces, maar selecteer Warehouse als destination. Data wordt geschreven als gewone SQL tables, niet als Delta tables.
Wanneer gebruik je een Warehouse als destination:
- Je bent meer vertrouwd met T-SQL dan met Spark
- Je downstream tools begrijpen alleen SQL databases
- Je hebt geen Spark-processing nodig op de data
- Je wilt traditionele database constraints en indexes
Persoonlijk kies ik standaard voor een Lakehouse, tenzij er een specifieke reden is om een Warehouse te gebruiken. Lakehouses zijn flexibeler en integreren beter met de rest van Microsoft Fabric.
Als je twijfelt over deze beslissing, heb ik een gedetailleerde vergelijking van Lakehouses versus Warehouses geschreven die je misschien helpt.
Incremental refresh patronen
Een van de beste features in Dataflows Gen2 is het correct omgaan met incremental loads.
Oude dataflows hadden incremental refresh, maar het was omslachtig. Dataflows Gen2 maakt het explicieter.
Patroon 1: Eenvoudige append
Als je source alleen nieuwe records bevat (geen updates):
- Voeg een filter toe in Power Query om alleen nieuwe records op te halen (gebaseerd op datum of id)
- Stel de destination in op append mode
- Elke refresh voegt alleen de nieuwe rijen toe
Patroon 2: Upsert logic
Als je updates van bestaande records moet afhandelen, wordt het complexer. Je hebt twee opties:
Optie a: Gebruik replace mode en herlaad alles. Eenvoudig, maar langzaam voor grote tables.
Optie b: Gebruik een merge pattern met een notebook na de dataflow. De dataflow plaatst de data in staging en de notebook voert een Delta merge operation uit.
# example merge pattern in a notebook
from delta.tables import DeltaTable
# your dataflow writes to a staging table
staging_df = spark.table("staging_sales")
# merge into the main table
target_table = DeltaTable.forName(spark, "sales")
target_table.alias("target").merge(
staging_df.alias("source"),
"target.order_id = source.order_id"
).whenMatchedUpdateAll() \
.whenNotMatchedInsertAll() \
.execute()
Dit patroon kost meer werk om in te stellen, maar presteert veel beter voor grote incremental loads.
Scheduling en refresh
Dataflows Gen2 worden standaard niet automatisch gerefresht. Je moet een schedule instellen.
Twee manieren om een refresh te triggeren:
Optie 1: Ingebouwde schedule
- Ga naar je workspace
- Zoek je Dataflow Gen2
- Klik op de drie puntjes > Settings
- Stel een refresh schedule in
Werkt prima voor eenvoudige gevallen. Beperkt tot standaard schedule-opties zoals dagelijks of wekelijks.
Optie 2: Data pipeline
Flexibelere aanpak. Maak een data pipeline die de dataflow triggert.
Hiermee kun je:
- De dataflow uitvoeren op basis van events of dependencies
- Meerdere dataflows achter elkaar uitvoeren
- Error handling en retry logic toevoegen
- De dataflow uitvoeren met parameters
Voor alles behalve basic scheduling zou ik een pipeline gebruiken.
Performance tips
Dataflows Gen2 is sneller dan Gen1, maar je kunt nog steeds trage dataflows schrijven.
Dingen die echt belangrijk zijn voor performance:
1. Filter vroeg
Push filters zo dicht mogelijk naar de source. Laad geen miljoen rijen om er later maar 1000 uit te filteren.
Power Query query folding is nog steeds van toepassing. Houd in de gaten of je stappen naar de source worden gevouwen of in memory plaatsvinden.
2. Vermijd onnodige columns
Verwijder columns die je niet nodig hebt vroeg in de transformatie. Minder data die door de pipeline beweegt, betekent snellere processing.
3. Gebruik native connectors
Native Microsoft Fabric connectors (voor SQL, Blob Storage, etc.) zijn geoptimaliseerd. Custom connectors of web calls zijn langzamer.
4. Split grote dataflows
Eén gigantische dataflow met 50 queries is langzamer dan 5 kleinere dataflows met elk 10 queries. Je kunt meerdere dataflows parallel uitvoeren via een pipeline.
5. Let op cross-joins
Het mergen van tables zonder de juiste join keys kan je row count enorm laten toenemen. Power Query waarschuwt je hier niet altijd voor.
Monitoring en debugging
Wanneer een dataflow faalt, krijg je nu daadwerkelijk nuttige logs.
Ga naar je workspace > zoek je dataflow > klik erop > view refresh history
Je ziet dan:
- Duur voor elke query
- Spark metrics (rows processed, data read)
- Werkelijke error messages met line numbers
- Query plan information
Veel beter dan Gen1, waar je alleen "refresh failed" kreeg en moest raden waarom.
Refresh failures
De meeste dataflow failures zijn problemen met de source connection of query folding. Controleer eerst je data source credentials en kijk daarna in de logs welke specifieke query is mislukt.
Wanneer gebruik je Dataflows Gen2 versus andere opties
Microsoft Fabric biedt meerdere manieren om data te laden. Dit is wanneer Dataflows Gen2 logisch zijn:
Gebruik Dataflows Gen2 wanneer:
- Je vertrouwd bent met Power Query en daarmee wilt blijven werken
- Je transformaties voornamelijk standaard ETL zijn (filters, joins, aggregations)
- Je een visual interface wilt, geen code
- Je team Power Query al kent van Power BI
- Data volumes klein tot middelgroot zijn (onder een paar honderd GB)
Gebruik notebooks in plaats daarvan wanneer:
- Je complexe Python- of Scala-transformaties nodig hebt
- Je werkt met echt grote datasets
- Je machine learning of advanced analytics nodig hebt
- Je volledige controle wilt over Spark configurations
- Power Query je source system niet ondersteunt
Gebruik data pipelines wanneer:
- Je meerdere dataflows of notebooks moet orchestreren
- Je conditional logic of branching hebt
- Je files moet kopiëren of API's moet aanroepen
- Je migreert van Azure Data Factory
Voor de meeste Power BI developers die naar Microsoft Fabric komen, zijn Dataflows Gen2 het natuurlijke startpunt. Je kent Power Query al, dus de leercurve is minimaal.
Migreren van Gen1 naar Gen2
Als je bestaande Gen1 dataflows hebt, is er geen automatische migratie. Je moet ze opnieuw opbouwen als Dataflows Gen2.
Proces:
- Open je oude dataflow
- Noteer alle queries en transformaties
- Maak een nieuwe Dataflow Gen2 aan
- Bouw de queries opnieuw op (zou grotendeels copy-paste moeten zijn)
- Configureer destinations (een nieuwe stap die niet bestond in Gen1)
- Test grondig voordat je overschakelt
De Power Query code is grotendeels compatibel, maar controleer dubbel:
- Eventuele custom functions hebben mogelijk aanpassingen nodig
- Controleer of query folding nog steeds werkt
- Verifieer data types na het laden naar de destination
Migreer niet alles tegelijk. Begin met één dataflow, test deze grondig en verplaats dan de rest.
Veelvoorkomende problemen en oplossingen
Probleem: dataflow is erg traag
Controleer of query folding werkt. Klik op een stap en bekijk het query plan. Als er "evaluated in workspace" staat in plaats van "evaluated at source", laad je te veel data in memory.
Oplossing: herschrijf queries om meer werk naar de source te pushen.
Probleem: data verschijnt niet in Lakehouse
Zorg ervoor dat je de data destination hebt geconfigureerd voor elke query die je wilt outputten. Standaard schrijven queries nergens naartoe, ze zijn slechts intermediate steps.
Probleem: dataflow faalt met memory errors
Je probeert te veel data in één keer te laden. Filter aggressiever of splits het op in meerdere dataflows en gebruik incremental loading.
Probleem: timestamp columns hebben verkeerde timezone
Veelvoorkomend probleem. Power Query en Spark gaan anders om met timezones. Wees expliciet over timezone conversions in je M code.
Volgende stappen
Nu je Dataflows Gen2 begrijpt, kun je solide ETL pipelines bouwen in Microsoft Fabric.
Aanbevolen workflow:
- Gebruik Dataflows Gen2 om raw data in je Lakehouse te laden
- Gebruik notebooks voor complexe transformaties indien nodig
- Bouw Semantic models bovenop de cleaned data
- Maak Power BI reports met behulp van Direct Lake mode
Dit geeft je een echte data pipeline in plaats van alleen data direct in Semantic models te importeren.
Als je net begint met Microsoft Fabric, bekijk dan eerst mijn introductiegids voor Power BI developers.
Dataflows Gen2 zijn een solide tool zodra je begrijpt dat het niet alleen geüpgradede dataflows zijn, maar een compleet andere implementatie. De Power Query interface maakt ze toegankelijk, maar de Spark backend geeft je echte kracht voor datatransformatie op schaal.
gerelateerde artikelen
Microsoft Fabric Migratie: 3-Daags Implementatieplan
De overstap naar Fabric hoeft geen maandenlange beproeving te zijn. Hier is een praktisch 3-daags stappenplan om je eerste end-to-end oplossing in productie te krijgen.
Spark Optimalisatie in Fabric Notebooks: Gids voor Prestatieafstemming
Jouw notebook code is logica. Jouw Spark configuratie is fysica. Begrijpen wat dit onderscheid inhoudt en wat je op elk Fabric SKU-niveau precies kunt aansturen, maakt alles sneller en goedkoper.
Databricks vs Microsoft Fabric: Complete Vergelijkingsgids 2026
Databricks geeft je totale controle over alles. Fabric maakt het eenvoudig en integreert met Power BI. Geen van beide is objectief beter, maar één is waarschijnlijk de juiste voor jouw situatie.