Всем привет! Возможно разделить значения столбцов на два, при разворачивании в объединении, в случае дубликатов. На примере: В таблице1 есть дублирующие значение в столбце "Имя", объединяем с таблицей2 (по имени), при развороте столбцов "Зарплата" и "Рост" в таблице3, должны получить значения деленные пополам, при условии наличия дублей, если дублей нет то оставляем как есть. В примере все расписал.
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
join = Table.NestedJoin(Источник, {"Имя"}, Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content], {"Имя"}, "Таблица2", JoinKind.LeftOuter),
разворот = Table.ExpandTableColumn(join, "Таблица2", {"Зарплата", "Рост"}, {"Зарплата", "Рост"}),
группировка = Table.Group(разворот, {"Имя"}, {{"Количество", each _, type table [Имя=text, Возраст=number, Зарплата=number, Рост=number]}}),
кол_во_вхождений = Table.AddColumn(группировка, "кол_во_вхождений", each List.Count([Количество][Имя])),
разворот2 = Table.ExpandTableColumn(кол_во_вхождений, "Количество", {"Возраст", "Зарплата", "Рост"}, {"Возраст", "Зарплата", "Рост"}),
Зарплата_new = Table.AddColumn(разворот2, "Зарплата_new", each [Зарплата]/[кол_во_вхождений]),
Рост_new = Table.AddColumn(Зарплата_new, "Рост_new", each [Рост]/[кол_во_вхождений])
in
Рост_new
AlienSx, если не затруднит посмотрите у меня один момент, пож-та - не смог сделать Table.TransformColumns для столбцов Зарплата и Рост, чтобы не добавлять новые столбцы с делением вручную - шаг "деление", выдает ошибку. Понимаю в целом, что PQ не понимает с каким значением из столбца "кол_во_вхождений" скрестить каждое текущее значение из столбца "Зарплата" - как переписать функцию в Table.TransformColumns ?
Скрытый текст
Код
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
join = Table.NestedJoin(Источник, {"Имя"}, Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content], {"Имя"}, "Таблица2", JoinKind.LeftOuter),
разворот = Table.ExpandTableColumn(join, "Таблица2", {"Зарплата", "Рост"}, {"Зарплата", "Рост"}),
группировка = Table.Group(разворот, {"Имя"}, {{"Количество", each _, type table [Имя=text, Возраст=number, Зарплата=number, Рост=number]}}),
кол_во_вхождений = Table.AddColumn(группировка, "кол_во_вхождений", each List.Count([Количество][Имя])),
разворот2 = Table.ExpandTableColumn(кол_во_вхождений, "Количество", {"Возраст", "Зарплата", "Рост"}, {"Возраст", "Зарплата", "Рост"}),
изм_тип = Table.TransformColumnTypes(разворот2,{{"кол_во_вхождений", Int64.Type}}),
деление = Table.TransformColumns(изм_тип, {"Зарплата", each _/[кол_во_вхождений]})
in
деление
voler83 написал: Понимаю в целом, что PQ не понимает с каким значением из столбца "кол_во_вхождений" скрестить каждое текущее значение
так в том и дело, что Table.TransformColumns не видит ничего вокруг себя. Поэтому нужны Table.AddColumn, Table.TransformRows, Table.ToList, Table.ReplaceValue и т.п. , но не Table.TransformColumns. Ну только если заранее "зашить" в колоночку ее значение и кол-во повторов (скажем, упаковать возраст, рост и кол-во повторов в запись - Table.CombineColumnsToRecord) и уж потом Table.TransformColumns. Но мы извращения не приветствуем p.s. а шаг "деление" выдает ошибку, потому что ему неведом зверь [кол_во_вхождений]. Each (или (_) ) в этом случае представляет собой скаляр, а не запись. Поэтому обращение к полю записи в этом случае недопустимо.