自动展开所有具有特定名称的 "Table Columns"
Automatically Expand all "Table Columns" with specific name
我是编码初学者,不熟悉 "M" 建模语言。我有一个 XML 文件,我想用它在查询编辑器中加载数据。在查询中,我只需要展开具有以下特定名称的 table 列:
- 查看
- 查看文件夹
- 属性:名称
我发现以下 post where they give a function by Chris Webb 用于扩展所有列表(代码下方)。
= (TableToExpand as table, optional ColumnNumber as number) =>
let
ActualColumnNumber = if (ColumnNumber=null) then 0 else ColumnNumber,
ColumnName = Table.ColumnNames(TableToExpand){ActualColumnNumber},
ColumnContents = Table.Column(TableToExpand, ColumnName),
ColumnsToExpand = List.Distinct(List.Combine(List.Transform(ColumnContents, each if _ is table then Table.ColumnNames(_) else {}))),
NewColumnNames = List.Transform(ColumnsToExpand, each ColumnName & "." & _),
CanExpandCurrentColumn = List.Count(ColumnsToExpand)>0,
ExpandedTable = if CanExpandCurrentColumn then Table.ExpandTableColumn(TableToExpand, ColumnName, ColumnsToExpand, NewColumnNames) else TableToExpand,
NextColumnNumber = if CanExpandCurrentColumn then ActualColumnNumber else ActualColumnNumber+1,
OutputTable = if NextColumnNumber>(Table.ColumnCount(ExpandedTable)-1) then ExpandedTable else ExpandAll(ExpandedTable, NextColumnNumber)
in
OutputTable
但是如何只扩展需要的lists/tables?
您应该能够简单地在旧 ColumnsToExpand
行上放置一个过滤器。
即
TableColumns = //This is the old ColumnsToExpand definition renamed.
List.Distinct(List.Combine(List.Transform(ColumnContents, each if _ is table then Table.ColumnNames(_) else {}))),
ColumnsToExpand =
List.Select(TableColumns, each (_ = "view" or _ = "viewfolder" or _ = "Attribute:name")),
或者像这样在一行中,
ColumsToExpand = List.Select(List.Distinct(List.Combine(List.Transform(ColumnContents, each if _ is table then Table.ColumnNames(_) else {}))), each (_ = "view" or _ = "viewfolder" or _ = "Attribute:name")),
我是编码初学者,不熟悉 "M" 建模语言。我有一个 XML 文件,我想用它在查询编辑器中加载数据。在查询中,我只需要展开具有以下特定名称的 table 列:
- 查看
- 查看文件夹
- 属性:名称
我发现以下 post where they give a function by Chris Webb 用于扩展所有列表(代码下方)。
= (TableToExpand as table, optional ColumnNumber as number) =>
let
ActualColumnNumber = if (ColumnNumber=null) then 0 else ColumnNumber,
ColumnName = Table.ColumnNames(TableToExpand){ActualColumnNumber},
ColumnContents = Table.Column(TableToExpand, ColumnName),
ColumnsToExpand = List.Distinct(List.Combine(List.Transform(ColumnContents, each if _ is table then Table.ColumnNames(_) else {}))),
NewColumnNames = List.Transform(ColumnsToExpand, each ColumnName & "." & _),
CanExpandCurrentColumn = List.Count(ColumnsToExpand)>0,
ExpandedTable = if CanExpandCurrentColumn then Table.ExpandTableColumn(TableToExpand, ColumnName, ColumnsToExpand, NewColumnNames) else TableToExpand,
NextColumnNumber = if CanExpandCurrentColumn then ActualColumnNumber else ActualColumnNumber+1,
OutputTable = if NextColumnNumber>(Table.ColumnCount(ExpandedTable)-1) then ExpandedTable else ExpandAll(ExpandedTable, NextColumnNumber)
in
OutputTable
但是如何只扩展需要的lists/tables?
您应该能够简单地在旧 ColumnsToExpand
行上放置一个过滤器。
即
TableColumns = //This is the old ColumnsToExpand definition renamed.
List.Distinct(List.Combine(List.Transform(ColumnContents, each if _ is table then Table.ColumnNames(_) else {}))),
ColumnsToExpand =
List.Select(TableColumns, each (_ = "view" or _ = "viewfolder" or _ = "Attribute:name")),
或者像这样在一行中,
ColumsToExpand = List.Select(List.Distinct(List.Combine(List.Transform(ColumnContents, each if _ is table then Table.ColumnNames(_) else {}))), each (_ = "view" or _ = "viewfolder" or _ = "Attribute:name")),