Wöchentliche DAX-Berechnungen – Probleme mit der Zeitintelligenz in LuckyTemplates

Wöchentliche DAX-Berechnungen – Probleme mit der Zeitintelligenz in LuckyTemplates

Im heutigen Tutorial stelle ich einige Techniken und Tipps zum Umgang mit häufigen Problemen bereit, die durch die wöchentliche DAX-Granularität in Zeitintelligenzberechnungen verursacht werden. Das vollständige Video dieses Tutorials können Sie unten in diesem Blog ansehen.

Ich habe kürzlich ein Tutorial zum Abrufen der Werte der vorherigen Woche in LuckyTemplates erstellt. Seitdem habe ich mehrere Fragen zum Thema Zeitintelligenz und insbesondere zu DAX-Wochenwerten. Das ist nicht überraschend, da Wochen wirklich die am schlechtesten funktionierende Granularität im Bereich der Zeitintelligenz sind.

Bei Monaten hat man immer 12 Monate im Jahr. Bei Vierteln hat man immer vier Viertel. Wochen sind anders, weil die Woche sieben Tage und das Jahr 52 Wochen hat – das sind 364 Tage. Sie haben also einen zusätzlichen Tag da draußen. In Schaltjahren haben Sie zwei zusätzliche Tage.

Basierend auf dem Nummerierungsschema für die ISO-Wochennummer beträgt das tatsächlich in manchen Jahren manchmal 52 Wochen, manchmal 53 Wochen. Woche 53 ist die Woche, die die meisten Probleme verursachen wird.

Inhaltsverzeichnis

Zeitintelligenzprobleme einer wöchentlichen DAX-Berechnung

In diesem Beispiel verwende ich den Gesamtspotpreis. Mit Summen ist es einfacher, sie zu visualisieren und darüber zu sprechen.

Wöchentliche DAX-Berechnungen – Probleme mit der Zeitintelligenz in LuckyTemplates

In diesem Fall möchten wir für jedes Jahr eine Zeile für Woche 53 anzeigen, unabhängig davon, ob es in diesem Jahr eine Woche 53 gab oder nicht. Sie können also sehen, dass es in den Jahren 2018 und 2019 keine Woche 53 gibt, im Jahr 2020 jedoch schon. Wir möchten, dass es konsistent ist, sodass jedes Jahr die 53. Zeile vorhanden ist. Aber dann wäre die Metrik für die Jahre leer, in denen es kein 53. Jahr gab.

Eine gängige Vorgehensweise besteht darin, Elemente ohne Daten anzeigen zu aktivieren und sicherzustellen, dass diese Option aktiviert ist. In diesem Fall ist es aktiviert, aber es wird nicht helfen, da es funktioniert, wenn Sie eine physische Zeile haben, dieser Zeile jedoch keine Daten zugeordnet sind. In diesem Fall haben wir nicht einmal die Zeile.

Wöchentliche DAX-Berechnungen – Probleme mit der Zeitintelligenz in LuckyTemplates

Techniken wie die Verwendung von oder „Filter entfernen“ funktionieren nicht, da nichts zu entfernen ist. Der Filter für diese Zeile existiert einfach nicht. Die Frage ist also: Wie fügen wir diese Zeile in jedes Jahr ein, in dem sie nicht existiert? Und dann wird dies tatsächlich zu einem Datenmodellierungsproblem.

Eines der Dinge, die wir möglicherweise tun können, ist ein Schneeflockenschema, bei dem wir die Datumstabelle nach etwas filtern, das jedes Jahr die 53. Woche in unser Bild einfügt. Die Funktion, die mir dazu einfällt, ist .

Wöchentliche DAX-Berechnungen – Probleme mit der Zeitintelligenz in LuckyTemplates

CROSSJOIN wird verwendet, um zwei Felder miteinander abzugleichen, die möglicherweise eine Beziehung haben oder nicht. oder oder anderen Tabellenfunktionen müssen sie keine Beziehung haben .

In diesem Fall nimmt CROSSJOIN zwei Spalten und erstellt jede Kombination dieser beiden Spalten, unabhängig davon, ob diese im Datensatz vorhanden ist oder nicht. Genau das wollen wir.

Wir haben unsere , um aus der Spalte eine Tabelle zu erstellen. CROSSJOIN nimmt zwei Tabellen und dann WERTE für die ISO-Wochennummer, und wir gleichen diese einfach zusammen. Das ergibt für uns 53 Wochen pro Jahr.

Und dann fügen wir der Tabelle eine dritte Spalte hinzu. Wir könnten dies in Power Query tun, aber es ist einfacher, Ihnen die Logik in DAX zu zeigen. Was wir hier tun, ist, dass wir tatsächlich das Jahr nehmen und es mit einem Bindestrich und dann die Wochennummer verketten, sodass wir ein Schlüsselfeld haben, um es mit der Datumstabelle zu verbinden.

Wöchentliche DAX-Berechnungen – Probleme mit der Zeitintelligenz in LuckyTemplates

Allerdings müssen wir hier noch etwas mehr Arbeit leisten, da das Schlüsselfeld in der Datumstabelle so funktioniert, dass es aus einem vierstelligen Jahres-Bindestrich und dann einer zweistelligen Woche besteht. Wenn die ISO-Wochennummer also zweistellig ist, können wir einfach die einfache Verkettung durchführen. In Fällen, in denen es sich um eine Ziffer handelt, müssen wir die Jahreszahl nehmen und diese dann mit einem Bindestrich, dann einer führenden Null und dann der Wochenzahl verketten.

