Страницы: 1
RSS
Power Query. Вычисл. столбец с маркером по критерию
 
Уважаемые специалисты,

Пытаюсь в PQ создать выч. столбец, в котором каждая строка с адресом должна быть промаркирована "1" в случае, если в столбце "Тип реализации" с таким адресом хоть раз встречается критерий "Бонус"

Короткий пример прилагаю  
 
Можно так:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    GroupedRows = Table.Group(Source, {"Адрес"}, {{"Тип адреса", each Number.From( Table.RowCount( Table.SelectRows(_, each [Тип реализации] = "Бонус") ) > 0 ), type number}, {"таб", each _, type table}}),
    Expanded = Table.ExpandTableColumn(GroupedRows, "таб", {"Тип реализации"}, {"Тип реализации"})
in
    Expanded
Вот горшок пустой, он предмет простой...
 
еще вариант
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Grouped = Table.RenameColumns(Table.Group(Source, {"Адрес"}, {{"a", each if Text.Contains(Text.Combine([Тип реализации]," "), "Бонус") then 1 else null, type text}}),{{"Адрес", "Адрес_2"}}),
    Merged = Table.Join(Source,{"Адрес"},Grouped,{"Адрес_2"},1)
in
    Merged
 
PooHkrd, я поражен, и нет этому предела! Очень мощно, и скорость!

Уже увидел две темы с Вашими действиями по Table.Group...
Только хочу уточнить, возможно ли именно этот фокус делать из Ленты User interface "Группировать по", или только прописанием самой функции

Большое Вам спасибо!
 
artyrH, на заметку, в вашем случае совсем не обязательно запариваться с переименованием столбца и делать лефтджойн. Можно записать и так:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    Grouped = Table.Group(Source, {"Адрес"}, {{"a", each if Text.Contains(Text.Combine([Тип реализации]," "), "Бонус") then 1 else null, type text}}),
    Merged = Table.Join(Source,{"Адрес"},Grouped,{"Адрес"})
in
    Merged

Когда делаете иннерджойн то ключевые столбцы могут по имени совпадать. При этом т.к. вы делаете слияние к таблице её же саму только сгруппированную, то вы можете быть уверены что по ключевым столбцам уникальные значения будут совпадать, а значит при внутреннем слиянии ничего никуда не пропадет.

Цитата
Дмитрий Марков написал:
Только хочу уточнить, возможно ли именно этот фокус делать из Ленты User interface "Группировать по",
Вот так, все только кнопками, кроме функции в добавленном столбце. Тут уж курите мануалы, как говорится.
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    #"Grouped Rows" = Table.Group(Source, {"Адрес"}, {{"таб", each _, type table}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Тип адреса", each Number.From( Table.RowCount( Table.SelectRows( [таб], each [Тип реализации] = "Бонус") ) > 0 ), type number),
    #"Expanded {0}" = Table.ExpandTableColumn(#"Added Custom", "таб", {"Тип реализации"}, {"таб.Тип реализации"})
in
    #"Expanded {0}"
Изменено: PooHkrd - 11.12.2019 15:20:13
Вот горшок пустой, он предмет простой...
 
Ушел курить мануалы
 
PooHkrd, спасибо
Страницы: 1
Наверх