带有表格来源的自定义列

带有表格来源的自定义列

我有一个 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 上的回答。

相关内容