Объедините две (таблицы или списки), чтобы создать вывод уникальных комбинаций в Power BI - PullRequest
1 голос
/ 15 апреля 2020

Попытка объединить два запроса в Power BI для получения уникальных комбинаций.

например, один список (или столбец): A, B, C

и другой список (или столбец): 1, 2, 3, 4, 5, 6, 7

Выходные данные должны быть: A1, A2, A3, A4, A5, A6, A7, B1, B2, B3, B4, B5, B6, B7, C1, C2, C3, C4, C5, C6, C7

Есть ли способ сделать это? 1011 *? (Да, мои строки не равны по количеству) Просто не знаю лучшего или правильного подхода для этого (попытался использовать объединение со вспомогательным столбцом и попасть в тупик при создании дубликатов, если я не сделал это неправильно)

1 Ответ

1 голос
/ 15 апреля 2020

По сути, это декартово произведение (он же кросс-произведение) из двух списков.

Если у вас есть только два текстовых списка, вы можете сделать однострочную строчку, например:

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

Ссылки с более подробной информацией:

Декартовы объединения продуктов

Декартовы объединения двух запросов ...

...