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.

Leave a Comment

Skapa en datumtabell i LuckyTemplates

Skapa en datumtabell i LuckyTemplates

Ta reda på varför det är viktigt att ha en dedikerad datumtabell i LuckyTemplates och lär dig det snabbaste och mest effektiva sättet att göra det.

LuckyTemplates mobilrapporteringstips och tekniker

LuckyTemplates mobilrapporteringstips och tekniker

Denna korta handledning belyser LuckyTemplates mobilrapporteringsfunktion. Jag ska visa dig hur du kan utveckla rapporter effektivt för mobila enheter.

Professional Service Analytics-rapporter i LuckyTemplates

Professional Service Analytics-rapporter i LuckyTemplates

I denna LuckyTemplates Showcase går vi igenom rapporter som visar professionell serviceanalys från ett företag som har flera kontrakt och kundengagemang.

Microsoft Power Platform-uppdateringar | Microsoft Ignite 2021

Microsoft Power Platform-uppdateringar | Microsoft Ignite 2021

Gå igenom de viktigaste uppdateringarna för Power Apps och Power Automate och deras fördelar och konsekvenser för Microsoft Power Platform.

Vanliga SQL-funktioner: En översikt

Vanliga SQL-funktioner: En översikt

Upptäck några vanliga SQL-funktioner som vi kan använda som sträng, datum och några avancerade funktioner för att bearbeta eller manipulera data.

LuckyTemplates Skapa mall: Guide och tips

LuckyTemplates Skapa mall: Guide och tips

I den här handledningen kommer du att lära dig hur du skapar din perfekta LuckyTemplates-mall som är konfigurerad efter dina behov och preferenser.

Fältparametrar och små multiplar i LuckyTemplates

Fältparametrar och små multiplar i LuckyTemplates

I den här bloggen kommer vi att visa hur man lager fältparametrar med små multiplar för att skapa otroligt användbara insikter och bilder.

LuckyTemplates Rank och anpassad gruppering

LuckyTemplates Rank och anpassad gruppering

I den här bloggen kommer du att lära dig hur du använder LuckyTemplates ranknings- och anpassade grupperingsfunktioner för att segmentera en exempeldata och rangordna den enligt kriterier.

Visar kumulativ total endast upp till ett visst datum i LuckyTemplates

Visar kumulativ total endast upp till ett visst datum i LuckyTemplates

I den här handledningen kommer jag att täcka en specifik teknik kring hur man visar Kumulativ total endast upp till ett specifikt datum i dina bilder i LuckyTemplates.

Punktdiagram: Avancerade anpassade bilder för LuckyTemplates

Punktdiagram: Avancerade anpassade bilder för LuckyTemplates

Lär dig hur du skapar och anpassar punktdiagram i LuckyTemplates, som huvudsakligen används för att mäta prestanda mot mål eller tidigare år.