PowerQuery объединить столбцы - PullRequest
2 голосов
/ 15 февраля 2020

У меня есть две таблицы. Таблица 1 и Таблица 2.
Таблица 1 = необработанные данные Таблица 2 = условный фильтр для применения к Таблице 1

Цель: Каждая строка в Таблице 2 будет содержать 1 или более данных столбца. Если тот же столбец из таблицы 1 содержит элемент фильтра, то формулировка столбца «Результат» будет заполнена новой таблицей 3.

Проблема: в настоящее время приведенный ниже код работает, только если в таблице 2 все столбцы точно совпадают

Вопрос: Требуются рекомендации / руководство по кодированию о том, как вызвать столбец «Результат», который требуется только для каждой строки столбцов, заполненных в Таблице 2. Будет ли работать какой-то вид List.Contains (), когда он игнорирует «ноль» столбцы?

Таблица 1 - необработанные данные

enter image description here

Таблица 2 - фильтры для таблицы 1

enter image description here

Таблица 3 - результаты

enter image description here

Код, который я сейчас использую:

let
    Source = Table1,
    #"Merged Queries" = Table.NestedJoin(Source,{"Test", "Test2", "Test3", "Test4"},Table2,{"Test", "Test2", "Test3", "Test4"},"Table2",JoinKind.LeftOuter),
    #"Expanded Table2" = Table.ExpandTableColumn(#"Merged Queries", "Table2", {"Result"}, {"Result"})
in
    #"Expanded Table2"

1 Ответ

0 голосов
/ 10 марта 2020

Я сделаю это. Но сначала позвольте мне сказать, что я думаю, что ваша таблица 3 не будет отображать зеленый цвет, потому что совпадений не будет. Вот что я придумал ...

Я начал с этого как Таблица1:

enter image description here

... и это как Таблица 2:

enter image description here

Затем я пришел с этим M-кодом:

let
    Source = Table1,
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 0),
    #"Added Custom" = Table.AddColumn(#"Added Index", "Table1Listed", each Record.ToList(Table1{[Index]})),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Table2Listed", each Record.ToList(Table2{[Index]})),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Result", each if List.ContainsAny([Table1Listed],[Table2Listed]) then [Table2Listed]{List.Count([Table2Listed])-1} else null),
    #"Removed Other Columns" = Table.SelectColumns(#"Added Custom2",{"Test", "Test2", "Test3", "Test4", "Result"})
in
    #"Removed Other Columns"

..., чтобы получить этот результат:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...