Iteratorer och kontextövergångar i DAX-frågor

Denna handledning kommer att diskutera kontextövergång och kapslade iteratorer. Du kommer att lära dig vikten av dessa enheter och hur de kan vara en bra källa för optimering.

Om du kommer ihåg, sker kontextövergång när en radkontext ändras till en motsvarande filterkontext. Du måste vara medveten om vad som händer när en kontextövergång sker i dina iteratorer eftersom det ofta kan generera långsamma resultat.

Innehållsförteckning

Kapslade iteratorer kontra BERÄKNA

Om en kontextövergång anropas under en iteration skapas en materialiseringstabell. Detta innebär att kontextövergång anropas via formlerna i din DAX. Tabellen är okomprimerad data som skickas till formelmotorn.

För att demonstrera är det första måttet för stora försäljningar som får det aktuella priset om det är större än eller lika med 500.

Iteratorer och kontextövergångar i DAX-frågor

Nästa mått är för genomsnittet av den stora försäljningen med kapslade iteratorer.

Iteratorer och kontextövergångar i DAX-frågor

Det sista måttet får medelvärdet av stora försäljningar utan en kapslad iterator och ett CallBackDataID.

Iteratorer och kontextövergångar i DAX-frågor

Kör måttet med den kapslade iteratorn. Se till att rensa cachen innan du kör och slå sedan på Server Timings och Query Plan.

Iteratorer och kontextövergångar i DAX-frågor

Du kan se att den genererade 3 skanningar, 2 CallBackDataIDs och 15 003 rader. Detta är en anledning till oro eftersom det bara finns 101 rader för utdata. Detta hände eftersom måttet har två iteratorer eller X-funktioner.

Detta är den helt utökade formen av åtgärden som kördes:

Iteratorer och kontextövergångar i DAX-frågor

Det itererar faktaförsäljningstabellen med. Det upprepas sedan igen med CallBackDataID med hjälp av. Det förkortade formatet för denna åtgärd har en underförståddfunktion som åberopar kontextövergång och materialiserar tabellen. Det är därför den drog 15 003 rader, även om det bara finns 101 rader för utmatning.

Kör det andra måttet som inte har kapslade iteratorer. Det upprepar fortfarande faktaförsäljningstabellen med AVERAGEX men det aktuella priset är utanför funktionen. Den filtrerar bort de produkter där det aktuella priset är större än eller lika med 500 och beräknar sedan genomsnittet.

Iteratorer och kontextövergångar i DAX-frågor

Du kan se att den bara har 2 skanningar, 104 rader och inte har något CallBackDataID. Så om du använder CALCULATE kan du bli av med de kapslade iteratorerna och CallBackDataIDs .




Slutsats

Det finns många orsaker till en långsam presterande DAX. En av dem beror på kapslade iteratorer som orsakar onödiga kontextövergångar. Dessa iteratorer materialiserar fler rader än vad som behövs, vilket gör att dina frågor saktar ner.

Den bästa lösningen för detta är att placera den inuti BERÄKNA . Detta skapar mindre arbete för formelmotorn och maximerar lagringsmotorns kapacitet.


Vad är Power Query & M Language: En detaljerad översikt

Vad är Power Query & M Language: En detaljerad översikt

Denna handledning ger en översikt över Power Query Editor och M-språket på LuckyTemplates-skrivbordet.

Skapa en paginerad rapport: Lägga till texter och bilder

Skapa en paginerad rapport: Lägga till texter och bilder

Lär dig hur du skapar en sidnumrerad rapport, lägger till texter och bilder och sedan exporterar din rapport till olika dokumentformat.

SharePoint Automate-funktionen | En introduktion

SharePoint Automate-funktionen | En introduktion

Lär dig hur du använder SharePoint-automatiseringsfunktionen för att skapa arbetsflöden och hjälpa dig att mikrohantera SharePoint-användare, bibliotek och listor.

Lös en dataanalysutmaning med LuckyTemplates Accelerator

Lös en dataanalysutmaning med LuckyTemplates Accelerator

Finslipa dina färdigheter i rapportutveckling genom att gå med i en dataanalysutmaning. Acceleratorn kan hjälpa dig att bli en LuckyTemplates superanvändare!

Löpande summor i LuckyTemplates med DAX

Löpande summor i LuckyTemplates med DAX

Lär dig hur du beräknar löpande summor i LuckyTemplates med DAX. Löpande summor låter dig inte fastna i ett individuellt resultat.

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

LuckyTemplates Dax-variabler är konstanta: Vad betyder detta?

Förstå konceptet med variabler i DAX inom LuckyTemplates och konsekvenserna av variabler för hur dina mått beräknas.

LuckyTemplates Slope Chart: En översikt

LuckyTemplates Slope Chart: En översikt

Lär dig mer om den anpassade visual som kallas LuckyTemplates Slope-diagram, som används för att visa ökning/minskning för en enstaka eller flera mätvärden.

LuckyTemplates färgteman för enhetliga visualiseringar

LuckyTemplates färgteman för enhetliga visualiseringar

Upptäck färgteman i LuckyTemplates. Dessa är viktiga för att dina rapporter och visualiseringar ska se ut och fungera sömlöst.

Beräkna medelvärde i LuckyTemplates: Isolera veckodags- eller helgresultat med DAX

Beräkna medelvärde i LuckyTemplates: Isolera veckodags- eller helgresultat med DAX

Att beräkna ett genomsnitt i LuckyTemplates kan göras på många sätt för att ge dig exakt information för dina affärsrapporter.

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

Låt oss fördjupa oss i Standard LuckyTemplates-teman och granska några av funktionerna som är inbyggda i själva LuckyTemplates Desktop-applikationen.