Das Anfügen von Tabellen unterschiedlicher Struktur kann mit Power Query zu unerwünschten Ergebnissen führen. Falls Du Dich fragst, wie man unterschiedliche Datenstrukturen mittels Power Query anfügen kann, erkläre ich Dir in diesem Beitrag, wie das funktioniert 🙂
Als Abonnent meines Newsletters hast Du Zugriff auf alle jemals erstellten Beispieldatei zu meinen Beiträgen. Solltest Du noch kein Abonnent sein, geht’s hier zum kostenlosen (und jederzeit wieder abbestellbaren) Newsletter. Auf geht’s 🙂
So funktioniert das Anfügen von Daten in Power Query
Die folgenden Tabellen sollen exemplarisch in Power Query zu einer Tabelle konsolidiert werden. Stellen wir uns vor, mir werden regelmäßig Dateien (scheinbar) gleicher Struktur aus anderen Abteilungen zugesandt und meine Aufgabe ist es nun, diese Datenlieferung in eine Tabelle zu konsolidieren und auf dessen Basis weitere Reports zu erstellen.
Der Tabelle Sollstruktur kommt hier eine besondere Bedeutung zu. Wie der Name vermuten läßt, soll die Konsolidierung aller Tabellen die gleiche Struktur aufweisen, wie die Tabelle Sollstruktur. Hierzu später mehr.
Um die Daten in Power Query zu konsolidieren, muss ich zuerst alle Tabellen in Power Query laden. Da sich meine Tabellen in Form von »intelligenten« Tabellen in derselben Exceldatei befinden, in der ich die Power Query Abfrage erstellen möchte, kümmern wir uns zunächst darum, diese auf dem schnellsten Wege in Power Query zu laden.
Der schnellste Weg mehrere »intelligente« Tabellen in Power Query zu laden
Möchte man mehr als eine »intelligente« Tabelle auf einmal aus der akiven Exceldatei in Power Query laden, dann geht dies am schnellsten, indem man die aktuelle Datei als externe Datei betrachtet. Wer hierzu nähere Informationen haben möchte, den verweise ich auf meinen Beitrag Power Query kennt 3 Excel-Objekte: Nutzt du sie richtig?
Der Import wird dann wie folgt eingeleitet.
Wähle ich die aktive Exceldatei als Datenquelle aus, so kann ich u.a. aus allen »intelligenten« Tabellen zum Import auswählen. Damit wird es möglich mehrere Inhalte aus der aktuellen Exceldatei gleichzeitig zu laden.
Über das Aktivieren der Checkbox Mehrere Elemente auswählen (Schritt 1) erhalte ich die Möglichkeit, mehr als nur ein Element gleichzeitig zu bearbeiten. Im Anschluss (Schritt 2) kann dann die Auswahl der entsprechenden Elemente stattfinden. In diesem Beispiel wähle ich alle »intelligenten« Tabellen aus. Diese sind duch das Icon mit der blauen Überschrift gekennzeichnet. Mit dem Betätigen des Knopfes Bearbeiten (Schritt 3) befinden sich alle »intelligenten« Tabellen als separate Abfragen in Power Query.
Nachdem die einzelnen Tabellen an dieser Stelle in Power Query geladen wurden, möchte ich als nächstes auf die Notwendigkeit und die Funktionsweise der Tabelle tblSoll_Struktur eingehen.
Die Tabellenstruktur definieren
Das Anfügen von Abfragen in Power Query funktioniert in 4 einfachen Schritte:
- Selektion der Abfrage, an welche ich eine oder mehrere andere Abfragen anfügen möchte
- Betätigung der Schaltfläche Start → Kombinieren → Abfrage anfügen
- Entscheidung, ob eine, oder mehrere Abfragen angefügt werden sollen
- Auswahl der anzufügende(n) Abfrage(n) und anschließende Bestätigung mit OK
Die folgende Abbildung visualisiert die vier oben genannten Schritte.
Hierbei ist wichtig zu wissen, dass Power Query die Struktur der ersten Tabelle als eine Art Schablone für den Aufbau der finalen Tabelle nutzt. Nehmen wir den Fall, dass die erste Tabelle (im folgenden Bild grün hinterlegt) die Spalten A, B, C und D hat, so wird die Anfügetabelle (im folgenden Bild orange hinterlegt) mit der Struktur B, A, D und C automatisch ins Format der ersten Tabelle gebracht. Beim Anfügen ist nicht die Reihenfolge der Spalten von Interesse, sondern deren exakte Spaltenbezeichnung.
Aus diesem Grund definiere ich zu Beginn eines solchen Anfügeprozederes gerne eine leere Strukturtabelle, deren einzige Aufgabe es ist, als Schablone für die weiteren angefügten Tabellen zu fungieren. In Excel kann diese Strukturtabelle einfach in einem Excelblatt angelegt und in Power Query geladen werden. Diese Möglichkeit bietet sich in Power BI Desktop natürlich auch, indem ich eine solche Tabelle ebenfalls aus Excel lade. Wer sich eine solche Strukturtabelle jedoch direkt in M schreiben möchte, findet hier den entsprechend anzupassenden M-Code vor:
= Table.FromRecords({[A=null, B=null, C=null, D=null]})
Mir ist in M nicht bekannt, wie ich eine leere Tabelle erzeugen kann. Daher habe ich eine Abfrage mit einem einzigen Datensatz voller NULL-Werte erzeugt, der am Ende der natürlich ausgefiltert werden sollte. Sollte hier jemand einen elegantere Weg kennen: Immer her damit 🙂
Widmen wir uns nun den unterschiedlichen Fällen, die beim Anfügen von Tabellen an die Strukturtabelle vorkommen können.
Tabellen unterschiedlicher Struktur an die Strukturtabelle anfügen
Für das Anfügen von Tabellen gibt es verschiedene Fälle zu unterscheiden, die ich folgend nacheinander darstellen werde.
Tabellen gleicher Struktur anfügen
Dieses Szenario beschreibt den Idealfall. Die Anfügetabelle entspricht exakt dem Aufbau der Strukturtabelle. Nach der Anfügung hat die finale Tabelle exakt den Aufbau der Strukturtabelle.
Tabellen mit anderer Spaltenreihenfolge anfügen
Diesen Fall hatte ich weiter oben schon besprochen. Nicht die Reihenfolge der Spalten ist für das Anfügen interessant, sondern die Bezeichnung der Spalten sorgt dafür, dass das Anfügen fehlerfrei funktioniert. Auch hier entspricht die Struktur der finalen Tabelle der der Strukturtabelle.
Tabellen mit überschüssigen Spalten anfügen
Für den Fall, dass die Anfügetabelle über Spalten verfügt, die in der Strukturtabelle nicht vorhanden sind, werden diese überschüssigen Spalten (in diesem Beispiel Spalte E) der finalen Tabelle hinzugefügt.
Das Ergebnis aus dieser Anfügung wäre also eine Tabelle mit den Spalten A, B, C, D, E. Natürlich kann man diese überschüssige Spalte E manuell entfernen.
Tabellen mit zu wenig Spalten anfügen
Enthält die Anfügetabelle weniger Spalten als die Strukturtabelle, so werden die vorhandenen Spalten an die gleichnamigen Spalten der Strukturtabelle angefügt. Für die nicht vorhandenen Spalten können natürlich keine Daten angefügt werden. Für das folgende Beispiel werden also die Spalten A, B und C der Anfügetabelle an die Strukturtabelle angefügt. Die Werte für Spalte D bleiben für diese Anfügetabelle leer.
Die finale Tabelle
Kommen wir zur finalen Tabelle, in welcher alle zuvor beschriebenen Schritte gemeinsam greifen. Die folgende Abbildung zeigt, wie die Daten zwischen den Tabellen fließen und wie die Struktur der finalen Tabelle aussieht (Zeile Ergebnis).
Die finale Tabelle beinhaltet also die Spalten A, B, C, D und E. Die Strukturtabelle sorgt zwar dafür, dass alle Spalten mit den Bezeichnungen A, B, C und D in exakt dieser Reihenfolge abgebildet werden. Sie kann jedoch nicht dafür sorgen, dass neue, bisher unvorhergesehene Spalten ignoriert werden. Jedenfalls noch nicht… 🙂
In meinem nächsten Beitrag werde ich Euch zeigen, was zu tun ist, damit aus jeder Anfügetabelle ausschließlich die Spaltenbezeichnungen der Strukturtabelle akzeptiert werden, unabhängig davon wie die Strukturtabelle gerade aufgebaut ist. Auf diese Weise reicht es die Strukturtabelle zu definieren. Ständige Prüfungen des Abfrageergebnisses entfallen somit. Bleibt gespannt 🙂
Bis zum nächsten Mal und denk dran: Sharing is caring. Wenn Dir der Beitrag gefallen hat, dann teile ihn gerne 🙂
Viele Grüße aus Hamburg,
Lars
Lars ist Berater, Entwickler und Trainer für Microsoft Power BI. Er ist zertifizierter Power BI-Experte und Microsoft Trainer. Für sein Engagement in der internationalen Community wurde Lars seit 2017 jährlich durch Microsoft der MVP-Award verliehen. Lies hier mehr…
Frank Tonsen meint
Eine leere Tabelle kann man in M wie folgt erzeugen:
= #table({„A“,“B“,“C“,“D“}, {})
Lars Schreiber meint
Hallo Frank,
das ergibt Sinn 🙂
Vielen Dank und viele Grüße aus Hamburg,
Lars