Benutzerdefinierte Spalte mit Ursprung der Tabelle

378
urdearboy

Ich habe eine Power-Abfrage mit 14 Tabellen aus 14 Blättern. Die Spalten in jeder Tabelle sind unterschiedlich. Einige haben eindeutige Spalten für ein Blatt. Sie haben alle etwa 10 Spalten, aber die Reihenfolge variiert.

Wie kann ich eine benutzerdefinierte Spalte hinzufügen, um entweder den Blattursprung oder den Tabellenursprung anzuzeigen?

(Ich habe die Tabellen / Blätter für jede Tabelle auf Blatt strategisch wie folgt benannt Table Name = Sheet Name). Ich bin neu in Sachen Power-Query und mit neu meine ich heute meine erste.

Ich habe eine benutzerdefinierte Spalte mit der Formel ausprobiert,
Table.AddColumn(#"Changed Type", "Custom", each Source{[Item="Report",Kind="Sheet"]}[Name])die nicht wie unten gezeigt funktioniert.

Benutzerdefinierte Spalte mit Ursprung der Tabelle Benutzerdefinierte Spalte mit Ursprung der Tabelle

0

1 Antwort auf die Frage

0
visu-l

Alle Tabellen, die Sie in Ihrer Abfrage zusammenfügen möchten, müssen nicht unbedingt dieselbe Struktur (Spaltennamen) haben. Hier eine Lösung für diesen Fall.
Sie müssen einen benutzerdefinierten M-Code schreiben. Verwenden Sie als ersten Schritt die Funktion Excel.CurrentWorkbook .

Hier können Sie den M-Code in Ihren Editor einfügen (der Query Name ist in meinem Beispiel "OutputTable" -> im folgenden Code zu ersetzen!):

let Source = Excel.CurrentWorkbook(), // Filter out the table (= your Query Name) which will result as output #"Filtered Rows" = Table.SelectRows(Source, each ([Name] <> "OutputTable")),  // Bring the table name as 1st column #"Reordered Columns" = Table.ReorderColumns(#"Filtered Rows",{"Name", "Content"}),  // Rename the "Name" column to prevent conflict with next steps #"Renamed Columns" = Table.RenameColumns(#"Reordered Columns",{{"Name", "TableName"}}),  // Find out all column names present in Content tables  #"all table column name" = List.Accumulate(#"Renamed Columns"[Content], {}, (state, current) => List.Union()),  // Dynamically expand all columns #"Expanded " = Table.ExpandTableColumn(#"Renamed Columns", "Content", #"all table column name") in #"Expanded " 

Der Schritt # "Alle Tabellenspaltennamen" basiert auf dieser Antwort in Stackoverflow.

Tabellenstrukturen sind nicht gleich. Die Anzahl der Spalten variiert urdearboy vor 5 Jahren 0
OK, ich habe das Skript aktualisiert, um es in Rechnung zu stellen visu-l vor 5 Jahren 0
Kann heute Nachmittag testen urdearboy vor 5 Jahren 0