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

Dropdown Liste mit Mehrfachauswahl

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

nützliche Text Funktionen in Power Query