2017-09-15 56 views
0

我有类似下面的查询:Table.Group给人重复键

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" 

我用它在所有三个源表中找到“名称”的独特价值T1..T3和再挑选一些价值从三个不同的源表中检查是否有来自这个特定名称的原始表的任何数据。

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

这种奇怪的行为是什么原因?不在源表中固定值类型? Bat字符编码?不同的表格从不同的SharePoint站点上的Excel表格加载,所以不好的数据可能是一个问题,但我没有PowerQuery的经验知道要寻找什么样的不良输入。

更重要的是:如何在汇总原始表时获得名称的唯一值?

回答

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”之类后缀的其他名称,但现在仅仅修整空格就足够了。