Table.Group提供重复键

时间:2017-09-15 15:00:00

标签: excel powerquery

我有如下查询:

let
    Source = Table.Combine({#"T1", #"T2", #"T3"}),
#"Grouped Rows" = Table.Group(Source, {"Name"}, {
    {"T1.Col", each List.Min([T1Col]), type text},
    {"T2.Col", each List.Min([T2Col]), type text},
    {"T3.Col", each List.Min([T3Col]), type text}
    })
in
    #"Grouped Rows"

我用它来找到" Name"的唯一值。在所有三个源表T1..T3中,然后从三个不同的源表中选择一些值,以检查原始表中是否存在此特定名称的任何数据。

执行此操作后,我希望最终得到" name"的唯一值,但实际上我得到了重复。

这种奇怪行为的原因是什么?不修复源表中的值类型? Bat字符编码?不同的表格是从各个共享点网站上的Excel工作表中加载的,因此糟糕的数据可能是一个问题,但我不具备PowerQuery的经验来了解要查找的错误输入类型。

更重要的是:如何在聚合原始表时获取Name的唯一值?

1 个答案:

答案 0 :(得分:0)

问题是尾随空格导致PowerQuery在Table.group下创建两个不同的行,但新表行不包括尾随空格,使它们成为重复的名称。

我通过将脚本转换为

来解决了这个问题
let
    Source = Table.Combine({#"T1", #"T2", #"T3"}),
    #"Trimmed Text" = Table.TransformColumns(Source,{{"Name", Text.Trim}}),
    #"Grouped Rows" = Table.Group(#"Trimmed Text", {"Name"}, {
        {"T1.Col", each List.Min([T1Col]), type text},
        {"T2.Col", each List.Min([T2Col]), type text},
        {"T3.Col", each List.Min([T3Col]), type text}
    })
in
    #"Grouped Rows"

缺点是我实际上使用脚本来评估数据质量和正确使用名称,因此我希望在分组后在不同的行上找到具有唯一名称的两个名称。一个较长期的修复可能是我用尾随空格将名称转换为带有后缀的其他名称,例如“_TRAIL”,但只是修剪空格现在已经足够了。