
Описание
У нас есть данные с ценами по каждому товару. Для каждого товара есть несколько цен. Мы хотим добавить столбец с минимальной ценой для каждого товара, но при этом требуется сохранить исходную структуру.

В итоговой таблице столбец «Минимум» должен быть заполнен данными.

Решение
На первом этапе мы создадим дубликат первого столбца и заполним его вниз.

Дальше мы создадим еще 1 запрос, в котором выполним группировку по добавленному столбцу. В качестве функции выберем минимум.

На заключительном этапе объединим первые 2 запроса.

Примененные функции
- Table.TransformColumnTypes
- Int64.Type
- Table.DuplicateColumn
- Table.FillDown
- Table.Group
- List.Min
- Table.RemoveColumns
- Table.NestedJoin
- Table.ExpandTableColumn
Код
Первый запрос:
let
source = Excel.CurrentWorkbook(){[Name = "Дано"]}[Content],
types = Table.TransformColumnTypes(
source,
{{"Товар", type text}, {"Цена", Int64.Type}}
),
table_col_copy = Table.DuplicateColumn(types, "Товар", "Товар - Копия"),
col_fill_down = Table.FillDown(table_col_copy, {"Товар - Копия"})
in
col_fill_down
Второй запрос:
let
source = ИсходныеДанные,
table_group = Table.Group(
source,
{"Товар - Копия"},
{{"Минимум", each List.Min([Цена]), type number}}
)
in
table_group
Объединяем 2 запроса:
let
source = ИсходныеДанные,
cols_select_1 = Table.RemoveColumns(source, {"Минимум"}),
tables_join = Table.NestedJoin(
cols_select_1,
{"Товар - Копия"},
Группировка,
{"Товар - Копия"},
"Пользовательская"
),
col_expand = Table.ExpandTableColumn(
tables_join,
"Пользовательская",
{"Минимум"},
{"Минимум"}
),
cols_select_2 = Table.RemoveColumns(col_expand, {"Товар - Копия"}),
cols_reorder = Table.ReorderColumns(
cols_select_2,
{"Товар", "Минимум", "Цена"}
)
in
cols_reorder