![带有表格来源的自定义列](https://linux22.com/image/1569138/%E5%B8%A6%E6%9C%89%E8%A1%A8%E6%A0%BC%E6%9D%A5%E6%BA%90%E7%9A%84%E8%87%AA%E5%AE%9A%E4%B9%89%E5%88%97.png)
我有一个 Power 查询,其中包含 14 个工作表中的 14 个表。每个表上的列各不相同。有些表有工作表独有的列。它们都共享大约 10 列,但顺序有所不同。
我如何添加自定义列来显示工作表原点或表格原点?
(我策略性地将表格/工作表命名为工作表上的每个表格,如下所示Table Name = Sheet Name
)。我是 power-query 的新手,我说的新手,是指我今天构建了我的第一个。
我尝试了带有公式的自定义列:
Table.AddColumn(#"Changed Type", "Custom", each Source{[Item="Report",Kind="Sheet"]}[Name])
但它不起作用,如下所示。
答案1
您想要在查询中绑定在一起的所有表不一定具有相同的结构(列名)。以下是这种情况的解决方案。
您必须编写自定义 M 代码。第一步使用Excel.当前工作簿功能。
这是您可以放入编辑器的 M 代码(在我的示例中,查询名称是“OutputTable”-> 在下面的代码中被替换!):
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({state, Table.ColumnNames(current)})),
// Dynamically expand all columns
#"Expanded {0}" = Table.ExpandTableColumn(#"Renamed Columns", "Content", #"all table column name")
in
#"Expanded {0}"
步骤#"所有表列名"灵感来自于这Stackoverflow 上的回答。