Страницы: 1
RSS
Цикл в Power Query (дублирование логики сета шагов по годам)
 
Добрый вечер всем.

Допустим, у меня есть сет из 4 шагов в запросе, которые мне нужно продублировать для каждого года из [Год1-Год5], при этом каждый последующий год должен брать значения из предыдущего. Сет шагов на примере Год3:
 
Код
    #"Добавлен пользовательский объект31" = Table.AddColumn(#"Добавлен пользовательский объект30", "Выручка.3", each [Выручка.2]*(1+[EBITDA_OWN.LFL.Значение.3]), type number),
    #"Добавлен пользовательский объект32" = Table.AddColumn(#"Добавлен пользовательский объект31", "EBITDA.3", each [Выручка.3]*[EBITDA_OWN.EBITDA.Значение.3], type number),
    #"Добавлен пользовательский объект33" = Table.AddColumn(#"Добавлен пользовательский объект32", "TOTAL DEPR.3", each [TOTAL DEPR.2]+([Capex PCP.2]+[Capex Equipment.2])*Assumptions_indicators[link]{0}+(-Assumptions_indicators[link]{0}*[Capex PCP.2]+[Capex Equipment.2]*-Assumptions_indicators[link]{0})/([Defl.Значение.2]/100), type number),
    #"Добавлен пользовательский объект34" = Table.AddColumn(#"Добавлен пользовательский объект33", "CPT.3", each if (-[EBITDA.3]-[TOTAL DEPR.3])*Assumptions_indicators[link]{5} < 0 then 0 else (-[EBITDA.3]-[TOTAL DEPR.3])* Assumptions_indicators[link]{5})

Есть ли возможность в PQ как-то прописать это циклом или еще как-то реализовать, чтобы не прописывать всю логику для каждого года, меняя циферки. И чтобы в случае изменения формулы расчета для 1 года, логика менялась и в остальных сообразно?
 
От примера в ворде пришли к отсутствию примера вообще :)
Без файла-примера Вам ничего не подскажут толкового.
Цитата
anyarceva написал:
Цикл в Power Query
List.Accumulate, List.Generate
Цитата
anyarceva написал:
дублирование логики сета шагов по годам
сделайте из "сета шагов" функцию и примените ее согласно Вашей задаче
 
whateverlover, спасибо, мне для начала в принципе хотелось понимать возможность такую. упрощенный пример приложила
 
anyarceva, просто пример того, как можно это реализовать.
Но надо ли так? Вам виднее, что требуется, но на выходе получается таблица, по которой ни сводную не построить, ни посчитать что-то толком.
Код
let
    Источник = Sales,
    YearsToAdd = Table.RowCount(EBITDA)-1,
    Cycle = 
        List.Accumulate(
            {1..YearsToAdd}, 
            Источник, 
            (s,c) => [ a = Table.AddColumn(s, "Год"&Text.From(c+1), each  Record.Field(_, "Год"&Text.From(c) ) + 1)
                    // b = Джойним, если надо,
                    // c = Что-то считаем, если надо, 
                     ][a] 
        )
in
    Cycle
Страницы: 1
Наверх