Umgang mit wechselnden Spaltenbeschriftungen mit Power Query
Hin und wieder müssen verteilte Dateien (zB zur Unterstützung eines Planungsprozess), deren
Struktur und Inhalt gleich,
Spaltenbeschriftungen aber ungleich sein können
geladen (und ggfs zusammengeführt) werden.
siehe auch strukturell gleiche Dateien in einem Ordner zusammenführen
Beispiel:
Die gelb markierten Spaltenbeschriftungen sind ungleich, die Spalte indes enthält in beiden Fällen
Anzahl Mitarbeiter
Wenn man in der Power Query Anfrage (Prozess Schritt "umbenannte Spalte") lediglich den Spalten Namen in "Anzahl" ändert,
wird man auf folgenden Fehler laufen, falls sich die unterschiedlichen Tabellen in der Quellfeld Spaltenbezeichnung (01.01.2016, 31.11.2015) unterscheiden
Wenn man sich den Code für die Umbenennung der Spaltenbeschriftung in Anzahl genauer anschaut kann man erkennen, woran das liegt.
Table.RenameColumns(Navigation,{{"31.01.2016", "Anzahl"}})
Die Funktion benutzt die Tabelle Navigation, sucht nach "31.12.2016" und benennt diese in "Anzahl" um.
Problem, die Spaltenbezeichnungen sind hart codiert.
Die Funktion
= Table.ColumnNames(Navigation)
listet die Spaltenbeschriftungen auf.
Setzt man die Spaltenindex in {} (Zählung beginnt bei 0) kann man die Spalte direkt adressieren)
Lösung (für Abfrage Prozess Schritt "umbenannte Spalte"):
= Table.RenameColumns(Navigation,{{Table.ColumnNames(Navigation){1}, "Anzahl"}})
Syntax für mehrere Spaltenbeschriftungen:
= Table.RenameColumns(Navigation,{{Table.ColumnNames(Navigation){0}, "Merkmal1"}, {Table.ColumnNames(Navigation){1}, "Merkmal2"}, {Table.ColumnNames(Navigation){2}, "Merkmal3"}, {Table.ColumnNames(Navigation){3}, "MerkmalN"}})
vereinfachter Ansatz mit List.Zip()
= Table.RenameColumns(Quelle, List.Zip( {Table.ColumnNames(Quelle), { "Col 1", "Col 2", "Col 3"} } ) )
siehe auch die letzten N Spaltenbeschriftungen ändern
Leerzeichen aus Spaltenbeschriftungen entfernen
alternative Methode
alternative Methode 2 List.Zip()
Lern Video
Kommentare
Kommentar veröffentlichen