Die CALCULATE DAX-Funktion: Probleme und Lösungen

Die CALCULATE DAX-Funktion: Probleme und Lösungen

Im heutigen Blog werden wir untersuchen, warum Sie die Funktion DAX nicht verwenden sollten, um den Durchschnitt pro Kategorie zu ermitteln, und einige alternative Lösungen anbieten, um die gleichen Ergebnisse zu erzielen, die Sie möchten. Das vollständige Video dieses Tutorials können Sie unten in diesem Blog ansehen .

Es ist seltsam kompliziert, einen Durchschnitt pro Kategorie im DAX zu ermitteln. Durch die Verwendung der CALCULATE-Funktion zum Lösen dieser Berechnungen fällt es neuen DAX-Benutzern möglicherweise schwerer, den DAX-Code zu verstehen, als er sein sollte. Die gute Nachricht ist, dass es einfachere Lösungen für dieses Problem gibt. 

Inhaltsverzeichnis

Übersicht über die Funktion CALCULATE DAX

Vor ein paar Monaten habe ich LuckyTemplates auf dem Es wurde die DAX-Gegenkultur genannt, in der ich einige alternative Ansichten zum DAX darlegte. 

Einer der Hauptgründe betrifft die Verwendung der CALCULATE-Funktion. Ich habe darüber gesprochen, warum Sie CALCULATE nicht verwenden sollten, insbesondere wenn Sie neu bei DAX sind. 

CALCULATE ist eine wirklich komplexe Funktion, die es zu verstehen und zu verwenden gilt. Es werden bestimmte Annahmen über Ihr Datenmodell getroffen und Sie können in große Schwierigkeiten geraten. 

Ich habe mich auch mit Microsofts Quick Measure für Running Total befasst, da es in Einzeltabellensituationen nicht funktioniert und ein Sternschema benötigt, um ordnungsgemäß zu funktionieren.

Deshalb habe ich eine einfachere Alternative gezeigt, die unabhängig davon funktioniert, ob es sich um ein Sternschema oder ein Einzeltabellenmodell handelt, ohne dass CALCULATE erforderlich ist. 

Berechnen Sie die DAX-Formel

In diesem Blog geht es um eine schnelle Kennzahl namens „Durchschnitt pro Kategorie“ . Wenn Sie sich im LuckyTemplates-Desktop befinden, gehen Sie zunächst zum Bereich „Felder“ und erstellen Sie eine neue Schnellkennzahl .

Die CALCULATE DAX-Funktion: Probleme und Lösungen

Wählen Sie im Popup-Fenster „Schnellmessung“ im Dropdown-Menü „Berechnung “ die Option „Durchschnitt pro Kategorie“ aus . Dann ziehen Sie ? Wert im Textfeld „Basiswert“ und Monat im Feld „Kategorie“ .

Die CALCULATE DAX-Funktion: Probleme und Lösungen

Klicken Sie dann auf „OK“ und Sie erhalten ein Bild, das so aussieht. 

Die CALCULATE DAX-Funktion: Probleme und Lösungen

Auf der x-Achse sind die Quartale aufgeführt: Quartal 1, 2, 3 und 4. 

Und was Sie tun möchten, ist, die unten gezeigten Werte für jeden Monat zusammenzufassen und dann den Durchschnitt dieser Werte zu bilden. Kurz gesagt, der Durchschnitt pro Kategorie, der das Thema unseres Blogs ist. 

Die CALCULATE DAX-Funktion: Probleme und Lösungen

Unser Datenmodell hierfür ist sehr einfach. Wir haben eine Tabelle mit Dates , zufällig generierten Werten und Month , MonthSort und Quarters in separaten Spalten. 

Die CALCULATE DAX-Funktion: Probleme und Lösungen

Und wir haben dasselbe in unserer Datumstabelle mit der Kalendertabelle, dem Monat, der Monatssortierung und dem Quartal. Das bedeutet, dass wir das Quartal oder den Monat entweder aus der Datumstabelle oder der ersten Tabelle auswählen können. 

Die CALCULATE DAX-Funktion: Probleme und Lösungen

Die gute Nachricht bei Average Per Category ist, dass es tatsächlich unabhängig davon funktioniert, ob Sie ein Einzeltabellenmodell oder ein Sternschema haben.

