По сути, это декартово произведение (он же кросс-произведение) из двух списков.
Если у вас есть только два текстовых списка, вы можете сделать однострочную строчку, например:
List.Combine(List.Transform(List1, (L1) => List.Transform(List2, (L2) => L1 & L2)))
Это говорит о том, что для каждого элемента X в первом списке создайте список, который является вторым списком с добавлением X к каждому элементу. Это дает список списков, который сведен в единый список с помощью функции объединения.
Впрочем, это не редкость и для таблицы. В этом случае аналогичная идея состоит в том, чтобы определить новый столбец в одной таблице, где каждая строка представляет собой весь список / столбец другого, а затем развернуть этот новый столбец.
Предполагая, что мы хотим получить перекрестное произведение Table1[Column1]
и Table2[Column2]
:
let
Table1 = <Table1 Source>,
AddCustom = Table.AddColumn(Table1 , "Custom", each Table2),
Expand = Table.ExpandTableColumn(AddCustom, "Custom", {"Column2"}, {"Column2"}),
Concatenate = Table.AddColumn(Expand, "Concatenate", each [Column1] & [Column2])
in
Concatenate
Редактировать: Вы также можете выполнить конкатенацию перед расширением:
let
Table1 = <Table1 Source>,
AddCustom = Table.AddColumn(Table1 , "Custom",
(T1) => List.Transform(Table2[Column2], each T1[Column1] & _)),
Expanded = Table.ExpandListColumn(AddCustom, "Custom")
in
Expanded
Ссылки с более подробной информацией:
Декартовы объединения продуктов
Декартовы объединения двух запросов ...