DAX CALCULATETABLE vs. FILTER-Funktion

DAX CALCULATETABLE vs. FILTER-Funktion

Sowohl als auch sind leistungsstarke Tools zum Bearbeiten und Analysieren von Daten in DAX-Abfragen, weisen jedoch einige wichtige Unterschiede auf, die es zu verstehen gilt.

In diesem Blog gehen wir auf die Funktion CALCULATETABLE und ihren Abfrageplan in DAX Studio ein und verstehen, wie sie sich von der Funktion FILTER unterscheidet . Am Ende werden Sie besser verstehen, wie Sie die richtige Funktion für Ihre Datenanalyseanforderungen auswählen.

Zur Veranschaulichung verwenden wir den folgenden DAX-Code.

DAX CALCULATETABLE vs. FILTER-Funktion

Wenn Sie diesen Code ausführen, erhalten Sie eine Tabelle mit Marke und Farbe.

DAX CALCULATETABLE vs. FILTER-Funktion

Auf der Registerkarte „Abfragepläne“ erhalten Sie einen Code, der dem CrossApply- Operator in der Formel-Engine entspricht .

DAX CALCULATETABLE vs. FILTER-Funktion

Gleichzeitig können Sie sehen, dass der Code nur die Produktfarbe und -marke auf der Registerkarte „Server-Timings“ abruft .

DAX CALCULATETABLE vs. FILTER-Funktion

Inhaltsverzeichnis

DAX Studio Server-Timings-Ergebnis für CALCULATETABLE

Filtern wir beispielsweise die Produktfarbe so, dass nur Rot und/oder Schwarz angezeigt wird.

Sie können dies tun, indem Sie die FILTER-Funktion verwenden. Wenn Sie es ausführen, zeigen die Server-Timings an, dass das FILTER-Argument nicht auf den xmSQL-Code angewendet wird .

DAX CALCULATETABLE vs. FILTER-Funktion

Wenn Sie jedoch die Funktion CALCULATETABLE verwenden, zeigt die Abfrage auf der Registerkarte „Server-Timings“ an, dass die Ergebnisse nach Produktfarbe gefiltert wurden.

DAX CALCULATETABLE vs. FILTER-Funktion

BERECHNBARER Abfrageplan in DAX Studio

Schauen wir uns den Abfrageplan für jede Funktion an.

Die CALCULATETABLE befindet sich in der ersten Zeile des logischen Abfrageplans, da es sich um eine Funktion der obersten Ebene im Code handelt und daher nicht von irgendwelchen Anforderungen abhängt.

DAX CALCULATETABLE vs. FILTER-Funktion

Wenn Sie den Abfrageplan einer CALCULATETABLE-Funktion lesen, beginnen Sie nicht mit dem ersten Argument. Sie müssen zunächst den verwendeten Filterkontext verstehen. Gehen wir also zu Zeile 5.

Sie können sehen, dass der VertiPaq- Operator aufgrund des angewendeten Filters die Spalte „Produktfarbe“ benötigt. Anschließend wird diese Spalte gescannt und mithilfe der Filterkombination „Not IsEmpty“ die Produktfarbe anhand jeder Zeile überprüft.

Nachdem der Filterkontext vorbereitet wurde, wird das Argument ausgeführt.

Wenn Sie im Nachhinein die FILTER-Funktion verwenden, sehen Sie einen anderen Abfrageplan, sodass das CROSSJOIN-Argument vor der Identifizierung des Filterkontexts ausgeführt wird.

DAX CALCULATETABLE vs. FILTER-Funktion

Der Nachteil dieses Ansatzes besteht darin, dass die Filterbedingung nicht an die Speicher-Engine übertragen wird. Sie können die WHERE- Klausel nicht in xmSQL verwenden, was die Formel-Engine stark belastet.

Und wenn Sie mit mehreren Tabellen arbeiten, ist die Filterkombination der CROSSJOIN-Funktion sehr umfangreich. Dies verlangsamt die Leistung des DAX-Codes. Daher empfiehlt es sich in den meisten Fällen, die Funktion CALCULATETABLE zu verwenden.

Anstatt also alle Berechnungen in der Formel-Engine durchzuführen, können Sie die Filterbedingung in die WHERE-Klasse des XMSQL-Codes einfügen.

Kontextübergang für ähnliche DAX-Funktionen

Server-Timings

Dieses Konzept ist auch auf die CALCULATE-Funktion anwendbar. Nehmen wir den folgenden DAX-Code als Beispiel.

DAX CALCULATETABLE vs. FILTER-Funktion

Eine Kennzahl ist automatisch von einer CALCULATE-Funktion umgeben.

Wenn Sie diesen Code ausführen, erhalten Sie eine Tabelle mit dem Gesamtverkaufsbetrag für jede Farbe.

DAX CALCULATETABLE vs. FILTER-Funktion

Auf der Registerkarte „Server-Timings“ können Sie sehen, dass der Code zwei Abfragen ausführt. Die erste Abfrage berechnet die Summe des Verkaufsbetrags aus der Tabelle „Sales“ in Bezug auf die Tabelle „Products“.

DAX CALCULATETABLE vs. FILTER-Funktion

Andererseits ruft die zweite Abfrage die Produktfarbe erneut aus der Tabelle „Products“ ab. Es entspricht der Funktion im DAX-Code.

