Основной вопрос - зачем заставлять PQ считать формулы, которые потом можно выполнить в DAX (в разы быстрее). Уверен, сам по себе такой столбец вам не нужен, потом все равно будете делить одно на другое и так далее, считать разные ABC и т.п.
Задача PQ - подготовить данные для дальнейших расчетов.
Если всё же надо именно так, то три варианта одной формулой:
1. Почти СУММЕСЛИМН
Код |
---|
= Table.AddColumn(Источник, "Сумма Продаж по товару", each List.Sum(Table.SelectRows(Источник, (r)=>r[Код]=_[Код] and r[Товар]=_[Товар])[Продажи])) |
2. Можно так (две группировки - сумма и "все строки"), потом разворачиваем:
Код |
---|
#"Grouped Rows" = Table.Group(Источник, {"Код", "Товар"}, {{"tab", each _, type table}, {"Сумма продаж по товару", each List.Sum([Продажи]), type number}}),
#"Expanded {0}" = Table.ExpandTableColumn(#"Grouped Rows", "tab", {"Город", "Продажи"}, {"Город", "Продажи"}) |
3. Но лучше и гораздо быстрее на вашем объеме данных - через джойн (слияние) с группировкой. Группировки и джойн в PQ оптимизированы, и выполняется быстрее, чем группировка и разворачивание.
Код |
---|
= Table.Join(Источник, {"Код", "Товар"}, Table.Group(Источник, {"Код", "Товар"}, {{"Сумма Продаж по товару 2", each List.Sum([Продажи])}}), {"Код", "Товар"}) |
Не стоит в PQ пытаться всегда соблюсти логику формул Excel, это не всегда лучший путь.