In diesen Bildern verwenden wir das Viertel aus der ersten Tabelle ...

Die CALCULATE DAX-Funktion: Probleme und Lösungen

 …während dieses das Quartal aus unserer Datumstabelle verwendet. Es funktioniert so oder so. 

Die CALCULATE DAX-Funktion: Probleme und Lösungen

Aber das Problem mit dem Durchschnitt pro Kategorie ist einfach der DAX-Code. 

Die CALCULATE DAX-Funktion: Probleme und Lösungen

Dieser DAX-Code ist seltsam, denn selbst wenn Sie ein DAX-Experte sind, wird er Sie wahrscheinlich auf den ersten Blick verwirren. Es ist seltsamerweise mit einer CALCULATE-Anweisung ohne Filterklausel aufgebaut und umschließt lediglich eine Summenanweisung. 

Tatsächlich ist es einer meiner Lieblingsnerven, wenn ich in den Foren Leute sehe, die CALCULATE verwenden, die ohne Grund einfach eine Summe umrechnen. Aber in diesem Fall hat es tatsächlich einen Grund.

Es verwirrt mich jedes Mal, wenn ich diese sehe, weil es nur ein unmittelbarer Hinweis darauf ist, dass sie keine Ahnung haben, was sie mit der CALCULATE-Funktion machen. Ich empfehle daher, einfach die Finger davon zu lassen. 

DAX-Code für Durchschnitt pro Kategorie

Der oben gezeigte DAX-Code verwendet . Diese Funktion befindet sich nicht in einem CALCULATE-Segment, was sie wiederum seltsam macht. Angeblich ist diese Funktion basierend auf ihrer Dokumentation für die Verwendung in CALCULATE-Anweisungen konzipiert.

Der Code verwendet auch , womit ich nicht einverstanden bin. Sie sollten niemals VALUES verwenden, da unterschiedliche Werte dazu neigen, eine leere Zeile zurückzugeben, wenn eine nicht übereinstimmende Zeile vorhanden ist. Das kann Sie in große Schwierigkeiten bringen, aber das ist ein Thema für ein anderes Video.

Im Wesentlichen geht es hier darum, dass sie eine VALUES-Funktion verwenden, um alle unsere Kategorien abzurufen. Im ersten Quartal sind das beispielsweise Januar, Februar und März. VALUES gibt ebenfalls eine Tabelle zurück, aber sie verwenden eine KEEPFILTER-Anweisung, um sie als ersten Parameter in gültig zu machen . 

Sie behalten auch die CALCULATE-Funktion bei, um sie im Kontext von KEEPFILTERS auszuführen. Aufgrund der Funktionsweise von AVERAGEX nimmt es den zweiten Ausdruck und führt ihn im Kontext des ersten Ausdrucks aus. 

Was ist dann das Problem?

Insgesamt funktioniert es gut, aber nicht für jemanden, der neu bei DAX ist. Ich glaube, dass Microsoft bei der Entwicklung dieses Schnellmaßstabs wirklich den Anschluss verpasst hat, denn Schnellmaßstäbe sind angeblich für DAX-Neulinge gedacht.

Schnelle Kennzahlen sind eine tolle Idee, wie zum Beispiel „Lassen Sie uns einige gängige Kennzahlen mit unterschiedlichen Berechnungen für Sie schreiben, weil Sie neu bei DAX sind und nicht alles wissen, was es über DAX zu wissen gibt.“ Aber warum sollten sie sie auf so seltsame und komplizierte Weise konstruieren? 

Wie soll jemand, der neu im DAX ist, einen Blick darauf werfen und herausfinden, was los ist, wenn selbst wahrscheinlich DAX-Profis sich darüber ein wenig den Kopf zerbrechen? 

Für mich haben sie also eine einmalige Gelegenheit verpasst, Menschen mit ihren schnellen Maßnahmen beim Erlernen von DAX zu helfen, indem sie darauf bestanden, dass sie CALCULATE einbeziehen und durch Hürden springen mussten, um CALCULATE dorthin zu bringen. 

Die einfachere Lösung

Verwenden der SUMMARIZE-Funktion

Wie ich bereits erwähnt habe, gibt es einen besseren und einfacheren Weg, dies zu tun.

