Datenprüfung Archive | THE SELF-SERVICE-BI BLOG Wir lieben Microsoft Power BI Mon, 14 Apr 2025 07:37:05 +0000 de hourly 1 https://wordpress.org/?v=6.8 https://ssbi-blog.de/wp-content/uploads/2019/10/Favicon-150x150.png Datenprüfung Archive | THE SELF-SERVICE-BI BLOG 32 32 Daten auf lückenlose Zeiträume prüfen, Teil 2 https://ssbi-blog.de/blog/business-topics/daten-auf-lueckenlose-zeitraeume-pruefen-teil-2/ Mon, 05 Feb 2018 15:00:59 +0000 http://ssbi-blog.de/?p=3030 Dies ist der zweite Teil meines Beitrags über die Datenprüfung zu lückenlos gepflegten Zeiträumen. Falls Du den ersten Teil noch nicht gelesen haben solltest, solltest Du dies jetzt tun, denn dieser Teil schließt nahtlos an den ersten Teil an. Im aktuellen Beitrag komplettiere ich alle notwendigen Schritte, um eine automatisierte Prüfung von in Excel befindlichen […]

Der Beitrag Daten auf lückenlose Zeiträume prüfen, Teil 2 erschien zuerst auf THE SELF-SERVICE-BI BLOG.

]]>
Dies ist der zweite Teil meines Beitrags über die Datenprüfung zu lückenlos gepflegten Zeiträumen. Falls Du den ersten Teil noch nicht gelesen haben solltest, solltest Du dies jetzt tun, denn dieser Teil schließt nahtlos an den ersten Teil an. Im aktuellen Beitrag komplettiere ich alle notwendigen Schritte, um eine automatisierte Prüfung von in Excel befindlichen Daten vornehmen zu können – mittels Power Query.

Als Abonnent meines Newsletters erhältst Du die Beispieldateien zu den Beiträgen dazu. Hier geht’s zum Abonnement des Newsletters!

 5. Die Fehlerermittlung

Die Fehlerermittlung teilt sich in zwei Teile: Die Ermittlung fehlender Datumseinträge und die Ermittlung mehrfach gepflegter Datumseinträge. Ich beginne mit fehlenden Datumswerten.

Welches Datum fehlt?

Für die Ermittlung fehlender Werte erzeuge ich eine neue Spalte und nutze dann die folgende Funktion:

Fehlende Werte in den Istdaten ermitteln, Power Query, Power BI Desktop
Fehlende Werte in den Istdaten ermitteln
Die fehlenden Istwerte des Projektes P002, Power Query, Power BI Desktop
Die fehlenden Istwerte des Projektes P002

List.Difference() benötigt als Parameter zwei Listen und prüft hierbei, welche Werte der ersten Liste (hier die Solldaten) in der zweiten Liste (die Istdaten) fehlen. Also genau das, was ich benötige. Das Ergebnis sieht dann wie folgt aus:

Für das Projekt P002 wurden die Tage 02.04.-04.04.2016 nicht gepflegt und diese Werte werden nun in der entsprechenden Liste ausgewiesen! Das erste Problem wäre also erledigt. Doch wie sieht es jetzt mit den mehrfach gepflegten Werten aus?

Welches Datum wurde mehrfach gepflegt?

Um die mehrfach gepflegten Werte ausfindig zu machen, benutze ich dieselbe Funktion List.Difference(), doch jetzt füge ich die Parameter in umgekehrter Reihenfolge ein:

Mehrfach gepflegte Daten mit List.Difference() ermitteln, Power Query, Power BI Desktop
Mehrfach gepflegte Daten mit List.Difference() ermitteln

List.Difference() berücksichtigt auch Duplikate als Unterschied zwischen beiden Listen. Da in den Solldaten jeder einzelne Tag exakt einmal vorkommt, ist jeder Tag, der in den Istdaten öfter vorkommt als in der Solldaten, automatisch ein mehrfach gepflegter Tag. So kann ich beispielsweise ermitteln, dass für das Projekt P001 der 23.07 und 24.07.2017 in den Istdaten mehrfach enthalten ist:

Die mehrfach gepflegten Werte des Projektes P0001, Power Query, Power BI Desktop
Die mehrfach gepflegten Werte des Projektes P0001

