Скажите, что я хочу проверить, какие значения в этой таблице ("firstTable"
):
существуют в этой таблице ниже ("secondTable"
):
Подход 1
Если вы хотите только проверить наличие (а не выполнитьобъединить), тогда это может быть один подход:
let
firstTable = Table.FromColumns({List.Numbers(1,10,1)}, type table [column A=Int64.Type]),
secondTable = Table.FromColumns({List.Numbers(1,10,2)}, type table [column B=Int64.Type]),
check = Table.AddColumn(firstTable, "Is column A in column B?", each Table.Contains(secondTable, [column B = [column A]]), type logical)
in
check
подход 2
Аналогичный, но более подробный подход может быть:
let
firstTable = Table.FromColumns({List.Numbers(1,10,1)}, type table [column A=Int64.Type]),
secondTable = Table.FromColumns({List.Numbers(1,10,2)}, type table [column B=Int64.Type]),
check = Table.AddColumn(firstTable, "Is column A in column B?", each let colA = [column A], lookup = Table.MatchesAnyRows(secondTable, each [column B] = colA) in lookup, type logical)
in
check
Подход 3
Этот подход фактически выполняет слияние, а затем проверяет, содержит ли каждая объединенная / объединенная таблица какие-либо строки.Я бы предположил, что он будет медленнее других (теоретически он будет пытаться объединить / сопоставить все строки и не будет выходить, как только будет найдено одно совпадение), но я могу ошибаться, и это зависит от Table.Join
'внутренняя реализация.
let
firstTable = Table.FromColumns({List.Numbers(1,10,1)}, type table [column A=Int64.Type]),
secondTable = Table.FromColumns({List.Numbers(1,10,2)}, type table [column B=Int64.Type]),
merged = Table.NestedJoin(firstTable, {"column A"}, secondTable, {"column B"}, "Is column A in the second table?", JoinKind.LeftOuter),
isEmpty = Table.TransformColumns(merged, {{"Is column A in the second table?", Table.IsEmpty, type logical}})
in
isEmpty
Я дал три подхода, поскольку вы не показали свои данные / пример.Трудно предположить, что будет хорошо работать.Но, надеюсь, вы можете попробовать их, и одна из них будет полезна / эффективна для размера ваших данных.
Обратите внимание, что первые две строки (каждого фрагмента M
) предназначены только для создания фиктивных таблиц firstTable
и secondTable
.