Ich habe Hilfe von @teylyn in a previous thread bekommen, um diesen Code zu bekommen.Warum dauert diese Power Query-Operation so lange?
Ich habe mehr Probleme in Bezug auf die Betriebszeit für die Abfrage aufgetreten.
Die Aufgabe:
Die Aufgabe ist zwei Listen separaten Kontakt in eine völlig neue Liste zu kombinieren.
Ich muss auch Duplikate entfernen, die den gleichen Namen und den gleichen Firmennamen haben.
Schließlich muss ich Kontakte entfernen, die die gleiche CompanyID teilen, aber der Firmenname unterscheidet sich. Die Kontakte aus der Liste Primär sollten im Falle eines Konflikts beibehalten werden.
Der untenstehende Code funktioniert, benötigt aber viel zu lange Zeit.
Die Liste enthält insgesamt ca. 8500 Kontakte.
Es dauert 2,5 Sekunden, um durch jeden Kontakt zu iterieren, der bis ca. 6 Stunden dauert, bis es fertig ist.
Meine Frage:
Warum dieser Vorgang so lange dauern und ist es eine Möglichkeit, es schneller zu machen?
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"
Ihre Lösung funktionierte wie ein Charme! Danke @Marcel! – MrDark