Table.CombineColumns или где окажется результирующий столбец?

#АнатомияФункций - Table.CombineColumns



Всем привет!

Пилил небольшую задачку и вспомнил один приём, которым и хочу поделиться.

Итак, имеем таблицу, в которой несколько столбцов нужно объединить – в примере просто нужно найти сумму и запихнуть её в столбец "sum". Собственно, ничего сложного – пишем код:

let

from = #table({"a".."f"},{{1..6},{2..7},{3..8}}),

to = Table.CombineColumns(from,{"a","c","e"},List.Sum,"sum"),//{"b","d","sum","f"}

to1 = Table.CombineColumns(from,{"a","e","c"},List.Sum,"sum"),//{"b","sum","d","f"}

to2 = Table.CombineColumns(from,{"c","e","a"},List.Sum,"sum")//{"sum","b","d","f"}

in

to2


from – таблица,

to – объединяем столбцы {"a","c","e"} и на выходе получаем таблицу со следующим порядком столбцов - {"b","d","sum","f"} – и внимательный читатель заметит, что сумма оказалась на месте столбца "e", т.е. последнего в нашем списке.

Интересно, давайте поэкспериментируем:

to1 – поставили последним столбец "c" и теперь результат оказался на его месте

to2 – а теперь результат вообще вначале, на месте столбца "a", поскольку именно его мы указали последним.



Как-то так – для CombineColumns важен порядок имён в списке объединяемых столбцов – так мы можем сразу регулировать, где окажется результат.



Надеюсь, было полезно.

Всех благ!

@buchlotnik