Мне помог @teylyn в предыдущем потоке, чтобы этот код заработал.
Я столкнулся с еще некоторыми проблемами, связанными со временем выполнения запроса.
Задача:
Задача состоит в том, чтобы объединить два отдельных списка контактов в один совершенно новый список.
Мне также нужно удалить дубликаты, которые имеют одно и то же имя и название компании.
Наконец, мне нужно удалить контакты с одним и тем же идентификатором компании, но с другим названием компании. Контакты из Первичного списка следует сохранить на случай возникновения конфликта.
Приведенный ниже код работает, но его выполнение занимает слишком много времени.
Список содержит в общей сложности около 8500 контактов.
Итерация каждого контакта занимает 2,5 секунды, что в сумме составляет примерно 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"