Wat wordt er überhaupt berekend? AutoExist begrijpen

Bij het werken met DAX-metingen is het van cruciaal belang om in termen van context te denken. Degenen onder jullie die onze cursus DAX Fundamentals hebben gevolgd, of een van onze conferentiesessies over ‘Mastering DAX’ hebben bijgewoond (we worden steeds gevraagd om die lezing te houden), kennen de nadruk die we leggen op het begrijpen […]

Bij het werken met DAX-metingen is het van cruciaal belang om in termen van context te denken. Degenen onder jullie die onze cursus DAX Fundamentals hebben gevolgd, of een van onze conferentiesessies over ‘Mastering DAX’ hebben bijgewoond (we worden steeds gevraagd om die lezing te houden), kennen de nadruk die we leggen op het begrijpen van context en het kunnen transformeren van contexten. In een eenvoudig diagram zoals hieronder vormt elke kolom zijn eigen specifieke context.

In werkelijkheid haalt de visual de resultaten niet voor elk datapunt afzonderlijk op, maar voor alles tegelijk. Dat roept de vraag op: wat is ‘alles’? Hoeveel datapunten worden berekend? Als u dit begrijpt, kunt u prestatieproblemen in uw Power BI-rapporten oplossen, maar het biedt ook nieuwe kansen. In dit bericht duiken we in dit onderwerp; in een andere blogpost zal ik een praktisch voorbeeld geven (daar heb ik waarschijnlijk twee posts voor nodig).

Elke visual gedraagt ​​zich fundamenteel als een draaitabel in Excel, dus het helpt om daar te beginnen. Zoals de meeste Excel-gebruikers weten, is een draaitabel in Excel traditioneel gebaseerd op een tabel met gegevens in een werkblad (tegenwoordig kan deze natuurlijk ook gebaseerd zijn op een ingebed Power Pivot-model of een externe gegevensbron). Wanneer u een kolom uit de brontabel, bijvoorbeeld Land, als rij- of kolomlabel in de draaitabel plaatst, ziet u alle unieke Land-waarden in de draaitabel verschijnen. Wanneer u een andere kolom, bijvoorbeeld Verkoop, toevoegt aan de waarden van de draaitabel, ziet u doorgaans niet alle landen meer, maar alleen de landen die omzet hebben. Hoe weet Excel welke landen moeten worden weergegeven? Eenvoudig: het berekent de omzetaggregatie voor elk land en toont alleen de landen waarvoor de berekening een niet-leeg resultaat oplevert.

Een Power BI-visual werkt hetzelfde: wanneer je alleen een label toevoegt, worden alle unieke waarden uit de gebruikte kolom getoond. Nadat een waarde uit een meetwaarde is toegevoegd, worden alle unieke waarden weergegeven die een niet-lege meetwaarde hebben. Maar toch wordt de berekening uitgevoerd voor alle unieke waarden in de labelkolom.

Wanneer u meer metingen toevoegt, ziet u dat alle labels zichtbaar zijn waarvoor ten minste één meting een resultaat retourneert. Er zijn enkele uitzonderingen op deze regel, bijvoorbeeld bij het gebruik van metingen in tooltip.

Wat gebeurt er als u meer kolommen als labels in de visual toevoegt? In Excel is het eenvoudig: alle unieke combinaties van waarden in de labelkolommen worden getoond, en bij gebruik van een waardeveld blijven alleen de combinaties met een waarde over (maar de berekening wordt voor alle combinaties uitgevoerd). Bij het werken met een Power BI-model (of Power Pivot in Excel) hangt het ervan af:

  • Voor kolommen die uit dezelfde tabel komen, wordt de berekening gedaan voor unieke combinaties van waarden die in de tabel voorkomen.
  • Voor kolommen uit verschillende tabellen wordt de berekening gedaan voor alle combinaties van unieke waarden uit de kolommen.

