【问题标题】:PowerQuery merge columnsPower Query 合并列
【发布时间】:2020-05-31 05:45:53
【问题描述】:

我有两张桌子。表一和表二。
表 1 = 原始数据 表 2 = 应用于表 1 的条件过滤器

目标:表 2 中的每一行将有 1 个或多个列数据。如果表 1 中的同一列包含筛选项,则“结果”列的措辞将填充到新的表 3。

问题:以下代码目前仅在表 2 的所有列都完全匹配时才有效

问题:寻找有关如何触发“结果”列的编码建议/指导,只有在表 2 中填充的每一行列才需要。某种 List.Contains() 在忽略“null”的情况下是否有效列?

表 1 - 原始数据

表 2 - 表 1 的过滤器

表 3 - 结果

我目前使用的代码:

let
    Source = Table1,
    #"Merged Queries" = Table.NestedJoin(Source,{"Test", "Test2", "Test3", "Test4"},Table2,{"Test", "Test2", "Test3", "Test4"},"Table2",JoinKind.LeftOuter),
    #"Expanded Table2" = Table.ExpandTableColumn(#"Merged Queries", "Table2", {"Result"}, {"Result"})
in
    #"Expanded Table2"

【问题讨论】:

  • 仍然卡在这个问题上。有人有什么建议吗?

标签: excel merge powerquery


【解决方案1】:

我会尝试一下。但首先,让我说我认为您的表 3 实际上不会显示绿色,因为不会有匹配项。这是我想出的...

我从 Table1 开始:

...如表 2 所示:

然后我想出了这个M代码:

let
    Source = Table1,
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 0),
    #"Added Custom" = Table.AddColumn(#"Added Index", "Table1Listed", each Record.ToList(Table1{[Index]})),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Table2Listed", each Record.ToList(Table2{[Index]})),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Result", each if List.ContainsAny([Table1Listed],[Table2Listed]) then [Table2Listed]{List.Count([Table2Listed])-1} else null),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom2",{"Test", "Test2", "Test3", "Test4", "Result"})
in
    #"Removed Other Columns"

...得到这个结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多