Damit habe ich alle notwendigen Kalkulationen zur Fehlerermittlung vorgenommen. Jetzt geht es darum, die Daten so zu extrahieren, dass man auch mit ihnen arbeiten kann.

6. Datenextraktion

Zu Beginn der Datenextraktion lösche ich die nicht mehr benötigten Spalten Istdaten und Solldaten. Anschließend füge ich die neue Spalte KonvertiereListenInTabelle, unter Verwendung der M-Funktion Table.FromColumns() hinzu:

Listen in Datensätze konvertieren, mit Table.FromColumns(), Power Query, Power BI Desktop
Listen in Datensätze konvertieren, mit Table.FromColumns()

Diese Funktion macht aus einer Liste von Listen (ja, eine Liste kann auch aus Listen bestehen) eine Tabelle. Diese Liste von Listen übergebe ich als erstes Argument ((1) im Screenshot). Da die Projekte (im Gegensatz zu den Spalten Wert fehlt und Wert ist mehrfach vorhanden) nicht in Form einer Liste vorliegen, dies für de Funktion Table.FromColumns() jedoch notwendig ist, fasse ich diese in geschweifte Klammern ein und konvertiere sie somit in eine Liste. Als zweites Argument der Funktion gebe ich die Spaltennamen der zukünftigen Tabelle mit ((2) im Screenshot). Nach dem Löschen aller überflüssigen Spalten und dem Extrahieren der neu kalkulierten Spalte KonvertiereListenInTabelle, sieht das Ergebnis dann wie folgt aus:

Das Ergebnis nach Auflösung der Listen, Power Query, Power BI Desktop
Das Ergebnis nach Auflösung der Listen

7. Zum Abschluss ein wenig Kosmetik

An dieser Stelle angekommen, möchte ich noch zwei kosmetische Änderungen vornehmen:

  • Die Beseitigung der NULL-Werte in der Spalte Projekt,
  • Die Entfernung der Zeilen, in denen kein Datum für Wert fehlt und Wert mehrfach gepflegt eingetragen wurde.

Ein vollständiges Bild der Projekte erhalte ich, indem ich die Spalte Projekt auswähle und die Schaltfläche Ausführen → Nach unten betätige:

Nach unten ausfüllen: NULL-Werte durch Projektbezeichnungen ersetzen, Power Query, Power BI Desktop
Nach unten ausfüllen: NULL-Werte durch Projektbezeichnungen ersetzen

Die Datensätze, die in beiden Datumsspalten NULL-Werte aufweisen, entferne ich dann abschließend wie folgt:

Datensätze ohne Datumsangaben entfernen, Power Query, Power BI Desktop
Datensätze ohne Datumsangaben entfernen

Ich aktiviere den Spaltenfilter der Spalte Wert fehlt und wähle die erweiterten Filteroptionen. Mit den im Screenshot ersichtlichen Einstellungen bleiben nur diejenigen Zeilen der Tabelle übrig, bei denen wenigstens eine der beiden Datumsspalten einen Wert ungleich NULL enthält.

Die fertige Abfrage in Power Query, Power BI Desktop
Die fertige Abfrage in Power Query

Damit ist die Lösung fertig und ich habe stets den Überblick über fehlerhaft gepflegte Daten. Lasse ich mir diese Tabelle in Excel wiedergeben, sieht das ganze wie folgt aus:

Das fertige Ergebnis: Die gewünschte Prüfung in Excel, Power Query, Power BI Desktop
Das fertige Ergebnis: Die gewünschte Prüfung in Excel

Ich hoffe, diese Lösung regt Dich zu eigenen Lösungen an und hilft Dir in Deinem Arbeitsalltag weiter.

Bis zum nächsten Mal und denk bitte dran: Sharing is caring. Wenn Dir der Beitrag gefallen hat, dann teile ihn gerne. Falls Du Anmerkungen hast, schreibe gerne einen Kommentar, oder schicke mir eine Mail an lars@ssbi-blog.de

Viele Grüße aus Hamburg,

Lars

Ich schreibe meine Beiträge für Dich, den Leser. Bitte schenke mir eine Minute Deiner Zeit und bewerte die folgenden Kategorien, um mir zu helfen meine Beiträge so gut wie möglich zu schreiben. Danke 🙂

Der Beitrag Daten auf lückenlose Zeiträume prüfen, Teil 2 erschien zuerst auf THE SELF-SERVICE-BI BLOG.

]]>
Daten auf lückenlose Zeiträume prüfen, Teil 1 https://ssbi-blog.de/blog/business-topics/daten-auf-lueckenlose-zeitraeume-pruefen-teil-1/ Tue, 16 Jan 2018 18:00:32 +0000 http://ssbi-blog.de/?p=2706 Machst Du manchmal Fehler bei der manuellen Datenpflege in Excel? Ich auf jeden Fall. Aus diesem Grunde schreibe ich mir gerne Hilfstools zur Datenprüfung mit Power Query, die mir solche Fehler schnell aufzeigen. So kann ich sie korrigieren, bevor Schaden entsteht. In diesem ersten von zwei Teilen zeige ich Dir, wie man die Ist- und […]

Der Beitrag Daten auf lückenlose Zeiträume prüfen, Teil 1 erschien zuerst auf THE SELF-SERVICE-BI BLOG.

]]>
Machst Du manchmal Fehler bei der manuellen Datenpflege in Excel? Ich auf jeden Fall. Aus diesem Grunde schreibe ich mir gerne Hilfstools zur Datenprüfung mit Power Query, die mir solche Fehler schnell aufzeigen. So kann ich sie korrigieren, bevor Schaden entsteht. In diesem ersten von zwei Teilen zeige ich Dir, wie man die Ist- und Solldaten so aufbereitet, dass es im Nachgang, also im zweiten Teil, ein Leichtes wird, die Fehlerermittlung vorzunehmen.

Als Abonnent meines Newsletters erhältst Du die Beispieldateien zu den Beiträgen dazu. Hier geht’s zum Abonnement des Newsletters!

Der Sachverhalt

Ich habe es in der Praxis häufig erlebt, dass beispielsweise Projekte händisch in Exceltabellen gepflegt werden. Der folgende Screenshot zeigt eine solche Tabelle. Hier werden Projekte mit ihrem entsprechenden Projektleiter gepflegt. Die Projektleiter begleiten ein solches Projekt jedoch nicht immer über die gesamte Laufzeit hinweg. Aus diesem Grund wird in den Spalten Start und Ende vermerkt, wann der entsprechende Projektleiter für dieses Projekt veranwortlich (Start) wurde und wann er die Verantwortlichkeit ggf. wieder abgegeben hat (Ende).

Die Ausgangssituation: Gepflegte Projektdaten in Excel, Power Query, Power BI Desktop
Die Ausgangssituation: Gepflegte Projektdaten in Excel

Die Problemstellung

Problematisch wird es, wenn ich die Start- und Endedaten nicht korrekt pflege. Hierbei kann es zu drei Fällen kommen:

  1. Für ein Projekt wird lückenhaft gepflegt, so dass wie im blau hinterlegten Beispiel des folgenden Screenshots, bei Projekt P002 der Zeitraum vom 02.04. – 04.04.2017 fehlt. Für diese Tage gibt es laut Tabelle keinen Verantwortlichen.
  2. Für ein Projekt wird redundant gepflegt, so dass wie in den rot hinterlegten Beispielen des folgenden Screenshots, bei Projekt P001 der 23. und 24.07.2017 doppelt gepflegt ist und zusätzlich bei Projekt P002 der 28.04 und 01.05.2017 doppelt gepflegt wurde. Für diese Tage gibt es laut Tabelle mehr als einen Verantwortlichen.
  3. Die Fälle 1 und 2 treten in Kombination auf, wie für Projekt P002 ersichtlich.
Mögliche Fehler bei der Datenpflege, Power Query, Power BI Desktop
Mögliche Fehler bei der Datenpflege

Um solche Fehler der Dateneingabe ausfindig zu machen, stelle ich Dir eine Lösung vor, die Dir die fehlerhaft gepflegten Projekte, samt fehlerhafter Datumswerte wie folgt ausweist:

Die angestrebte Lösung: Fehlerhafte Projekte werden in separater Tabelle ausgewiesen, Power Query, Power BI Desktop
Die angestrebte Lösung: Fehlerhafte Projekte werden in separater Tabelle ausgewiesen

Auf diese Weise kannst Du entstandene Fehler sehr schnell ausfindig machen und anschließend beheben. Wie ich das mit Power Query umgesetzt habe, zeige ich Dir jetzt.

Die Lösung

Der Weg zur Lösung führt über mehrere Schritte, die ich Dir jetzt beschreibe.

1. Datenimport in Power Query

Die in meinem Excelblatt vorhandenen Daten müssen zunächst in Power Query importiert werden. Während sich die aktive Zelle innerhalb der gewünschten Tabelle befindet, drücke ich hierzu auf die Schaltfläche DatenAus Tabelle/Bereich, um die Tabelle in Power Query zu laden.

Die intelligente Tabelle aus Excel in Power Query laden, Power Query, Power BI Desktop
Die intelligente Tabelle aus Excel in Power Query laden

2. Entfernen des Projektleiters

Da ich je Projekt prüfen möchte, ob bestimmte Tage gar nicht, oder gar mehrfach gepflegt wurden, ist für diese Untersuchung der Projektleiter überflüssig und kann daher entfernt werden. Als nächstes ermittle ich die tatsächlich gepflegten Zeiträume.

3. Ermittlung der gepflegten Daten

Weil ich für jedes Projekt den gepflegten Zeitraum auf Richtigkeit prüfen will, muss ich den gepflegten Zeitraum auch je Projekt gruppieren: Und dies am besten in einer Liste! Das Ergebnis sieht dann wie folgt aus:

Das Ziel: Alle eingetragenen Datumswerte je Projekt in einer Liste speichern, Power Query, Power BI Desktop
Das Ziel: Alle eingetragenen Datumswerte je Projekt in einer Liste speichern

Je Projekt werden alle gepflegten Daten in einer Liste gespeichert. Dies habe ich wie folgt bewerkstelligt:

Datumsbereiche zeilenweise in eine Liste einlesen

Zunächst lese ich in der bestehenden Tabelle zeilenweise die Datumsbereiche in eine Liste ein. Die hierfür notwendige Formel kannst Du dem folgenden Screenshot entnehmen:

Über diese Funktion können die Zeitspannen zwischen Start und Ende zeilenweise in eine Liste eingelesen werden, Power Query, Power BI Desktop
Über diese Funktion können die Zeitspannen zwischen Start und Ende zeilenweise in eine Liste eingelesen werden

Die hier verwendete Funktion List.Dates() benötigt 3 Argumente:

  • start: Ein Startdatum,
  • count: Die Anzahl an steps, die von start aus gezählt werden soll (10 Tage → count = 10),
  • step: Die Art der Laufzeit:
    • #duration(1,0,0,0) → Tag,
    • #duration(0,1,0,0) → Stunde,
    • #duration(0,0,1,0) → Minute,
    • #duration(0,0,0,1) → Sekunde

Achtung: In Kombination mit List.Dates() ist nur die Nutzung von #duration(1,0,0,0) möglich, da diese nur Tage kennt und keine kleinere Zeiteinheiten. Um die Schritte auf Stunden, Minuten und Sekunden zu verkleiner, ist die Nutzung der Funktion List.DateTimes() notwendig.

Um count in Tagen zu erhalten, ermittle ich die Dauer der Tage zwischen Start und Ende mit Hilfe der geschachtelten Funktionen Duration.Days(Durations.From([Ende] - [Start])) +1. Die FunktionDuration.From() ermittelt hierbei die generelle Dauer zwischen Start und Ende, während Duration.Days() diese in Tage umrechnet.

Löschen der Spalten [Start] und [Ende]

Da diese beiden Spalten nun in der erstellten Liste abgebildet sind, können sie entfernt werden. Das Ergebnis sieht wie folgt aus:

Die Tabelle, bereinigt um Start und Ende, Power Query, Power BI Desktop
Die Tabelle, bereinigt um Start und Ende

Gruppieren der Zeiträume je Projekt

Ich möchte nun erreichen, dass für jedes Projekt nur noch eine einzige Zeile besteht. Hierfür nutze ich die Schaltfläche Gruppieren nach:

Gruppieren der Tabelle nach Projekten; Listeneinträge bleiben als Zeilen vorhanden, Power Query, Power BI Desktop
Gruppieren der Tabelle nach Projekten; Listeneinträge bleiben als Zeilen vorhanden

