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

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()


= Table.RenameColumns(Quelle, List.Zip({Table.ColumnNames(Quelle),{"WG1","WG2","WG3"}}))


alternativer Ansatz (ohne List.Lip, Table.RenameColumns(), Liste von Listen) siehe Beispielmappe

siehe auch Daten aus dem Power Pivot Datenmodell holen

siehe auch hier

Kommentare

Beliebte Posts aus diesem Blog

Vergleich mit 2 Bedingungen, INDEX(), VERGLEICH()

Dropdown Liste mit Mehrfachauswahl

nützliche Text Funktionen in Power Query