Bekijk bijvoorbeeld het onderstaande modelfragment, waar we een klantentabel hebben met een relatie met een werknemerstabel, wat betekent dat elke klant een verkoopvertegenwoordiger heeft die een werknemer is. Laten we zeggen dat we 1000 klanten en 500 werknemers hebben.

Wanneer u twee kolommen Klant en Vertegenwoordiger uit de tabel Klant zou gebruiken, is het totaal aantal berekeningen per maatregel 1000. Wanneer u een kolom uit Klant en een kolom uit Medewerker gebruikt, is het totaal aantal berekeningen per maatregel 500.000. Ook al resulteren de meeste van deze combinaties in een lege selectie van klanten in de querycontext en zouden ze niet in de visual worden weergegeven.

Door alleen rekening te houden met combinaties van waarden die in de tabel voorkomen, gebruikt Power BI een kortere weg om het aantal benodigde berekeningen te verminderen. Deze functie heet AutoExist.

Misschien heb je op dit moment vragen. Ik zal er een paar bespreken:

Moeten we dan helemaal vermijden om gegevens in afzonderlijke tabellen op te slaan?

Nou ja, niet noodzakelijkerwijs – Power BI heeft er geen problemen mee om heel vaak een goed ontworpen meting te berekenen, en er zijn andere redenen om gegevens wel of niet in één tabel te combineren. Het is echter belangrijk om te weten met welke combinaties van labelwaarden Power BI rekening houdt. Het is met name een slecht idee om draaitabellen of tabellen na te bootsen die u wellicht kent uit Excel. Om deze specifieke reden ben ik absoluut geen fan van de tabelvisualisatie in Power BI: mensen hebben de neiging steeds meer kolommen aan de visual toe te voegen, waardoor het aantal benodigde berekeningen onbewust tot miljarden toeneemt. Gecombineerd met minder efficiënte maatregelen loop je op een gegeven moment tegen prestatieproblemen aan.

Waarom wordt AutoExist niet ook toegepast op kolommen uit afzonderlijke tabellen?

Hmm, dat zou logisch zijn, nietwaar? De waarheid is dat als u weet hoe AutoExist werkt en wanneer het wordt toegepast, u dit kunt gebruiken om resultaten te berekenen die anders niet mogelijk zouden zijn. In een andere blogpost geef ik je hiervan een voorbeeld.

Ik heb twee kolommen uit verschillende tabellen aan een visual toegevoegd, maar zie nog steeds alleen geldige combinaties, en niet allemaal?

Dit is een interessante. Power BI probeert alleen resultaten weer te geven die zinvol zijn. Dit betekent dat wanneer u geen meting aan de visual toevoegt, Power BI in het geheim iets toevoegt dat helpt bepalen welke combinaties van labelwaarden moeten worden weergegeven. Dit gebeurt door te kijken welke waarden logisch samengaan via de relaties in het model (zoals een klant en een attribuut van zijn vertegenwoordiger). Zelfs als je twee kolommen gebruikt die niet direct gerelateerd zijn, maar beide aan dezelfde feitentabel zijn gekoppeld, kan Power BI dit doen: alle combinaties van waarden die gekoppelde feiten in het model hebben, worden in de visual weergegeven. Dit gaat echter mis als de tabellen aan meer dan één feitentabel zijn gekoppeld: het wordt onduidelijk welke waarden bij elkaar passen en in plaats daarvan zal de visual een fout retourneren.

Als laatste opmerking: er is nog een verschil tussen draaitabellen in Excel en een Power BI-visual, namelijk dat Power BI-visuals met elkaar interacteren. In feite is het AutoExist-gedrag niet alleen van toepassing als u meerdere kolommen van dezelfde tabel in één visual heeft, maar ook als deze kolommen zich in andere, verbonden visuals bevinden, zoals een slicer. Met andere woorden, het gaat erom welke filters op de visual van toepassing zijn.

2024. Quanto B.V.