Sobald wir das haben, können wir diese Tabelle im Datenmodell verwenden und unsere Spalte „Woche und Jahr“ finden. Dann verbinden wir sie in einer Eins-zu-Viele-Beziehung. Ich schalte diese Option immer gerne ein. Zugehörige Felder oben auf der Karte anpinnen , damit wir sie sofort sehen können, wenn wir sie überprüfen.

Wöchentliche DAX-Berechnungen – Probleme mit der Zeitintelligenz in LuckyTemplates

Wenn wir zum Visuellen zurückkehren, müssen wir die Zeilen ändern. Anstelle der Jahres- und Wochennummer möchten wir die Jahres- und Wochennummer aus der CROSSJOIN-Tabelle verwenden. Und jetzt haben wir die 53. Woche im Jahr 2018 mit einer Lücke und die 53. Woche im Jahr 2019 mit einer Lücke. Im Jahr 2020 haben wir eine tatsächliche Zahl, da es die 53. Woche gibt.

Wöchentliche DAX-Berechnungen – Probleme mit der Zeitintelligenz in LuckyTemplates

Wir könnten hier aufhören, wenn wir nicht das Star-Schema-Modell verlassen hätten. Jedes Mal, wenn Sie sich vom Star-Schema in LuckyTemplates entfernen, verlassen Sie den Bereich dessen, was allgemein als Best Practice gilt.

Für Snowflake Schema handelt es sich also nicht um einen großen Verstoß. Es gibt Fälle, in denen Sie es auf jeden Fall verwenden möchten, aber wenn Sie es vermeiden können, versuchen Sie es. Es reduziert zwar die Duplizierung, aber nicht unbedingt die Größe. Sie können zwar direkte Zählmaße verwenden, es gibt jedoch Leistungsprobleme und potenzielle Benutzerfreundlichkeitsprobleme, und die DAX-Komplexität nimmt definitiv zu. Es hindert Sie daran, Hierarchien über Tabellen hinweg aufzubauen, und das wahrscheinlich größte Problem besteht darin, dass es Ihre Fähigkeit, Slicer über verschiedene Felder hinweg zu synchronisieren, wirklich beeinträchtigen kann.

Obwohl dies das Problem löst, geschieht dies auf eine Art und Weise, die nicht besonders gut ist. Mal sehen, ob wir es besser machen können. Lassen Sie uns in ein anderes Datenmodell springen. In diesem Modell habe ich genau die gleichen Daten, die Daten und den Spotpreis verwendet, aber dieses Mal habe ich die CROSSJOIN-Tabelle entfernt. Es existiert noch, ist aber nicht verbunden.

Wöchentliche DAX-Berechnungen – Probleme mit der Zeitintelligenz in LuckyTemplates

Aber wenn wir uns den DAX ansehen, werden wir sehen, dass es genau derselbe DAX ist, der diese Tabelle im anderen Bericht erstellt hat. Anstatt es also in einer physischen Beziehung zu verbinden und dann das Sternschema zu verletzen und es in ein Snowflake-Schema umzuwandeln, können wir das Sternschema beibehalten und einfach eine virtuelle Beziehung verwenden.

Wöchentliche DAX-Berechnungen – Probleme mit der Zeitintelligenz in LuckyTemplates

Dazu verwenden wir eine Funktion namens . Es stellt diese Beziehung zwischen Tabellen her, aber virtuell. Wir machen das mit , weil wir den Kontext ändern werden. In diesem Fall bezieht sich der Kontext auf die Beziehung. Wir haben also unseren Gesamt-Spotpreis und dann haben wir TREATAS. Wir haben die , diese Spalte in eine Tabelle umzuwandeln.

Und dann haben wir das Feld „Jahr und Woche“, den Schlüssel, den wir erstellt haben. Wir haben das virtuell mit Woche und Jahr in der Datumstabelle verknüpft. Jetzt haben wir also die Crossjoint-Tabelle, die die Dates-Tabelle auf die gleiche Weise filtert wie damals, als wir eine physische Beziehung hatten, aber ohne das Star-Schema zu verletzen.

Wöchentliche DAX-Berechnungen – Probleme mit der Zeitintelligenz in LuckyTemplates

Wir können nun die Gesamt-Spotpreis-TREATAS übernehmen und in die Matrix einfügen, und wir sehen genau die gleichen Gesamtwerte. Auf diese Weise haben wir dies geschafft, ohne unser Datenmodell zu stören und uns die Nachteile zuzuziehen, über die wir im Zusammenhang mit dem Snowflake-Schema gesprochen haben.

Wöchentliche DAX-Berechnungen – Probleme mit der Zeitintelligenz in LuckyTemplates


Erhalten Sie LuckyTemplates-Werte der vorherigen Woche mithilfe von DAX und Power Query.
Berechnen Sie wöchentliche Verkäufe mit DAX in LuckyTemplates.
Zeitintelligenz in DAX: So wählen Sie den Startzeitraum dynamisch aus

Abschluss

In diesem Tutorial habe ich Ihnen einige Möglichkeiten gezeigt, wie Sie das Problem der wöchentlichen DAX-Berechnung in LuckyTemplates lösen können. Eine davon ist die Verwendung von CROSSJOIN, aber es hat einige Nachteile. Der zweite Weg besteht darin, TREATAS zu verwenden, eine virtuelle Beziehung zu schaffen und den Star-Schema-Ansatz nicht zu verletzen.

Das ist eine Technik, die sehr nützlich ist, um das Problem der Woche 53 zu lösen. Ich hoffe, dass Sie das nützlich fanden. Ich möchte Ihre Meinung dazu erfahren. Lass es mich unten in den Kommentaren wissen.

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