Optimierung von DAX für LuckyTemplates mit DAX Studio – Formula Engines

Optimierung von DAX für LuckyTemplates mit DAX Studio – Formula Engines

Wenn Sie Ihr Datenmodell und Ihren DAX für LuckyTemplates optimieren, sollten Sie bedenken, dass hinter den Kulissen zwei Engines laufen – die Formel-Engine und die Speicher-Engine .

Diese beiden Engines arbeiten zusammen, um dem Benutzer die benötigten Ergebnisse zurückzugeben. Sie stellen die Ergebnismenge in Form einer Tabelle oder eines Skalenwertes zur Verfügung.

Inhaltsverzeichnis

Die Rolle der Formel-Engine

In diesem Artikel konzentrieren wir uns auf die Formel-Engine.

Die Formel-Engine ist die Engine der obersten Ebene, die die gesamte Architektur einer Abfrage verwaltet.

Was auch immer Sie tun, während Sie eine Abfrage ausführen oder eine berechnete Spalte oder eine berechnete Tabelle erstellen, die Formel-Engine wird aktiviert.

Die Formel-Engine versteht die eingehenden Abfragen nicht nur in DAX, sondern auch in MDX. Wenn Sie beispielsweise Excel verwenden, erstellen Sie Pivot-Modelle auf der Grundlage von Pivot-Tabellen, und Pivot-Tabellen verwenden tatsächlich die MDX-Sprache.

Hier setzt die Formel-Engine an. Da sie sowohl DAX als auch MDX versteht, können Sie ein anderes LuckyTemplates-Modell verwenden. Die von diesem Datenmodell gesendeten Abfragen verwenden DAX, während die vom Pivot-Modell kommenden Abfragen MDX verwenden.

Wie die Formel-Engine funktioniert

Das Verständnis der Abfragen, die entweder von der MDX-Quelle oder der DAX-Quelle stammen, ist nur ein Faktor für die Leistung der Formel-Engine. Außerdem werden weitere Schritte durchlaufen, die Ihnen bei der Bearbeitung Ihrer Abfragen helfen.

Zunächst muss ein Abfrageplan generiert werden, den die Speicher-Engine versteht . Als untergeordnete Engine weiß die Speicher-Engine eigentlich nicht, ob eine Pivot-Tabelle in Excel oder ein Visual in LuckyTemplates die Abfrage ausgeführt hat.

Beim Erstellen eines Abfrageplans erstellt die Formel-Engine zunächst einen logischen Abfrageplan und anschließend einen physischen Abfrageplan. Sowohl der logische als auch der physische Abfrageplan sollten einander ähneln.

Nach Abschluss des physischen Abfrageplans erhält der Benutzer oder das Client-Tool die Ergebnismenge. Von dort aus bestimmt das Client-Tool, wie es die Ergebnisse oder den Datensatz verwendet, um dem Benutzer das Endergebnis anzuzeigen.

Haupteinschränkungen der Formel-Engine

Die Formel-Engine spielt eine große Rolle, wenn Sie DAX für LuckyTemplates mit DAX Studio optimieren. Es gibt jedoch auch einige Einschränkungen.

Erstens verwendet die Formel-Engine immer einen einzelnen Kern, um Ihren gesamten Betrieb zu verwalten, unabhängig davon, wie viele CPU-Kerne in Ihrem System verfügbar sind .

Wenn ich meinen Task-Manager öffne, siehst du, dass meine CPU sechs Kerne hat.

Optimierung von DAX für LuckyTemplates mit DAX Studio – Formula Engines

Trotz dieser Tatsache wählt die Formel-Engine immer noch einen dieser sechs Kerne aus, mit dem sie arbeiten möchte, während die Speicher-Engine den Rest nutzen kann.

Zweitens hat die Formel-Engine keinen direkten Zugriff auf Ihre Datenbank . Aufgrund dieser Einschränkung müssen Sie die Daten entweder im internen Speicher speichern oder in der Datenbank speichern und eine DirectQuery über diese Datenbank erstellen.

Es ist außerdem auf die Speicher-Engine angewiesen, um die Daten in Form eines Datencaches abzurufen. Die Formel-Engine durchläuft dann diesen Datencache, um fortzufahren, bevor sie dem Endbenutzer Ergebnisse bereitstellen kann.

Wie die Formel-Engine dabei hilft, DAX für LuckyTemplates zu optimieren

Wenn Sie versuchen, Ihr Datenmodell oder Ihren DAX für LuckyTemplates zu optimieren, werden Sie manchmal feststellen, dass die Speicher-Engine beim Ausführen von Abfragen langsamer wird. In diesem Fall können Sie die Formel-Engine zur Vervollständigung der gesamten Berechnung verwenden, um den Prozess zu optimieren.

Beachten Sie, dass, wenn die Formel-Engine am Ende die gesamte Tabelle selbst erstellt, die im Prozess erstellte Ergebnismenge nicht in den nachfolgenden Abfragen verwendet wird, die vom Client-Tool generiert werden, wenn sie den zuvor ausgeführten Abfragen ähneln . Wenn die Speicher-Engine jedoch den Datencache bereitstellt, kann dieser bestimmte Datencache im Speicher gehalten werden, sodass er die vom Client-Tool kommenden Anforderungen optimieren kann.

Wie wird das funktionieren?

Nehmen wir an, wir schreiben eine Abfrage, die vollständig von der Speicher-Engine ausgeführt wird, einige Aspekte jedoch von der Formel-Engine berechnet werden sollen. In diesem Fall sendet die Speicher-Engine einen Datencache zurück an die Formel-Engine und dieser Datencache (falls es sich um einen einfachen handelt) kann im Speicher gehalten werden.

