Ein Leser hat mir über meinen Frage-Service folgende Frage zukommen lassen:
Kann man mit einer DAX-Lösung Daten auf lückenlose Zeiträume prüfen?
Als Beispiel:
Wurden durch einen Filter die Monate Februar, März und April ausgewählt, dann wäre dieser Zeitraum ohne Unterbrechung und ich bräuchte ein TRUE.
Wären dagegen die Zeiträume Juni und August ausgewählt, bekomme ich ein FALSE.
Über eine Lösung würde ich mich sehr freuen
Das Measure
Ja das geht. Ich zeige nun des Measure, mit welchem Sie auf lückenlose Zeiträume prüfen können. Anschließend werde ich es ausführlich erklären. Weiter unten können Sie den Bericht auch direkt im Browser testen und die Datei herunterladen.
Lückenloser Zeitraum =
VAR vZeitraum_Ausgewaehlt =
VALUES(Kalender[Datum])
VAR vZeitraum_Serie =
GENERATESERIES(MIN(Kalender[Datum]), MAX(Kalender[Datum]), 1)
RETURN
IF(
COUNTROWS(EXCEPT(vZeitraum_Serie, vZeitraum_Ausgewaehlt)) = 0,
true,
false
)
Die Idee
Wir vergleichen die Datumsangaben im aktuellen Filterkontext mit einer lückenlosen Serie von Datumsangaben, die wir basierend auf dem kleinsten und dem größten Datum erzeugen.
Der ausgewählte Zeitraum, der geprüft werden soll
VAR vZeitraum_Ausgewaehlt =
VALUES(Kalender[Datum])
Die Funktion VALUES erzeugt eine einspaltige Tabelle, welche alle Datumsangaben beinhaltet, die im Berichtsfilter enthalten sind.
Die lückenlose Serie für den Vergleich:
VAR vZeitraum_Serie =
GENERATESERIES(MIN(Kalender[Datum]), MAX(Kalender[Datum]), 1)
Mit der Funktion GENERATESERIES kann ich eine Serie von Datumsangaben erzeugen. MIN stellt mir dafür das kleinste und MAX das größte Datum zur Verfügung. Mit der "1" im 3. Argument weise ich die Funktion an, die Datumsangaben in der Serie jeweils um das Inkrement 1 zu erhöhen.
Die folgende Grafik erklärt an einem Beispiel, wie GENERATESERIES eine Serie von Datumsangaben erzeugt:
Der Vergleich der beiden Zeiträume:
IF(
COUNTROWS(EXCEPT(vZeitraum_Serie, vZeitraum_Ausgewaehlt)) = 0,
true,
false
)
Mit EXCEPT bilde ich die Differenzmenge. D. h., ich entferne aus der Serie alle Datumsangaben, die im gewählten Zeitraum enthalten sind. Sollte dieser lückenlos sein, dann muss er genauso viele Datumsangaben enthalten, wie die Serie. Die Differenzmenge ist dann also leer.
Die folgende Grafik beschreibt, was eine Differenzmenge ist:
Die Funktion COUNTROWS zählt die Zeilen in der von EXCEPT zurückgegebenen Tabelle. Ist das Ergebnis 0, dann ist der gewählte Zeitraum lückenlos. Im anderen Fall, wenn also noch Datumsangaben der Serie „übrig sind“, dann ist der Zeitraum nicht lückenlos.
Ausführliche Erklärungen
Beispiel 1: Gewählt ist Mai 2024 - Identische Zeiträume
Wähle ich den Mai 2024, dann sind der ausgewählte Zeitraum und die Serie gleich.
In Power BI habe ich jeweils einmal die gewählten Datumsangaben (grüner Kasten) und die Datumsangaben in der Serie (grauer Kasten) ausgegeben:
Beispiel 2: Gewählt sind Mai und Juni 2024 - Identische Zeiträume
Nun wähle ich die Monate Mai und Juni im Jahr 2024. Auch hier sind die beiden Zeiträume identisch, da der Juni direkt auf den Mai folgt.
Im Bericht sehen wir, dass auch hier die beiden Zeiträume identisch sind.
Beispiel 3: Gewählt sind Mai und Oktober 2024 - Nicht-identische Zeiträume
Nun wähle ich die Monate Mai und Oktober 2024. Dieses Mal sind die beiden Zeiträume nicht mehr identisch. Der gewählte Zeitraum beinhaltet tatsächlich nur die Tage aus diesen beiden Monaten. Die Serie umfasst dagegen lückenlos alle Datumsangaben von Mai bis Oktober.
Im Bericht sehen Sie dies noch deutlicher:
Beispiel 4: Gewählt ist nur der Mai - Nicht-identische Zeiträume
Ich möchte zum Abschluss noch einen Sonderfall vorstellen. Wähle ich nur den Mai, dann sind im gewählten Zeitraum alle Datumsangaben aus Mai 2023 und Mai 2024 enthalten. Die Serie enthält jedoch fortlaufend alle Datumsangaben von Mai 2023 bis Mai 2024. Auch diesen Fall wird das Measure also als nicht lückenlosen Zeitraum identifizieren (was er ja auch ist).
Im Bericht sehen Sie wieder deutlich, dass der ausgewählte Zeitraum und die lückenlose Serie nicht identisch sind:
Probieren Sie es selbst!
Hier ist der Power BI-Bericht, den Sie nun direkt selbst testen können:
Den Bericht können Sie auch kostenfrei herunterladen: