Auf Dubletten-Suche

    Da möchte man zwei Tabellen verbinden und Power Pivot meckert, dass die Schlüssel doppelt vorkommen. Fachlich sollten die Schlüssel aber eindeutig sein. Wir zeigen Ihnen, wie man Dubletten findet.

    Ausgangssituation

    Wir haben eine Tabelle importiert – eine Spalte ist der Schlüssel und sollte daher eindeutig sein. Scheinbar ist dem nicht so. Vielleicht stimmt im Quellsystem bereits etwas nicht. Man muss die Dublette aber erst mal finden, damit man der Ursache auf den Grund gehen kann – bei 100.000 Zeilen kann man nicht einfach sortieren und dann durch die Daten scrollen, in der Hoffnung, dass die Dubletten auffallen. Folgende Daten liegen uns vor (hier sieht man natürlich gleich die Dublette – eben nur ein Beispiel):

    Auftragstabelle

    Mit Countrows() auf Dubletten-Suche

    Wir legen zuerst eine berechnete Spalte an – und testen Countrows() auf uns selbst:

    Countrows in der berechneten Spalte

    Damit haben wir in jeder Zeile die Anzahl aller Zeilen. Wenn Sie jeweils “1” als Ergebnis in jeder Zeile erwartet hätten, lesen Sie die Artikel zu Kontexten. Wir bekommen offenbar alle Zeilen gezählt – wir brauchen einen Filter.

    Countrows() + Filter()

    Im Artikel über Filter haben wir beschrieben, was ein solcher Filter macht – er filtert nach hinterlegten Kriterien eine Tabelle und gibt diese zurück. Countrows() zählt dann die Anzahl der gefilterten Tabelle. Wie aber formulieren wir den Filter? Die Auftragsnummer muss mit der betrachteten Auftragsnummer übereinstimmen – ein Versuch:

    Countrows mit Filter

    Filter() ist ein Iterator, das heißt er iteriert über jede Zeile und prüft den Ausdruck – ist dieser gültig, wird die Zeile in die Ergebnismenge aufgenommen. Bei jeder Zeile stimmt aber die Auftragsnummer mit sich selbst überein. Irgendwie müssen wir aus dem Iterator wieder in die aktuell betrachtete Zeile schauen und nicht auf die Zeile, die der Iterator durchläuft.

    Earlier()

    Diese Funktion haben wir im Artikel über Kontexte beschrieben. Hier haben wir erneut eine sinnvolle Anwendung. Mit Earlier() verlassen wir explizit den Kontext der Countrows()-Funktion und gehen zurück in den Zeilenkontext. Die Funktion, die uns das gewünschte Ergebnis liefert, sieht damit folgendermaßen aus:

    Vollständige Funktion mit Earlier

    Über den Datenfilter in der berechneten Spalte können jetzt alle gefiltert werden, die 2 oder mehr als Wert haben – damit haben wir die Dubletten.

    Kategorien: Funktionen, Killer Entries, Kontext, Power Pivot
    Holger Gubbels

    Holger Gubbels ist Spezialist für alles, was mit Business Intelligence zu tun hat. Der Diplom-Informatiker strukturiert und löst als Data Scientist und Berater der mogular GmbH tagtäglich komplexe Problemstellungen rund um die Datenanalyse. Als Dozent der Hochschule für Technik Stuttgart ist er ein ausgewiesener Experte seines Fachs und gewohnt, Inhalte einfach zu erläutern. Genau das macht er auch hier in seinen Beiträgen für das PowerPivotInsights Blog. Zusätzlich ist er Autor für die Computerwoche und den Springer-Verlag. Sie erreichen ihn unter hg@mogular.com

    3 Comments

    Antwort schreiben

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.