Wenn nun ein paar Sekunden später eine ähnliche Abfrage eingeht, verwendet die Formel-Engine oder die Speicher-Engine diesen bestimmten Datencache, anstatt das gesamte Datenmodell noch einmal zu scannen, sodass die Abfragezeit verkürzt und die Benutzererfahrung verbessert werden kann verbessert.

Reduzierung der Belastung des Formelmotors

Auch hier versteht die Formel-Engine DAX- und MDX-Codes.

Wenn Sie also , und andere Aufgaben verwenden, kennt die Formel-Engine alle Funktionen, die Sie in der DAX-Sprache verwenden, und kann sie alle selbst lösen. Dies könnte sich jedoch auf die Leistung der Abfrage auswirken, insbesondere da die Formel-Engine versucht, alles mit einem einzigen Kern zu erledigen.

Aus diesem Grund müssen wir auch darauf achten, die Belastung der Formel-Engine zu reduzieren und die Belastung der Speicher-Engine zu erhöhen.

Ein gutes Beispiel dafür, wie unterschiedlich die Berechnung innerhalb der Formel-Engine und der Speicher-Engine ist, wäre die Verwendung von CROSSJOIN im Vergleich zu .

Wenn Sie CROSSJOIN verwenden, wird nur eine begrenzte Datenmenge durch die Speicher-Engine geleitet. Der Rest der Berechnung wird von der Formel-Engine durchgeführt. Im Vergleich dazu bedeutet die Verwendung von SUMMARIZE, dass die gesamte Abfrage innerhalb der Speicher-Engine ausgeführt wird.

Dies hängt natürlich auch davon ab, wie SUMMARIZE verwendet wird.

Wenn SUMMARIZE als innerste Funktion verwendet wird, wird es definitiv an die Speicher-Engine weitergegeben. In einigen Fällen wird SUMMARIZE jedoch in Verbindung mit einem anderen Code verwendet, der die Funktion der Formel-Engine erfordert. In diesem Fall übernimmt die Formel-Engine die Arbeit.

Wenn Sie wissen, wohin die Last geht, können Sie die Leistung Ihrer Abfrage optimieren, insbesondere wenn Sie die Kapazität und Einschränkungen der Ihnen zur Verfügung stehenden Engines im Auge behalten.

Tools, die bei der Optimierung von DAX für LuckyTemplates helfen können

Die Optimierung von DAX wird einfacher, wenn Sie die Tools maximieren, die dies ermöglichen. DAX Studio ist eines dieser Tools.

Nehmen wir das Beispiel von vorhin, bei dem die Formel-Engine die gesamte Last des Abschlusses der Berechnung übernimmt, wenn die SUMMARIZE-Funktion verwendet wird. DAX Studio kann Ihnen dabei helfen, Ihren Code so umzuschreiben, dass SUMMARIZE in die Speicher-Engine verschoben wird, wodurch die Formel-Engine entlastet wird. Dies verbessert möglicherweise die Leistung Ihres Datenmodells und Ihrer Abfragen.

Bei einfachen Abfragen sollte dies natürlich problemlos funktionieren. Es gibt auch kompliziertere Szenarien.

Sie können beispielsweise zusammengesetzte Modelle erstellen, die zwei Speicher-Engines innerhalb des Datenmodells selbst verwenden. Einer könnte für Vertipaq sein, der andere für DirectQuery. In diesem Fall muss Ihre Datenbank so optimiert werden, dass die generierten Abfragen für dieses spezifische relationale Datenmodell erstellt werden.

Nehmen wir an, Ihr Datumsmodell enthält zwei Tabellen: die Tabelle „Products“ und die Tabelle „Sales“. Die Products-Tabelle befindet sich im Vertipaq-Speicher, während die Sales-Tabelle als größere Tabelle über eine DirectQuery-Verbindung direkt in der Datenbank gespeichert wird.

Nehmen wir außerdem an, dass Sie die Spalte „Marke“ in die Matrix ziehen sowie die Kennzahl „Gesamtumsatz“, die aus der Tabelle „Verkäufe“ innerhalb der DirectQuery-Verbindung stammt.

In diesem Fall muss die Formel-Engine den Vorgang zwischen beiden Engines durchführen.

Zunächst werden die Spalten „Produktschlüssel“ und „Marke“ aus der Tabelle „Produkte“ abgerufen. Anschließend werden die Spalten „Nettopreis“, „Menge“ und „Produktschlüssel“ aus der Tabelle „Verkäufe“ abgerufen. Sobald der Datencache von Vertipaq und DirectQuery vorhanden ist, muss die Formel-Engine den Datencache übernehmen und versuchen, sie zu verknüpfen, um die Ergebnisse dem Endbenutzer bereitzustellen.


DAX-Abfrageoptimierungstechniken und Lektionen
Abfrageleistung und DAX Studio-Setup
DAX-Optimierung: Wo man die versteckte DAX-Falle findet

Abschluss

Die Formel-Engine spielt wirklich eine große Rolle, wenn Sie mit DAX arbeiten. Es ist jedoch wichtig, zunächst zu verstehen, wie es funktioniert, bevor Sie loslegen. Es ist wichtig, zu beherrschen, wie die Formel-Engine und die Speicher-Engine nahtlos zusammenarbeiten, insbesondere wenn Sie eine bessere Leistung Ihrer DAX-Abfragen wünschen.

Als Top-Level-Engine innerhalb der Analysedienstarchitektur muss die Formel-Engine viele Vorgänge ausführen. Sobald Sie jedoch auch die Besonderheiten der Speicher-Engine verstanden haben, können Sie herausfinden, welche Operation in die Speicher-Engine verschoben und welche in der Formel-Engine belassen werden soll.

Wir werden in einem separaten Tutorial tiefer in die Speicher-Engine eintauchen.

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