DAX REKENTABEL versus FILTER-functie

DAX REKENTABEL versus FILTER-functie

Zowel als zijn krachtige tools voor het manipuleren en analyseren van gegevens in DAX-query's, maar ze hebben enkele belangrijke verschillen die belangrijk zijn om te begrijpen.

In deze blog gaan we in op de CALCULATETABLE- functie en het queryplan in DAX studio en begrijpen we hoe deze verschilt van de FILTER- functie. Aan het einde zult u een beter begrip hebben van hoe u de juiste functie kiest voor uw behoeften op het gebied van gegevensanalyse.

Ter demonstratie gebruiken we de onderstaande DAX-code.

DAX REKENTABEL versus FILTER-functie

Wanneer u deze code uitvoert, krijgt u een tabel met merk en kleur.

DAX REKENTABEL versus FILTER-functie

Op het tabblad Queryplannen krijgt u een code die overeenkomt met de CrossApply- operator in de Formula Engine .

DAX REKENTABEL versus FILTER-functie

Tegelijkertijd kunt u zien dat de code alleen de productkleur en het merk ophaalt op het tabblad Server Timings .

DAX REKENTABEL versus FILTER-functie

Inhoudsopgave

DAX Studio Server Timings Resultaat voor CALCULATABEL

Laten we als voorbeeld de productkleur filteren zodat alleen rood en/of zwart wordt weergegeven.

U kunt dit doen door de FILTER-functie te gebruiken. Wanneer u het uitvoert, zal de Server Timings laten zien dat het FILTER-argument niet wordt toegepast op de xmSQL-code .

DAX REKENTABEL versus FILTER-functie

Maar als u de CALCULATABEL-functie gebruikt, zal de query op het tabblad Server Timings laten zien dat de resultaten zijn gefilterd op productkleur.

DAX REKENTABEL versus FILTER-functie

BEREKENTABEL Queryplan in DAX Studio

Laten we eens kijken naar het queryplan voor elke functie.

De CALCULATETABLE bevindt zich op de eerste regel van het Logical Query Plan omdat het een functie op het hoogste niveau in de code is en daarom niet afhankelijk is van vereisten.

DAX REKENTABEL versus FILTER-functie

Wanneer u het queryplan van een CALCULATETABLE-functie leest, begint u niet met het eerste argument. U moet eerst de gebruikte filtercontext begrijpen. Dus laten we naar regel 5 gaan.

U kunt zien dat de VertiPaq- operator de productkleurkolom vereist vanwege het toegepaste filter. Vervolgens wordt deze kolom gescand en wordt de filtercombinatie Not IsEmpty gebruikt om de productkleur voor elke rij te controleren.

Nadat de filtercontext is voorbereid, wordt het argument uitgevoerd.

Als u achteraf de functie FILTER gebruikt, ziet u een ander queryplan, dus wordt het argument CROSSJOIN uitgevoerd voordat de filtercontext wordt geïdentificeerd.

DAX REKENTABEL versus FILTER-functie

Het nadeel van deze aanpak is dat de filtervoorwaarde niet naar de Storage Engine wordt doorgestuurd. U kunt de WHERE- component in xmSQL niet gebruiken, wat een zware belasting vormt voor de Formula Engine.

En wanneer u met meerdere tabellen werkt, zal de filtercombinatie van de CROSSJOIN-functie enorm zijn. Dit vertraagt ​​de prestaties van de DAX-code. Daarom wordt in de meeste gevallen aanbevolen om de functie CALCULATABEL te gebruiken.

Dus in plaats van alle berekeningen in de Formula Engine uit te voeren, kunt u de filtervoorwaarde in de WHERE-klasse van de XMSQL-code injecteren.

Contextovergang voor vergelijkbare DAX-functies

Servertijden

Dit concept is ook van toepassing op de functie CALCULATE. Laten we de onderstaande DAX-code als voorbeeld gebruiken.

DAX REKENTABEL versus FILTER-functie

Een maat heeft automatisch een CALCULATE functie eromheen.

Wanneer u deze code uitvoert, krijgt u een tabel met het totale verkoopbedrag voor elke kleur.

DAX REKENTABEL versus FILTER-functie

Op het tabblad Server Timings kunt u zien dat de code twee query's uitvoert. De eerste query berekent de som van het verkoopbedrag uit de tabel Verkoop ten opzichte van de tabel Producten.

DAX REKENTABEL versus FILTER-functie

