DAX BEREGNETABEL Vs FILTER-funksjon

Bådeoger kraftige verktøy for å manipulere og analysere data i DAX-søk, men de har noen viktige forskjeller som er viktige å forstå.

I denne bloggen skal vi gå over CALCUATETABLE -funksjonen og dens , og forstå hvordan den skiller seg fra FILTER -funksjonen. Mot slutten vil du ha en bedre forståelse av hvordan du velger riktig funksjon for dine dataanalysebehov.

For å demonstrere bruker vi DAX-koden nedenfor.

DAX BEREGNETABEL Vs FILTER-funksjon

Når du kjører denne koden, får du en tabell som viser merke og farge.

DAX BEREGNETABEL Vs FILTER-funksjon

I kategorien Spørringsplaner får du en kode som tilsvarer CrossApply- operatøren i .

DAX BEREGNETABEL Vs FILTER-funksjon

Samtidig kan du se at koden kun henter produktfarge og merke i fanen Server Timings .

DAX BEREGNETABEL Vs FILTER-funksjon

Innholdsfortegnelse

DAX Studio Server Timings Resultat for KALKULERTABELL

Som et eksempel, la oss filtrere produktfargen til kun å vise rød og/eller svart.

Du kan gjøre det ved å bruke FILTER-funksjonen. Når du kjører det, vil Server Timings vise at FILTER-argumentet ikke brukes på .

DAX BEREGNETABEL Vs FILTER-funksjon

Men hvis du bruker CALCUATETABLE-funksjonen, vil spørringen i fanen Server Timings vise at resultatene er filtrert etter produktfarge.

DAX BEREGNETABEL Vs FILTER-funksjon

Kalkylerbar Spørreplan i DAX Studio

La oss se på spørreplanen for hver funksjon.

CALCULATETABLE er på den første linjen i den logiske spørreplanen fordi det er en funksjon på toppnivå i koden og derfor ikke er avhengig av noen krav.

DAX BEREGNETABEL Vs FILTER-funksjon

Når du leser spørringsplanen til en CALCULATETABLE-funksjon, starter du ikke med det første argumentet. Du må først forstå filterkonteksten som brukes. Så la oss gå til linje 5.

Du kan se at operatøren krever produktfargekolonnen på grunn av det anvendte filteret. Den skanner deretter denne kolonnen og bruker Not IsEmpty- filterkombinasjonen for å sjekke produktfargen mot hver rad.

Etter at filterkonteksten er utarbeidet, utføres argumentet.

I ettertid, hvis du bruker FILTER-funksjonen, vil du se en annen spørringsplan, så CROSSJOIN-argumentet utføres før filterkonteksten identifiseres.

DAX BEREGNETABEL Vs FILTER-funksjon

Ulempen med denne tilnærmingen er at den ikke skyver filtertilstanden til lagringsmotoren. Du vil ikke kunne bruke WHERE- klausulen inne i xmSQL som vil legge en tung byrde på Formula Engine.

Og når du jobber med flere tabeller, vil filterkombinasjonen av CROSSJOIN-funksjonen være enorm. Dette reduserer ytelsen til DAX-koden. Derfor anbefales det i de fleste tilfeller å bruke CALCUATETABLE-funksjonen.

Så i stedet for å utføre alle beregningene i Formula Engine, kan du injisere filtertilstanden i WHERE-klassen til XMSQL-koden.

Kontekstovergang for lignende DAX-funksjoner

Servertidspunkter

Dette konseptet kan også brukes for CALCUATE-funksjonen. La oss bruke DAX-koden nedenfor som et eksempel.

DAX BEREGNETABEL Vs FILTER-funksjon

Et mål har automatisk en CALCUATE-funksjon rundt seg.

Når du kjører denne koden, får du en tabell som viser det totale salgsbeløpet for hver farge.

DAX BEREGNETABEL Vs FILTER-funksjon

I fanen Server Timings kan du se at koden utfører to spørringer. Den første spørringen beregner summen av salgsbeløpet fra salgstabellen i forhold til produkttabellen.

DAX BEREGNETABEL Vs FILTER-funksjon

På den annen side henter den andre spørringen produktfargen igjen fra produkttabellen. Den tilsvarer funksjonen i DAX-koden.

DAX BEREGNETABEL Vs FILTER-funksjon

Formula Engine plasserer databuffrene til de to spørringene side om side. Den starter med å hente verdiene fra den andre databufferen og utfører deretter et oppslag i den første databufferen.

