Power Query, Spaltennamen von Quelldaten in benutzerfreundliche Spaltennamen umbenennen, List.Zip
Phase 1 - Vorbereitung Quell - Ziel Felder Struktur (Spaltennamen)
1.1 Datenquelle über Excel Power Query anbinden
zB SAP Export Daten, Text Datei, Tab getrennt
angewendete Schritte := [Quelle]
= Csv.Document(File.Contents("D:\Projekte\SAP\Daten\SAP_Export.txt"),[Delimiter=" ", Columns=6, Encoding=1252, QuoteStyle=QuoteStyle.None])
1.2 Liste (Listobjekt) mit Spalten der Datenquellenstruktur erstellen
angewendete Schritte := [Liste_Quellfelder]
= Table.ColumnNames(Quelle)
Exkurs: Anzahl Spalten der Quelldaten ermitteln
= List.Count(Table.ColumnNames(Quelle))
1.3 in Tabelle konvertieren, Spalte in [Quell_Feld] umbenennen
Language M Code
--- SCHNIPP ---
let
Quelle = Csv.Document(File.Contents("D:\Projekte\SAP\Daten\SAP_Export.txt"),[Delimiter=" ", Columns=6, Encoding=1252, QuoteStyle=QuoteStyle.None]),
Liste_Quell_Felder = Table.ColumnNames(Quelle),
#"In Tabelle konvertiert" = Table.FromList(Liste_Quell_Felder, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Umbenannte Spalten" = Table.RenameColumns(#"In Tabelle konvertiert",{{"Column1", "Quell_Feld"}})
in
#"Umbenannte Spalten"
--- SCHNAPP ---
1.4 Ergebnis in Excel Tabelle laden und um Feld [Ziel_Feld] (=benutzerfreundliche Spaltennamen) ergänzen
1.5 Liste mit [Quell_Feld], [Ziel_Feld] als Arbeitsmappenabfrage abbilden
(im Beispiel Abfragename [tbl_Tabellenspalten_umbenennen])
Phase 2 - Mapping Quell -> Zielfeld
2.1 neue Abfrage erstellen und Bearbeitungsschritte einfügen (angewendete Schritte)
zB SAP Export Daten, Text Datei, Tab getrennt
angewendete Schritte := [Quelle]
= Csv.Document(File.Contents("D:\Projekte\SAP\Daten\SAP_Export.txt"),[Delimiter=" ", Columns=6, Encoding=1252, QuoteStyle=QuoteStyle.None])
angewendete Schritte := [Quelle_Liste_Feldname_buffered]
= List.Buffer(Table.ColumnNames(Quelle))
angewendete Schritte := [Tabellenfelder_umbenennen]
= Table.RenameColumns( Quelle, List.Zip( { Quelle_Liste_Feldname_buffered, tbl_Tabellenspalten_umbenennen[Ziel_Feld] } ) )
Language M Code
--- SCHNIPP ---
let
Quelle = Csv.Document(File.Contents("D:\Projekte\SAP\Daten\SAP_Export.txt"),[Delimiter=" ", Columns=6, Encoding=1252, QuoteStyle=QuoteStyle.None]),
Quelle_Liste_Feldname_buffered = List.Buffer(Table.ColumnNames(Quelle)),
Tabellenfelder_umbenennen = Table.RenameColumns( Quelle, List.Zip( { Quelle_Liste_Feldname_buffered, tbl_Tabellenspalten_umbenennen[Ziel_Feld] } ) )
in
Tabellenfelder_umbenennen
--- SCHNAPP ---
Tip Fehlermeldung /-suche
deutet darauf hin, dass
die Anzahl der Felder in der Quelldatei [Quell_Feld] von der Anzahl der erfassten Felder in der Tabelle abweichen (s. ab Punkt 1.2)
doppelte Feld Namen (Spaltennamen) in Quelle- und / oder Ziel vorhanden sind
siehe auch Microsoft Power BI Community
--- SCHNIPP benutzerdefinierte Funktion fnRenameColumns
siehe auch Microsoft Power BI Community
--- SCHNIPP benutzerdefinierte Funktion fnRenameColumns
let
fnRenameColumns = (tableName as table) =>
let
Source = tableName,
ColumnNames = Table.ColumnNames(Source),
Transform = List.Transform(ColumnNames, each {_, Text.Upper(Text.Replace(_,"_"," "))}),
RenameColumns = Table.RenameColumns(tableName,Transform)
in
RenameColumns
in
fnRenameColumns
--- SCHNAPP
Technik, um
Leer- und/oder Steuerzeichen aus Spaltenbeschriftungen
zu entfernen
siehe auch benutzerdefinierte Funktion fxPowerTrim
1 neue Abfrage -> leere Abfrage erstellen, Name [AlteSpaltenbeschriftungen]
Language M Code einfügen (Ansicht -> erweiterter Editor)
--- SCHNIPP
let
Quelle = Excel.CurrentWorkbook(){[Name="tbl_Leerzeichen_Spaltenbeschriftungen"]}[Content],
List_ColumnNames = Table.ColumnNames(Quelle)
in
List_ColumnNames
--- SCHNAPP
2 neue Abfrage -> leere Abfrage erstellen, Name [NeueSpaltenbeschriftungen]
Language M Code einfügen (Ansicht -> erweiterter Editor)
---SCHNIPP
let
Quelle = Excel.CurrentWorkbook(){[Name="tbl_Leerzeichen_Spaltenbeschriftungen"]}[Content],
List_ColumnNames = Table.ColumnNames(Quelle),
Text_Trim = List.Transform(List_ColumnNames, each Text.Trim( _ )),
Text_Clean = List.Transform(Text_Trim, each Text.Clean( _ ))
in
Text_Clean
--- SCHNAPP
3 neue Abfrage -> leere Abfrage erstellen, Name [Zipped_AltNeu_Spaltenbeschriftungen]
Language M Code einfügen (Ansicht -> erweiterter Editor)
--- SCHNIPP
let
Quelle = List.Zip({AlteSpaltenbeschriftungen, NeueSpaltenbeschriftungen})
in
Quelle
--- SCHNAPP
4 in Arbeitsmappenabfrage der relevanten Tabelle folgenden Schritt einfügen
= Table.RenameColumns(Quelle, Zipped_AltNeu_Spaltenbeschriftungen)
Anwendung List.Zip in Kurzform am Beispiel einer Tabelle mit 3 Spalten
mit den Funktionen
Table.RenameColumns(), List.Zip(), Table.ColumnNames()
siehe auch Daten aus dem Power Pivot Datenmodell holen
Kommentare
Kommentar veröffentlichen