2017-09-15 55 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」之類後綴的其他名稱,但現在僅僅修整空格就足夠了。