Erstellen Sie zunächst eine Tabellenvariable mit VAR_Table . Dann verwenden wir um die Tabelle zu übernehmen, sie nach Monat zusammenzufassen, eine Wertspalte zu erstellen und unsere Werte zusammenzufassen.

Zum Schluss ermitteln wir den Durchschnitt unserer Werte mit der Funktion AVERAGEX

Die CALCULATE DAX-Funktion: Probleme und Lösungen

Dieser Code ist einfacher und viel logischer. Es enthält nicht CALCULATE, das Sie sowieso nicht benötigen. 

Möglicherweise stoßen Sie auf einen Blog-Artikel, in dem SUMMARIZE kritisiert wird. Der Blog sagt, dass die Art und Weise, wie SUMMARIZE intern funktioniert, ziemlich kompliziert ist.

Es deutet auch darauf hin, dass Sie in einem bestimmten Fall in Schwierigkeiten geraten können, aber nie in Schwierigkeiten geraten. Das würde nur passieren, wenn Ihre Berechnung eine sehr komplexe Berechnung und eine sehr große Tabelle beinhaltet. Nur dann liefert SUMMARIZE seltsame Ergebnisse. 

Zumindest behauptet das der Blogartikel. Und es ist in Ordnung, wenn Sie vor SUMMARIZE zurückschrecken möchten. Verwenden Sie in diesem Fall stattdessen die Funktion.

Verwenden der GROUPBY-Funktion

Niemand hat ein Problem mit der Verwendung der GROUPBY-Funktion, also lernen wir auch, wie man sie verwendet. Erstellen Sie erneut eine Tabellenvariable mit VAR_Table. Dann GROUPBY Month und erstellen Sie eine Wertspalte.

Als nächstes wenden wir mit CURRENTGROUP an , so funktioniert GROUPBY. Summieren wir unseren Wert und ziehen wir erneut den DURCHSCHNITTEX darüber. 

Unser Code sollte so aussehen.

Die CALCULATE DAX-Funktion: Probleme und Lösungen

Vergleich der Ergebnisse: SUMMARIZE vs. GROUPBY vs. CALCULATE DAX-Funktionen

Sehen wir uns nun an, ob die von uns verwendeten Verknüpfungen dieselben Ergebnisse liefern. 

Wie Sie in den Bildern unten sehen können, geben sowohl SUMMARIZE mit der Bezeichnung „ Besserer Durchschnitt pro Kategorie“ als auch GROUPBY mit der Bezeichnung „ Besserer Durchschnitt pro Kategorie 2“ die gleichen Zahlen zurück. 

Die CALCULATE DAX-Funktion: Probleme und Lösungen

Unsere beiden Formeln geben 3,4K für Q1, 3,6K für Q2, 3,4K für Q3 und 3,5K für Q4 zurück. Und wieder arbeiten sie in einem einzigen Tabellendatenmodell und verwenden Quarters für unsere Tabelle.

Sie funktionieren auch in einem Sternschema, bei dem wir Viertel in unserer Datumstabelle verwenden. 

Die CALCULATE DAX-Funktion: Probleme und Lösungen


Schnelle Maßnahmen – wie man sie in LuckyTemplates-Modellen verwendet.
Verwenden der Berechnungsfunktion in LuckyTemplates.
Effektive Möglichkeiten zur Verwendung der GROUPBY-Funktion in LuckyTemplates

Abschluss

Wir müssen uns nicht in eine verdrehte Kontextlogik zwingen, nur um CALCULATE in unsere Formeln zu integrieren. Verwenden Sie einfach einfache Standard-DAX-Funktionen und Sie können das Gleiche erreichen. 

Tatsächlich gibt es wahrscheinlich in 80–90 % der Fälle absolut keinen Grund, sich die Mühe zu machen, CALCULATE für irgendetwas zu verwenden. Stattdessen können Sie die Funktionen SUMMARIZE und GROUPBY verwenden, die einfacher und logischer sind.

Wenn Sie diese PBIX-Datei erkunden möchten, habe ich sie bereits in der Quick Measures Gallery veröffentlicht und der Datei den Namen Better Average Per Category gegeben . Scrollen Sie einfach ganz nach unten auf der Seite, um die PBIX-Datei zu finden, die Sie herunterladen können, und spielen Sie mit sich selbst. 

Alles Gute,

Greg Deckler


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