PQ: Удалить группу строк, если только одна из строк в группе имеет заданное значение c - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть 2 столбца. (См. Связанное изображение ниже)

Кол 1 - Идентификатор товара

Кол 2 - Идентификатор склада

Я хочу удалить все строки для определенной группы Кол1 (Идентификатор товара) ) если только 1 из строк в группе имеет значение 20 или 50 в Col2 (идентификатор хранилища) вход Excel и вывод Power Query

1 Ответ

0 голосов
/ 24 апреля 2020
let
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ItemId", type text}, {"WarehouseID ", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"ItemId"}, {{"AllRows", each _, type table [ItemId=text, #"WarehouseID "=number]}}),
#"Added Index" = Table.AddIndexColumn(#"Grouped Rows", "Index", 1, 1),
#"Expanded AllRows" = Table.ExpandTableColumn(#"Added Index", "AllRows", {"WarehouseID "}, {"WarehouseID "}),
#"Added Conditional Column" = Table.AddColumn(#"Expanded AllRows", "Find ItemId", each if [#"WarehouseID "] = 20 then [ItemId] else if [#"WarehouseID "] = 50 then [ItemId] else null),
#"Merged Queries" = Table.NestedJoin(#"Added Conditional Column", {"ItemId"}, #"Find ItemId", {"Column1"}, "Find ItemId.1", JoinKind.LeftAnti),
#"Removed Other Columns" = Table.SelectColumns(#"Merged Queries",{"ItemId", "WarehouseID ", "Index"})

в # "Удалены другие столбцы"

let
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"ItemId", type text}, {"WarehouseID ", Int64.Type}}),
#"Grouped Rows" = Table.Group(#"Changed Type", {"ItemId"}, {{"AllRows", each _, type table [ItemId=text, #"WarehouseID "=number]}}),
#"Added Index" = Table.AddIndexColumn(#"Grouped Rows", "Index", 1, 1),
#"Expanded AllRows" = Table.ExpandTableColumn(#"Added Index", "AllRows", {"WarehouseID "}, {"WarehouseID "}),
#"Added Conditional Column" = Table.AddColumn(#"Expanded AllRows", "Find ItemId", each if [#"WarehouseID "] = 20 then [ItemId] else if [#"WarehouseID "] = 50 then [ItemId] else null),
#"Find ItemId1" = #"Added Conditional Column"[Find ItemId],
#"Removed Duplicates" = List.Distinct(#"Find ItemId1"),
#"Converted to Table" = Table.FromList(#"Removed Duplicates", Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Filtered Rows" = Table.SelectRows(#"Converted to Table", each ([Column1] <> null))

в # "Отфильтрованные строки"

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