DAX CALCULATETABLE vs. FILTER-Funktion

Die Formel-Engine platziert die Datencaches der beiden Abfragen nebeneinander. Es beginnt mit dem Abrufen der Werte aus dem zweiten Datencache und führt dann eine Suche im ersten Datencache durch.

Abfrageplan

Auf der Registerkarte „Abfrageplan“ scannt der logische Abfrageplan die Produktfarbe aufgrund des Arguments.

Dann summiert VertiPaq den Gesamtverkaufsbetrag abhängig von der Produktfarbe. Es führt den Kontextübergang durch, der den Produktfarbwert in einen äquivalenten Filterkontext umwandelt.

DAX CALCULATETABLE vs. FILTER-Funktion

Der durch den Kontextübergang erstellte Filter wird im Abfrageplan in eine DependOnCols- Eigenschaft übersetzt. Nachdem VertiPaq die zur Berechnung des Gesamtumsatzes erforderlichen Spalten gescannt hat, multipliziert es die Verkaufsmenge mit dem Nettopreis.

Als Ergebnis werden dann die Gesamtumsätze in Form eines Währungsdatentyps zurückgegeben. Und schließlich gibt ADDCOLUMNS eine Tabelle mit zwei Spalten zurück, die die Farbe und den Gesamtverkaufsbetrag enthalten.

Abschluss

Der Abfrageplan kann einen erheblichen Einfluss auf die Leistung einer Abfrage haben, da unterschiedliche Abfragepläne unterschiedliche Effizienzgrade aufweisen können.

Wenn Sie die Funktionen CALCULATETABLE und FILTER in einer DAX-Abfrage verwenden, kann der Abfrageplan je nach dem spezifischen Szenario und einer Vielzahl von Faktoren, wie z. B. dem spezifischen verwendeten Formelausdruck und den Fähigkeiten der Abfrage-Engine, unterschiedlich sein.

Im Allgemeinen empfiehlt es sich, die Leistung verschiedener Abfragepläne zu testen und zu vergleichen, um den effizientesten Ansatz für ein bestimmtes Szenario zu ermitteln.

Alles Gute,


So speichern und laden Sie eine RDS-Datei in R

So speichern und laden Sie eine RDS-Datei in R

Sie erfahren, wie Sie Objekte aus einer .rds-Datei in R speichern und laden. In diesem Blog wird auch behandelt, wie Sie Objekte aus R in LuckyTemplates importieren.

Was ist Self in Python: Beispiele aus der Praxis

Was ist Self in Python: Beispiele aus der Praxis

Was ist Self in Python: Beispiele aus der Praxis

First N Business Days Revisited – Eine DAX-Codierungssprachenlösung

First N Business Days Revisited – Eine DAX-Codierungssprachenlösung

In diesem Tutorial zur DAX-Codierungssprache erfahren Sie, wie Sie die GENERATE-Funktion verwenden und einen Kennzahltitel dynamisch ändern.

Präsentieren Sie Einblicke mithilfe der Multi-Threaded-Dynamic-Visuals-Technik in LuckyTemplates

Präsentieren Sie Einblicke mithilfe der Multi-Threaded-Dynamic-Visuals-Technik in LuckyTemplates

In diesem Tutorial erfahren Sie, wie Sie mithilfe der Multi-Threaded-Dynamic-Visuals-Technik Erkenntnisse aus dynamischen Datenvisualisierungen in Ihren Berichten gewinnen.

Einführung in den Filterkontext in LuckyTemplates

Einführung in den Filterkontext in LuckyTemplates

In diesem Artikel werde ich den Filterkontext durchgehen. Der Filterkontext ist eines der Hauptthemen, über die sich jeder LuckyTemplates-Benutzer zunächst informieren sollte.

Beste Tipps zur Verwendung der Apps im LuckyTemplates-Onlinedienst

Beste Tipps zur Verwendung der Apps im LuckyTemplates-Onlinedienst

Ich möchte zeigen, wie der LuckyTemplates Apps-Onlinedienst bei der Verwaltung verschiedener Berichte und Erkenntnisse aus verschiedenen Quellen helfen kann.

Analysieren Sie Gewinnmargenänderungen im Laufe der Zeit – Analysen mit LuckyTemplates und DAX

Analysieren Sie Gewinnmargenänderungen im Laufe der Zeit – Analysen mit LuckyTemplates und DAX

Erfahren Sie, wie Sie Ihre Gewinnmargenänderungen mithilfe von Techniken wie Kennzahlenverzweigung und der Kombination von DAX-Formeln in LuckyTemplates ermitteln.

Materialisierungsideen für Datencaches in DAX Studio

Materialisierungsideen für Datencaches in DAX Studio

In diesem Tutorial werden die Ideen der Materialisierung von Datencaches und deren Auswirkungen auf die Leistung von DAXs bei der Bereitstellung von Ergebnissen erläutert.

Geschäftsberichte mit LuckyTemplates

Geschäftsberichte mit LuckyTemplates

Wenn Sie bisher noch Excel verwenden, ist dies der beste Zeitpunkt, LuckyTemplates für Ihre Geschäftsberichtsanforderungen zu verwenden.

Was ist LuckyTemplates Gateway? Alles was du wissen musst

Was ist LuckyTemplates Gateway? Alles was du wissen musst

Was ist LuckyTemplates Gateway? Alles was du wissen musst