Ich gruppiere nach der Spalte Projekt und vergebe den neuen Spaltennamen Listen. Nun sind zwei Besonderheiten zu beachten:

  1. Aggregationstyp: Unter Vorgang wähle ich aus, dass Alle Zeilen beibehalten werden sollen. Hier wird im Normalfall die Aggregationstyp (Summe, Min, Max, etc.) ausgewählt, aber ich kann auch alle Zeilen behalten und diese in einer Liste ablegen. Somit wird kein neuer Wert generiert, sondern die Werte bleiben in einer Liste erhalten.
  2. Spaltenauswahl: Wenn ich unter Vorgang Alle Zeilen ausgewählt habe, dann kann ich unter Spalte leider keine Auswahl der gewünschten Spalte mehr treffen. Deshalb ist das Rückgabeergebnis meiner Spalte Liste auch jeweils eine Table (wie im Screenshot zu sehen). Doch nur, weil es nicht über die Nutzeroberfläche geht, heißt das nicht, dass die Sprache es nicht doch kann. Ich löse das Problem, indem ich wie folgt manuell in die Formel eingreife:
Manuelle Anpassung der M-Formel: Aus einer Liste von Tabellen, wird eine Liste von Listen der Spalte Datumsbereich, Power Query, Power BI Desktop
Manuelle Anpassung der M-Formel: Aus einer Liste von Tabellen, wird eine Liste von Listen der Spalte Datumsbereich

Das Resultat ist eine Liste von Listen mit den jeweiligen Datumsbereichen pro Projekt. Diese Listen möchte ich jetzt für jedes Projekt in einer Liste zusammenführen.

Zusammenführen von Listen in einer Liste pro Projekt

Um die Einzellisten je Projekt zu einer Liste zusammenzuführen, erzeuge ich eine neue Spalte, unter Nutzung der Formel List.Combine():

List.Combine() fügt alle Listen zu einer Liste zusammen, Power Query, Power BI Desktop
List.Combine() fügt alle Listen zu einer Liste zusammen

List.Combine() fügt alle übergebenen Listen zu einer Liste zusammen. Dadurch habe ich nun je Projekt eine Liste mit Datumswerten vorliegen, wie sie in Excel manuell gepflegt wurden:

Einblick in die Liste von Listen, gefüllt mit den Ist-Datumswerten, Power Query, Power BI Desktop
Einblick in die Liste von Listen, gefüllt mit den Ist-Datumswerten

Damit habe ich die Ermittlung der Istdaten abgeschlossen. Um zu sehen, ob die Daten korrekt gepflegt wurden, ermittle ich nun die Sollwerte, mit denen ich im Anschluss den Abgleich der Istwerte vornehmen werde.

4. Ermittlung der Sollwerte

Die Sollwerte können sehr einfach ermittelt werden. Ich weiß, dass vom ersten erfassten Tag des Projektes, bis zum letzten Tag, jeder einzelne Tag genau einmal vorkommen muss. Sollte bei der Erfassung natürlich genau der Start- oder Endetag nicht erfasst worden sein, kann mein Tool dieses Problem nicht beheben. Um die Sollwerte ebenfalls je Projekt in einer Liste auszugeben, füge ich eine neue Spalte hinzu und verwende dazu die folgende Formel:

Die Ermittlung der Sollperioden, Power Query, Power BI Desktop
Die Ermittlung der Sollperioden

Diese Formel erzeugt eine Liste, die vom Starttag (ermittelt über List.Min([Istdaten])) bis zum Endetag des jeweiligen Projektes, jeden einzelnen Tag genau einmal beinhaltet.

Damit sind nun alle Daten so aufbereitet, dass die Fehlerermittlung beginnen kann. Doch dies wird Bestandteil des nächsten Teils dieses zweiteiligen Beitrags. 

Bis zum nächsten Mal und denk bitte dran: Sharing is caring. Wenn Dir der Beitrag gefallen hat, dann teile ihn gerne. Falls Du Anmerkungen hast, schreibe gerne einen Kommentar, oder schicke mir eine Mail an lars@ssbi-blog.de

Viele Grüße aus Hamburg,

Lars

Ich schreibe meine Beiträge für Dich, den Leser. Bitte schenke mir eine Minute Deiner Zeit und bewerte die folgenden Kategorien, um mir zu helfen meine Beiträge so gut wie möglich zu schreiben. Danke 🙂

Der Beitrag Daten auf lückenlose Zeiträume prüfen, Teil 1 erschien zuerst auf THE SELF-SERVICE-BI BLOG.

]]>