2017-06-18 673 views
0

我从@teylyn in a previous thread得到了一些帮助,以使此代码正常工作。为什么此Power Query操作需要花费很多时间才能完成?

我遇到了一些关于查询操作时间的麻烦。

任务:

的任务是两个独立的联系人列表组合成一个完全新的列表。

我还需要删除共享相同名称和公司名称的重复项。

最后,我需要删除共享相同CompanyID但公司名称不同的联系人。主要列表中的联系人应保存以防发生冲突。

下面的代码工作,但需要很长时间才能完成。

该列表总共包含约8500个联系人。

需要2.5秒来遍历每个联系人,将upp添加到大约6小时直到完成。

我的问题:

为什么这个操作需要很长时间,是有什么办法可以让它更快?

let 
    Source = Table.Combine({PrimaryContacts, SecondaryContacts}), 
    #"Removed duplicates" = Table.Distinct(Source, {"CompanyID", "FirstName", "LastName"}), 
    #"Sorted rows" = Table.Sort(#"Removed duplicates",{{"CompanyID", Order.Ascending}, {"Email", Order.Descending}}), 
    #"Filtered rows" = Table.SelectRows(#"Sorted rows", each ["FirstName"] <> null and ["FirstName"] <> ""), 
    #"Added index" = Table.AddIndexColumn(#"Filtered rows", "Index", 10000, 1), 
    #"Renamed columns" = Table.RenameColumns(#"Added index",{{"Index", "ContactID"}}), 
    #"Reordered columns" = Table.ReorderColumns(#"Renamed columns",{"ContactID", "CompanyID", "CompanyName", "FirstName", "LastName}), // I have removed 10 columns for privacy reasons 
    #"Added index1" = Table.AddIndexColumn(#"Reordered columns", "Index", 0, 1), 
    #"Filtered rows1" = Table.SelectRows(#"Added index1", each (["ContactID"] = 10000 or ["ContactID"] = 10001 or ["ContactID"] = 10002 or ["ContactID"] = 10003 or ["ContactID"] = 10004 or ["ContactID"] = 10005)), 
    /* The filter above is temporary to be able to check if next step works */ 
    /* It is the step below that takes too much time to finish */ 
    #"Add custom" = Table.AddColumn(#"Filtered rows1", "Delete", each if ["CompanyID"]= #"Reordered columns"{[Index]-1}["CompanyID"] and ["CompanyName"]<> #"Reordered columns"{[Index]-1}["CompanyName"] then "Delete" else null) 
in 
    #"Add custom" 

回答

1

可能是因为[Index] = 0,所以[Index] - 1 = -1超出范围的第一行有问题。

通常,使用行索引来引用表行并不是非常有效。 相反,最好添加2个索引列:1以0开始,另一个以1开始。接下来将表与自身合并,使用基于0的索引作为第一个表和基于1的索引的键,如第二张桌子的钥匙。因此,您会得到一个嵌套表格的列,其中包含前一行的数据。如果将此列命名为“Previous”并展开所需列,并使用原始名称作为前缀,则将当前行中的字段与前一行中的字段(前缀“前缀”前缀)合并在一起,然后继续从那里。

+0

您的解决方案像一个魅力工作! Thanx @marcel! – MrDark

相关问题