Expression.Evaluate + таблица условий =… кайф

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



Всем привет!



Подогнали задачку с таблицей условий для формирования агрегаций по таблице. Так и хочется сказать, что я таблицы не люблю, ими давлюсь и предпочитаю списки разводить… Но, с другой стороны, почему бы не поупражняться с Expression.Evaluate?



По этому поводу код:

let

f = (x)=>[ a = "Column"&Text.From(List.Last(Record.ToList(x{0}))),

b = Table.SelectRows(base,g(x)),

c = List.Sum(Table.Column(b,a))][c],

g = (x)=>[ a = List.Split(List.RemoveLastN(List.Skip(Table.ToColumns(x)),1),3),

b = (x)=>if x{2}{0}=null then null else "("&Text.Combine(List.Transform(List.Distinct(x{2}),c(x))," or ")&")",

c = (x)=>(y)=>Text.Format("(x[Column#{0}]#{1}""#{2}"")",{x{0}{0},x{1}{0},y}),

d = Expression.Evaluate("(x)=>"&Text.Combine(List.Transform(a,b)," and "))][d],



base = Table.Buffer(Excel.CurrentWorkbook(){[Name="Исходные"]}[Content]),

from = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],

to = Table.Group(from, "Строка итога", {"Сумма",f})

in

to




Ну а что тут к чему – смотрим дзен

Файл-исходник забираем на sponsr

Даже ютуб сегодня благосклонен



Лайки, комменты, подписки приветствуются )))

(по подписке ещё и курс с понедельника)



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

Всех благ!

@buchlotnik