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:
![In einem grünen Kasten steht eine DAX-Anweisung mit GENERATESERIES. Daneben steht die Tabelle mit der erzeugten Serie von Datumsangaben.](https://jantrummel.de/wp-content/uploads/2024/05/power-bi-luecken-in-zeitraeumen-finden-serie-mit-generateseries-beispiel.jpg)
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:
![Zu sehen sind 2 Tabelle sowie eine Tabelle mit der Differenzmenge.](https://jantrummel.de/wp-content/uploads/2024/05/power-bi-luecken-in-zeitraeumen-finden-differenzmenge-mit-except-beispiel.jpg)
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 jeweils einem Datenschnitt in Power BI sind das Jahr 2024 und der Monat Mai ausgewählt. Ein Textkasten zeigt, dass der gewählte Zeitraum und die Serie identisch sind.](https://jantrummel.de/wp-content/uploads/2024/05/power-bi-luecken-in-zeitraeumen-finden-beispiel-1-mai-2024.jpg)
In Power BI habe ich jeweils einmal die gewählten Datumsangaben (grüner Kasten) und die Datumsangaben in der Serie (grauer Kasten) ausgegeben:
![In jeweils einem Datenschnitt in Power BI sind das Jahr 2024 und der Monat Mai ausgewählt. In 2 Karten-Visualisierungen sehen wir die Datumsangaben des gewählten Zeitraums und die der Serie. Beide sind identisch.](https://jantrummel.de/wp-content/uploads/2024/05/power-bi-luecken-in-zeitraeumen-finden-beispiel-1-mai-2024-bericht-1024x407.jpg)
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.
![In jeweils einem Datenschnitt in Power BI sind das Jahr 2024 und die Monate Mai und Juni ausgewählt. Ein Textkasten zeigt, dass der gewählte Zeitraum und die Serie auch hier identisch sind.](https://jantrummel.de/wp-content/uploads/2024/05/power-bi-luecken-in-zeitraeumen-finden-beispiel-2-mai-und-juni-2024.jpg)
Im Bericht sehen wir, dass auch hier die beiden Zeiträume identisch sind.
![In jeweils einem Datenschnitt in Power BI sind das Jahr 2024 und die Monate Mai und Juni ausgewählt. In 2 Karten-Visualisierungen sehen wir die Datumsangaben des gewählten Zeitraums und die der Serie. Beide sind auch hier identisch.](https://jantrummel.de/wp-content/uploads/2024/05/power-bi-luecken-in-zeitraeumen-finden-beispiel-2-mai-und-juni-2024-bericht-1024x410.jpg)
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.
![In jeweils einem Datenschnitt in Power BI sind das Jahr 2024 und die Monate Mai und Oktober ausgewählt. Ein Textkasten zeigt, dass der gewählte Zeitraum und die Serie hier nicht mehr identisch sind.](https://jantrummel.de/wp-content/uploads/2024/05/power-bi-luecken-in-zeitraeumen-finden-beispiel-3-mai-und-oktober-2024.jpg)
Im Bericht sehen Sie dies noch deutlicher:
![In jeweils einem Datenschnitt in Power BI sind das Jahr 2024 und die Monate Mai und Oktober ausgewählt. In 2 Karten-Visualisierungen sehen wir die Datumsangaben des gewählten Zeitraums und die der Serie. Beide sind nicht mehr identisch.](https://jantrummel.de/wp-content/uploads/2024/05/power-bi-luecken-in-zeitraeumen-finden-beispiel-3-mai-und-oktober-2024-bericht-1024x491.jpg)
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 Datenschnitt in Power BI ist nur der Mai ausgewählt. Im Datenschnitt für das Jahr ist nichts gewählt. Der Textkasten zeigt, dass auch hier die gewählten Zeiträume nicht identisch sind.](https://jantrummel.de/wp-content/uploads/2024/05/power-bi-luecken-in-zeitraeumen-finden-beispiel-4-mai.jpg)
Im Bericht sehen Sie wieder deutlich, dass der ausgewählte Zeitraum und die lückenlose Serie nicht identisch sind:
![Im Datenschnitt in Power BI ist nur der Mai ausgewählt. Im Datenschnitt für das Jahr ist nichts gewählt. die beiden Karten-Visualisierungen zeigen auch hier deutlich, dass der gewählte Zeitraum nicht lückenlos ist.](https://jantrummel.de/wp-content/uploads/2024/05/power-bi-luecken-in-zeitraeumen-finden-beispiel-4-mai-bericht-1024x575.jpg)
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: