DAX BERÄKNINGSTABEL Vs FILTER Funktion

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.

DAX BERÄKNINGSTABEL Vs FILTER Funktion

När du kör den här koden får du en tabell som visar varumärke och färg.

DAX BERÄKNINGSTABEL Vs FILTER Funktion

På fliken Frågeplaner får du en kod som motsvarar CrossApply -operatorn i .

DAX BERÄKNINGSTABEL Vs FILTER Funktion

Samtidigt kan du se att koden bara hämtar produktens färg och varumärke på fliken Server Timings .

DAX BERÄKNINGSTABEL Vs FILTER Funktion

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å .

DAX BERÄKNINGSTABEL Vs FILTER Funktion

Men om du använder funktionen CALCULATETABLE kommer frågan på fliken Server Timings att visa att resultaten har filtrerats efter produktfärg.

DAX BERÄKNINGSTABEL Vs FILTER Funktion

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.

DAX BERÄKNINGSTABEL Vs FILTER Funktion

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.

DAX BERÄKNINGSTABEL Vs FILTER Funktion

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.

DAX BERÄKNINGSTABEL Vs FILTER Funktion

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.

DAX BERÄKNINGSTABEL Vs FILTER Funktion

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.

DAX BERÄKNINGSTABEL Vs FILTER Funktion

Å andra sidan hämtar den andra frågan produktfärgen igen från tabellen Produkter. Den motsvarar funktionen i DAX-koden.

DAX BERÄKNINGSTABEL Vs FILTER Funktion

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.

DAX BERÄKNINGSTABEL Vs FILTER Funktion

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,


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.