Spørreplan

I kategorien Spørringsplan skanner den logiske spørreplanen produktfargen på grunn av argumentet.

Deretter summerer VertiPaq det totale salgsbeløpet avhengig av produktfargen. Den utfører kontekstovergangen som konverterer produktfargeverdien til en tilsvarende filterkontekst.

DAX BEREGNETABEL Vs FILTER-funksjon

Filteret opprettet av kontekstovergangen blir oversatt til en DependOnCols- egenskap i spørringsplanen. Etter at VertiPaq skanner kolonnene som kreves for å beregne totalt salg, multipliserer den salgsmengden med nettoprisen.

Totalt salg returneres deretter som et resultat i form av en valutadatatype. Og til slutt returnerer ADDCOLUMNS en tabell med to kolonner som inneholder farge og totalt salgsbeløp.

Konklusjon

Spørringsplanen kan ha en betydelig innvirkning på ytelsen til en spørring, ettersom ulike spørringsplaner kan ha ulike effektivitetsnivåer.

Når du bruker funksjonene CALCULATETABLE og FILTER i en DAX-spørring, kan spørringsplanen variere avhengig av det spesifikke scenariet og en rekke faktorer, for eksempel det spesifikke formeluttrykket som brukes og søkemotorens funksjoner.

Generelt er det en god idé å teste og sammenligne ytelsen til forskjellige spørringsplaner for å finne den mest effektive tilnærmingen for et gitt scenario.

Beste ønsker,


Variabler og uttrykk i Power Query Editor

Variabler og uttrykk i Power Query Editor

Denne opplæringen vil diskutere om variabler og uttrykk i Power Query Editor. Du lærer hvordan du skriver og bygger dem riktig.

Hvordan lage et Lucky Templates-varmekart

Hvordan lage et Lucky Templates-varmekart

Et LuckyTemplates-varmekart er en type visualisering som brukes til å vise datatetthet på et kart. I denne opplæringen vil jeg diskutere hvordan vi kan lage en – ikke gå glipp av noe!

Opprette et Pareto-diagram i LuckyTemplates – Avansert DAX

Opprette et Pareto-diagram i LuckyTemplates – Avansert DAX

Jeg skal lære deg et veldig interessant eksempel rundt Pareto-prinsippet og hvordan du lager et Pareto-diagram ved hjelp av viktige DAX-formler.

Egendefinert stolpediagram i LuckyTemplates: varianter og modifikasjoner

Egendefinert stolpediagram i LuckyTemplates: varianter og modifikasjoner

Lær hvordan et tilpasset stolpediagram på markedsplassen kan brukes til datasammenligning og hvordan du kan lage dem ved å bruke eksempler i LuckyTemplates.

Kraftautomatisering av statiske resultater: En oversikt

Kraftautomatisering av statiske resultater: En oversikt

Lær hvordan Power Automate Static Results-funksjonen fungerer og hvorfor det er bra å bli lagt til de beste praksisene når du lager flytdiagrammer.

LuckyTemplates Python-opplæring: Hvordan oversette tekster

LuckyTemplates Python-opplæring: Hvordan oversette tekster

eDNA demonstrerer hvordan du utfører språk- eller tekstoversettelse ved hjelp av Python og overfører det til LuckyTemplates. LuckyTemplates Python-opplæring.

Lag et Gantt-diagram i LuckyTemplates Report Builder

Lag et Gantt-diagram i LuckyTemplates Report Builder

I denne opplæringen lærer du hvordan du bruker Gauge Bullet Graph til å lage et Gantt-diagram i LuckyTemplates Report Builder.

Lag 3D-spredningsplott ved å bruke Python i LuckyTemplates

Lag 3D-spredningsplott ved å bruke Python i LuckyTemplates

I denne opplæringen lærer du hvordan du lager et tredimensjonalt (3D) spredningsplott ved å bruke Python i LuckyTemplates.

Effektiv LuckyTemplates-rapportering – øktgjennomgang og ressursnedlasting

Effektiv LuckyTemplates-rapportering – øktgjennomgang og ressursnedlasting

Effektiv LuckyTemplates-rapportering – øktgjennomgang og ressursnedlasting

Ny kundeanalyse med LuckyTemplates – Neste medlemsbegivenhet

Ny kundeanalyse med LuckyTemplates – Neste medlemsbegivenhet

Ny kundeanalyse med LuckyTemplates – Neste medlemsbegivenhet