Query folding in Power BI beheersen: laat het werk bij je gegevensbron
By Mirko Peters ·
Met Power BI is er weinig frustrerender dan zien hoe je gegevensvernieuwing eindeloos duurt, of erger nog, mislukt omdat er niet genoeg resources meer zijn...
Automatically translated with AI from the original post. Read the English original
Met Power BI is er weinig frustrerender dan zien hoe je gegevensvernieuwing eindeloos duurt, of erger nog, mislukt omdat er niet genoeg resources meer zijn. Als je miljoenen rijen ophaalt uit een externe SQL-database, een enterprise datawarehouse of een cloudservice, dan maakt het veel uit hoe je je transformaties aanpakt. Elke stap die je in Power Query zet, kan efficiënt worden afgehandeld door de krachtige server waarop je data staat, of traag door je eigen computer of het geheugen van de Power BI-service. Hier komt de magie van query folding om de hoek kijken.
In dit bericht duiken we diep in query folding. We bekijken hoe het je datatransformaties optimaliseert, welke concrete technieken ervoor zorgen dat je stappen correct folden, welke veelvoorkomende valkuilen de folding-keten doorbreken en hoe je de efficiëntie van het vernieuwen van je rapporten sterk kunt verbeteren. Laten we het werk teruggeven waar het hoort: bij de gegevensbron.
Inleiding tot query folding
In de kern is query folding het mechanisme waarmee Power Query de transformatiestappen die je in de gebruikersinterface bouwt, vertaalt naar een native querytaal, meestal SQL, en die query terugstuurt naar je brondatabase om uit te voeren. In plaats van elke afzonderlijke rij, tabel en kolom te downloaden naar het geheugen van Power BI en daarna lokaal te filteren, groeperen of samenvoegen, vraagt Power BI de brondatabase om het zware werk te doen.
Denk aan boodschappen doen. Als je naar een enorme groothandel gaat, elk artikel uit het hele winkelrek pakt, alles naar je keukentafel sjouwt en vervolgens 90% weggooit omdat het over de datum is of niet is wat je nodig had, verspil je enorm veel tijd en energie. Zo werkt het zonder query folding. Met query folding geef je de medewerker van de groothandel een specifieke lijst: "Geef mij alleen de appels die meer dan een pond wegen, gesorteerd op kleur." De medewerker sorteert alles in het magazijn en overhandigt je een klein doosje met precies wat je vroeg. Je keuken blijft schoon en je bent veel sneller klaar met koken.
Hoe query folding datatransformaties optimaliseert
Query folding is de hoeksteen van schaalbare Power BI-architectuur. Wanneer het goed wordt uitgevoerd, beperkt het het dataverkeer over het netwerk, vermindert het sterk het geheugengebruik tijdens de vernieuwing en versnelt het je ontwikkelproces.
Wanneer je transformaties toepast zoals het filteren van rijen, het verwijderen van kolommen, het sorteren of het uitvoeren van eenvoudige aggregaties vroeg in je toegepaste stappen in Power Query, bekijkt de onderliggende connector of de gegevensbron die bewerking native kan uitvoeren. Kan dat, dan worden die stappen samengevoegd tot één, sterk geoptimaliseerde query die naar de bron wordt gestuurd. De databasemotor voert die uit met behulp van bestaande indexen, waardoor hij miljoenen rijen in milliseconden kan doorzoeken.
Als query folding daarentegen niet lukt, moet Power BI de volledige, ongecomprimeerde en ongefilterde dataset over het netwerk halen naar de Power Query-evaluatiemotor (mashup engine). Zodra de data lokaal staat, past Power BI je filters en transformaties toe met lokale CPU en RAM. Bij grote zakelijke datasets is dit een recept voor time-outs van de gateway, fouten door tekort aan geheugen en trage rapportupdates.
Praktische technieken om ervoor te zorgen dat stappen correct folden
Niet alle Power Query-stappen zijn gelijk, en niet alle gegevensbronnen ondersteunen query folding. Relationele databases zoals SQL Server, Oracle en PostgreSQL hebben robuuste folding-mogelijkheden, terwijl platte bestanden zoals CSV's of Excel-werkmappen niet op dezelfde manier folden, omdat ze geen eigen queryprocessor hebben.
Om ervoor te zorgen dat je stappen succesvol folden, moet je je toegepaste stappen in een specifieke volgorde opbouwen en rekening houden met de functies die je gebruikt. Hier zijn praktische technieken om je queries te laten folden:
- Filter vroeg: Pas je rijfilters (bijvoorbeeld alleen de laatste drie jaar aan gegevens behouden of filteren op actieve status) altijd zo vroeg mogelijk toe in je toegepaste stappen. Hoe eerder je de dataset beperkt, hoe efficiënter de daaropvolgende SQL-vertaling wordt.
- Verwijder onnodige kolommen meteen: Kolommen die je niet gebruikt vroeg in het proces weggooien, voorkomt dat de gegevensbron resources verspilt aan het serialiseren en overdragen van gegevens die je niet nodig hebt.
- Ken de ondersteunde transformaties: Bewerkingen zoals kolommen verwijderen, kolommen hernoemen, tabellen samenvoegen (onder bepaalde voorwaarden), toevoegen (appenden) en eenvoudige voorwaardelijke kolommen vouwen over het algemeen goed door (folden). Complexe aangepaste formules, tekstmanipulaties met indexzoekopdrachten en programmeerintensieve aangepaste kolommen breken de folding-keten vaak.
- Controleer de optie Native query weergeven: Klik met de rechtermuisknop op een toegepaste stap in je Power Query-editor. Als de optie "Native query weergeven" actief en klikbaar is, gefeliciteerd: je query folded tot en met die stap. Als de optie grijs is, is folding bij die stap of bij een eerdere stap gestopt.
Veelvoorkomende valkuilen die query folding breken
Een van de lastigste aspecten van query folding is dat het kwetsbaar is. Eén onschuldige transformatiestap op de verkeerde plek kan de folding-keten volledig doorbreken, waardoor alle volgende stappen lokaal worden uitgevoerd, ook als de database die stappen prima zou kunnen verwerken.
Hieronder staan enkele van de meest voorkomende fouten die query folding breken:
- Eerst native SQL invoegen en daarna transformeren: Als je aan het begin van je gegevensbronstap een native SQL-query schrijft, behandelt Power Query die resultatenset als een black box. Latere transformaties die je via de Power Query-interface toevoegt, folden meestal niet, omdat Power Query er niet betrouwbaar UI-stappen in een aangepast SQL-blok kan injecteren.
- Typeconversies te vroeg of in de verkeerde volgorde: Het wijzigen van gegevenstypen is essentieel, maar als je dat doet vóór het filteren of vóór bewerkingen die botsen met de typeregels van de database, kan dat folding breken. Als je bijvoorbeeld een numerieke kolom naar tekst converteert en daarna een numeriek bereikfilter toepast, kan de database de query niet meer optimaliseren.
- Indexkolommen toevoegen of rijnummers gebruiken: Functies die afhankelijk zijn van de positie van rijen, zoals "Indexkolom toevoegen" of bewerkingen die naar omliggende rijen verwijzen via een absolute index, vereisen dat de hele dataset in het geheugen wordt geladen om de posities te bepalen. Dit stopt query folding meteen.
- Gegevensbronnen combineren: Als je een tabel uit een SQL-database samenvoegt met een tabel uit een Excel-bestand, stopt query folding op het punt waar de twee bronnen samenkomen, omdat Excel SQL-query's niet native kan verwerken.
Power BI-vernieuwing efficiënter maken
Wanneer je query folding goed beheerst, merk je het effect in je hele datarchitectuur. Vernieuwingstijden van rapporten die vroeger uren duurden, kunnen terugvallen tot minuten of zelfs seconden. Deze efficiëntie bespaart niet alleen rekenkracht op je cloudgateways of servers, maar geeft ontwikkelaars ook de ruimte om sneller te itereren.
Om je vernieuwingsefficiëntie te maximaliseren, combineer je query folding met andere fundamentele best practices voor modellering. Zorg er bijvoorbeeld voor dat je databasetabellen goede indexen hebben op de kolommen waarop je vaak filtert of joint. Als je SQL-tabellen geen indexen hebben, dan zorgt zelfs een gefoldde query ervoor dat de databasemotor kostbare tabelscans uitvoert. Combineer query folding daarnaast met een schoon sterschemadatamodel, verwijder overbodige kolommen en implementeer incrementele vernieuwingsbeleidsregels voor grote historische datasets.
Power BI-query's monitoren en problemen oplossen
Je kunt niets verbeteren wat je niet meet. Bij trage vernieuwingen of onverwachte querybfouten heb je een systematische aanpak nodig om te achterhalen waar het knelpunt zit. Begin met de Power Query-diagnostiek in Power BI Desktop. Met deze functie volg je de uitvoeringstijden per stap en zie je precies hoe lang afzonderlijke transformaties duren en of gegevens op afstand worden opgehaald of lokaal worden verwerkt.
Controleer daarnaast je gatewaylogs en databaseprofilers (zoals SQL Server Profiler of Extended Events) om te zien welke exacte query's van Power BI naar je gegevensbron worden gestuurd. Als je grote SELECT-statements ziet die ruwe, ongefilterde tabellen ophalen in plaats van gerichte query's met WHERE- en GROUP BY-clausules, weet je meteen dat query folding ergens in je toegepaste stappen is mislukt.
Voor een uitgebreid overzicht van de uitvoeringsvolgorde, valkuilen in de praktijk en geavanceerde optimalisatiewerkwijzen kun je best de bijbehorende podcastaflevering beluisteren en de notities lezen bij Power Query Folding and Execution Order in Power BI. Inzicht in de onderliggende volgorde van bewerkingen geeft je het vertrouwen om elke keer weer robuuste, supersnelle modellen te bouwen.
Conclusie
Query folding beheersen is een van de belangrijkste vaardigheden die een Power BI-ontwikkelaar zich kan eigen maken. Door de rekenlast te verschuiven van je lokale machine of de Power BI-service naar de krachtige, sterk geoptimaliseerde engines van je gegevensbronnen, haal je prestatieknelpunten weg, verminder je netwerkcongestie en verlopen je rapportvernieuwingen soepel en betrouwbaar. Door bewust om te gaan met de volgorde van je stappen, je native query's regelmatig te controleren en valkuilen zoals voortijdige indexering of het combineren van onverenigbare bronnen te vermijden, benut je het volledige potentieel van je business-intelligenceomgeving.
Wil je deze concepten verder verkennen en een gedetailleerde uitleg horen over hoe de uitvoeringsvolgorde van query's de prestaties van je werkruimte beïnvloedt? Luister dan naar de volledige discussie in de podcastaflevering Power Query Folding and Execution Order in Power BI. Pas deze strategieën vandaag nog toe en zie hoe de prestaties van je rapporten er met de dag beter uitzien!