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.
Bådeochär kraftfulla verktyg för att manipulera och analysera data i DAX-fråga, men de har några viktiga skillnader som är viktiga att förstå.
I den här bloggen kommer vi att gå över funktionen CALCULATETABLE och dess , och förstå hur den skiljer sig från FILTER -funktionen. I slutet kommer du att ha en bättre förståelse för hur du väljer rätt funktion för dina dataanalysbehov.
För att demonstrera använder vi DAX-koden nedan.
När du kör den här koden får du en tabell som visar varumärke och färg.
På fliken Frågeplaner får du en kod som motsvarar CrossApply -operatorn i .
Samtidigt kan du se att koden bara hämtar produktens färg och varumärke på fliken Server Timings .
Innehållsförteckning
DAX Studio Server Timings Resultat för BERÄKNINGSTABELL
Som ett exempel, låt oss filtrera produktfärgen så att den bara visar röd och/eller svart.
Du kan göra det genom att använda FILTER-funktionen. När du kör det kommer Server Timings att visa att FILTER-argumentet inte tillämpas på .
Men om du använder funktionen CALCULATETABLE kommer frågan på fliken Server Timings att visa att resultaten har filtrerats efter produktfärg.
BERÄKNINGSBAR Frågeplan i DAX Studio
Låt oss titta på frågeplanen för varje funktion.
CALCULATETABLE finns på den första raden i den logiska frågeplanen eftersom det är en funktion på toppnivå i koden och därför inte beror på några krav.
När du läser frågeplanen för en CALCULATETABLE-funktion börjar du inte med det första argumentet. Du måste först förstå filterkontexten som används. Så låt oss gå till rad 5.
Du kan se att operatören kräver produktfärgkolumnen på grund av det tillämpade filtret. Den skannar sedan denna kolumn och använder kombinationen Not IsEmpty Filter för att kontrollera produktfärgen mot varje rad.
Efter att filterkontexten har förberetts utförs argumentet.
Så här i efterhand, om du använder FILTER-funktionen, kommer du att se en annan frågeplan, så CROSSJOIN-argumentet utförs innan filterkontexten identifieras.
Nackdelen med detta tillvägagångssätt är att det inte pressar filtertillståndet till lagringsmotorn. Du kommer inte att kunna använda WHERE -satsen inuti xmSQL som kommer att lägga en tung börda på Formula Engine.
Och när du arbetar med flera tabeller blir filterkombinationen av CROSSJOIN-funktionen enorm. Detta saktar ner prestandan för DAX-koden. Därför är det i de flesta fall rekommenderat att använda funktionen Kalkyltabell.
Så istället för att utföra alla beräkningar i Formula Engine kan du injicera filtervillkoret i WHERE-klassen för XMSQL-koden.
Kontextövergång för liknande DAX-funktioner
Servertider
Detta koncept är också tillämpligt på funktionen BERÄKNA. Låt oss använda DAX-koden nedan som ett exempel.
Ett mått har automatiskt en BERÄKNA-funktion runt sig.
När du kör den här koden får du en tabell som visar det totala försäljningsbeloppet för varje färg.
På fliken Server Timings kan du se att koden kör två frågor. Den första frågan beräknar summan av försäljningsbeloppet från försäljningstabellen med avseende på tabellen produkter.
Å andra sidan hämtar den andra frågan produktfärgen igen från tabellen Produkter. Den motsvarar funktionen i DAX-koden.
Formula Engine placerar datacachen för de två frågorna sida vid sida. Den börjar med att hämta värdena från den andra datacchen och utför sedan en uppslagning i den första datacchen.
Fråga Plan
På fliken Frågeplan skannar den logiska frågeplanen produktfärgen på grund av argumentet.
Sedan summerar VertiPaq det totala försäljningsbeloppet beroende på produktfärgen. Den utför kontextövergången som omvandlar produktens färgvärde till en likvärdig filterkontext.
Filtret som skapas av kontextövergången översätts till en DependOnCols -egenskap i frågeplanen. Efter att VertiPaq har skannat de kolumner som krävs för att beräkna den totala försäljningen multiplicerar den försäljningskvantiteten med nettopriset.
Den totala försäljningen returneras sedan som ett resultat i form av en valutadatatyp. Och slutligen returnerar ADDCOLUMNS en tabell med två kolumner som innehåller färg och total försäljning.
Slutsats
Frågeplanen kan ha en betydande inverkan på en frågas prestanda, eftersom olika frågeplaner kan ha olika effektivitetsnivåer.
När du använder funktionerna CALCULATETABLE och FILTER i en DAX-fråga, kan frågeplanen skilja sig beroende på det specifika scenariot och en mängd olika faktorer, såsom det specifika formeluttrycket som används och frågemotorns möjligheter.
I allmänhet är det en bra idé att testa och jämföra prestanda för olika frågeplaner för att avgöra det mest effektiva tillvägagångssättet för ett givet scenario.
Med vänliga hälsningar,
Denna handledning ger en översikt över Power Query Editor och M-språket på LuckyTemplates-skrivbordet.
Lär dig hur du skapar en sidnumrerad rapport, lägger till texter och bilder och sedan exporterar din rapport till olika dokumentformat.
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.
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ä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.
Förstå konceptet med variabler i DAX inom LuckyTemplates och konsekvenserna av variabler för hur dina mått beräknas.
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.
Upptäck färgteman i LuckyTemplates. Dessa är viktiga för att dina rapporter och visualiseringar ska se ut och fungera sömlöst.
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.
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.