Maximierung der Leistung von DAX-Zeitintelligenzfunktionen für den aktuellen Zeitraum in Power BI (2023)

Die effektive Nutzung von Zeitintelligenzfunktionen wie Monat-zu-Datum (MTD), Quartal-zu-Datum (QTD) und Jahr-zu-Datum (YTD) in DAX hängt stark vom aktuellen Filterkontext ab. Diese Funktionen sind anpassungsfähig für verschiedene Zeiträume und eignen sich gut für Vergleiche. Doch wenn es darum geht, die neuesten Daten für den "aktuellen" Zeitraum zu präsentieren, entstehen Komplikationen, wenn der richtige Filter fehlt.

Gewünschte Ergebnisdarstellung

Betrachten wir beispielsweise einen Bericht, in dem die auf Monatsebene angezeigten Werte im Mai 2019 die MTD-Berechnung ab dem 1. Mai 2019 darstellen. Da Mai 2019 zum zweiten Quartal 2019 (Q2) gehört, beginnt die QTD-Berechnung am 1. April 2019, und die YTD-Berechnung startet am 1. Januar 2019.

Die letzte verfügbare Datenstelle in unserem Beispiel ist jedoch der 11. März 2020, wenn die letzte Lieferung erfolgte. Daher können wir annehmen, dass der 11. März 2020 als das letzte verfügbare Datum oder "gestern" betrachtet werden kann.

Gewünschte Visualisierung der Ergebnisse

Eine häufige Anforderung besteht darin, ein Dashboard zu erstellen, das Daten für den "aktuellen" Zeitraum zeigt: Die MTD-Berechnung entspricht dem Betrag für den "aktuellen" Monat, die QTD-Berechnung entspricht dem "aktuellen" Quartal, und die YTD-Berechnung entspricht dem "aktuellen" Jahr.

Die Zahlen in der ersten Zeile der Kartenvisualisierung (alle betreffen den Umsatzbetrag) entsprechen den Werten, die im vorherigen Screenshot mit einer Matrix für März 2020 angezeigt werden. Das Kartenvisualisierung (oder in einigen Fällen die gesamte Seite) muss mithilfe des letzten Transaktionsdatums aus der Verkaufstabelle gefiltert werden, um die gewünschten Ergebnisse zu präsentieren.

Festlegen des richtigen Filterkontexts

Eine gängige Methode ist die Verwendung eines Relative-Date-Schneiders in Power BI. Durch Einstellen von "Dieser Tag" oder "Dieser Monat" erhalten Sie eine Auswahl, die das aktuelle Datum als Filter anwendet.

Es gibt jedoch viele Einschränkungen bei dieser Methode:

  • Durch die Verwendung von "Dieser Tag" sehen Sie keine Daten für das aktuelle Datum, wenn die Daten bis zum vorherigen Datum aktualisiert werden. In diesem Fall könnten Sie überlegen, "Letzte 2 Tage" zu verwenden, aber es funktioniert nicht gut an einem Montag, wenn es keine Transaktionen über das Wochenende gibt.
  • Durch die Verwendung von "Dieser Monat" sehen Sie am ersten Tag des Monats keine Daten, wenn das Modell jede Nacht aktualisiert wird. In diesem Fall möchten Sie möglicherweise die Werte des letzten Monats analysieren, weil Sie noch keine Daten für den aktuellen Monat haben.
  • Durch die Verwendung von "Dieser Monat" setzen Sie ein maximales Datum, das dem letzten Tag des Monats entspricht. Dieser Filter kann einen Vergleich von Monat-zu-Datum über den vorherigen Monat-zu-Datum brechen, was nur 14 Tage im vorherigen Monat berücksichtigen sollte, wenn der aktuelle Monat nur 14 Tage mit Daten hat - es sei denn, Sie haben die richtige DAX-Musterberechnung implementiert.

Im Allgemeinen kann die Auswahl eines Datums basierend auf der TODAY-Funktion in DAX als Referenzdatum und anschließendes Anwenden eines Filters auf die Date[Date]-Spalte die oben beschriebenen Einschränkungen des Relative-Date-Schneiders aufweisen.

Setzen des korrekten Filterkontexts

Aus diesen Gründen betrachten wir zwei mögliche Ansätze: einen basierend auf einer berechneten Spalte in der Datentabelle und den anderen basierend auf einer Berechnungsgruppe.

Verwendung einer berechneten Spalte in der Datentabelle

Durch die Erstellung einer berechneten Spalte CurrentDate in der Datentabelle können wir effizient das neueste Datum mit Transaktionsdaten mit einem spezifischen String identifizieren: LastDateWithData. Wir können einen visuellen oder Seitentextfilter anwenden, indem wir diesen Wert für die Spalte auswählen. Der Wert LastDateWithData wird bei jedem Refresh auf das richtige Datum verschoben und wird somit die richtige Referenz für unsere Zeitintelligenzfunktionen.

Die berechnete Spalte CurrentDate stützt sich auf die Spalte DateWithTransaction, die Sie automatisch in einer von Bravo für Power BI generierten Datentabelle erhalten. Wenn Sie eine andere Datentabelle verwenden, können Sie die Spalte DateWithTransaction durch Hinzufügen der folgenden berechneten Spalte erhalten:

Berechnete Spalte in der Datentabelle
DateWithTransactions = 
    VAR __LastTransactionDate = 
        MAXX ( 
            { MAX ( 'Sales'[Order Date] ), MAX ( 'Sales'[Delivery Date] ) }, 
            [Value]
        )
    RETURN 'Date'[Date] <= __LastTransactionDate

Die Formel für die berechnete Spalte CurrentDate lautet:

Berechnete Spalte in der Datentabelle
CurrentDate = 
    VAR LastDateWithData = 
        CALCULATE ( 
            MAX ( 'Date'[Date] ), 
            'Date'[DateWithTransactions] = TRUE, 
            REMOVEFILTERS ()
        )
    RETURN IF ( LastDateWithData == 'Date'[Date], "LastDateWithData" )

Die Variable LastDateWithData ruft das maximale Datum (MAX('Date'[Date])) ab, an dem Transaktionen vorhanden sind ('Date'[DateWithTransactions] = TRUE). Die Funktion REMOVEFILTERS stellt sicher, dass diese Berechnung über die gesamte Datentabelle erfolgt und den Kontextübergang aufgrund der CALCULATE-Funktion in der berechneten Spalte ignoriert.

Sobald die Variable LastDateWithData das Datum der letzten Transaktion enthält, überprüft die RETURN-Anweisung jede Zeile der Datentabelle, um festzustellen, ob ihr Datum mit dem LastDateWithData übereinstimmt. Bei Übereinstimmung kennzeichnet sie diese Zeile mit "LastDateWithData".

References

Top Articles
Latest Posts
Article information

Author: Dong Thiel

Last Updated: 06/12/2023

Views: 5909

Rating: 4.9 / 5 (59 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Dong Thiel

Birthday: 2001-07-14

Address: 2865 Kasha Unions, West Corrinne, AK 05708-1071

Phone: +3512198379449

Job: Design Planner

Hobby: Graffiti, Foreign language learning, Gambling, Metalworking, Rowing, Sculling, Sewing

Introduction: My name is Dong Thiel, I am a brainy, happy, tasty, lively, splendid, talented, cooperative person who loves writing and wants to share my knowledge and understanding with you.