Aan de andere kant haalt de tweede query de productkleur weer op uit de tabel Producten. Het komt overeen met de functie in de DAX-code.

DAX REKENTABEL versus FILTER-functie

De Formula Engine plaatst de gegevenscaches van de twee query's naast elkaar. Het begint met het ophalen van de waarden uit de tweede datacache en voert vervolgens een zoekopdracht uit in de eerste datacache.

Vraagplan

Op het tabblad Queryplan scant het Logische Queryplan de productkleur vanwege het argument .

Vervolgens somt VertiPaq het totale verkoopbedrag op, afhankelijk van de productkleur. Het voert de contextovergang uit die de productkleurwaarde converteert naar een equivalente filtercontext.

DAX REKENTABEL versus FILTER-functie

Het filter dat door de contextovergang is gemaakt, wordt vertaald naar een eigenschap DependOnCols in het Queryplan. Nadat VertiPaq de kolommen heeft gescand die nodig zijn om de totale verkoop te berekenen, vermenigvuldigt het de verkoophoeveelheid met de nettoprijs.

De Totale Verkoop wordt dan als resultaat geretourneerd in de vorm van een valutagegevenstype. En ten slotte retourneert ADDCOLUMNS een tabel met twee kolommen die de kleur en het totale verkoopbedrag bevatten.

Conclusie

Het queryplan kan een aanzienlijke invloed hebben op de prestaties van een query, aangezien verschillende queryplannen verschillende efficiëntieniveaus kunnen hebben.

Wanneer u de functies CALCULATETABLE en FILTER gebruikt in een DAX-query, kan het queryplan verschillen, afhankelijk van het specifieke scenario en diverse factoren, zoals de specifieke formule-expressie die wordt gebruikt en de mogelijkheden van de query-engine.

Over het algemeen is het een goed idee om de prestaties van verschillende queryplannen te testen en te vergelijken om de meest efficiënte aanpak voor een bepaald scenario te bepalen.

Al het beste,


Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Wat is zelf in Python: voorbeelden uit de echte wereld

Een RDS-bestand opslaan en laden in R

Een RDS-bestand opslaan en laden in R

Je leert hoe je objecten uit een .rds-bestand in R opslaat en laadt. In deze blog wordt ook besproken hoe je objecten uit R naar LuckyTemplates importeert.

First N Business Days Revisited – Een DAX-coderingstaaloplossing

First N Business Days Revisited – Een DAX-coderingstaaloplossing

In deze tutorial over DAX-coderingstaal leert u hoe u de functie GENERATE gebruikt en hoe u de titel van een maat dynamisch wijzigt.

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Breng inzichten onder de aandacht met behulp van de Multi Threaded Dynamic Visuals-techniek in LuckyTemplates

Deze zelfstudie behandelt hoe u de Multi Threaded Dynamic Visuals-techniek kunt gebruiken om inzichten te creëren op basis van dynamische gegevensvisualisaties in uw rapporten.

Inleiding tot het filteren van context in LuckyTemplates

Inleiding tot het filteren van context in LuckyTemplates

In dit artikel zal ik de filtercontext doornemen. Filtercontext is een van de belangrijkste onderwerpen waarover elke LuckyTemplates-gebruiker in eerste instantie zou moeten leren.

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Beste tips voor het gebruik van de apps in LuckyTemplates Online Service

Ik wil laten zien hoe de online service LuckyTemplates Apps kan helpen bij het beheren van verschillende rapporten en inzichten die uit verschillende bronnen zijn gegenereerd.

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Analyseer winstmargeveranderingen in de loop van de tijd - analyse met LuckyTemplates en DAX

Leer hoe u wijzigingen in uw winstmarge kunt berekenen met behulp van technieken zoals vertakking van metingen en het combineren van DAX-formules in LuckyTemplates.

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Materialisatie-ideeën voor gegevenscaches in DAX Studio

Deze tutorial bespreekt de ideeën van materialisatie van datacaches en hoe deze de prestaties van DAX beïnvloeden bij het leveren van resultaten.

Zakelijke rapportage met behulp van LuckyTemplates

Zakelijke rapportage met behulp van LuckyTemplates

Als u tot nu toe nog steeds Excel gebruikt, is dit het beste moment om LuckyTemplates te gaan gebruiken voor uw zakelijke rapportagebehoeften.

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten

Wat is LuckyTemplates Gateway? Alles wat u moet weten