Вы можете сделать это, но с большими столами очень медленно.Давайте посмотрим на пример с промежуточным итогом.
Возьмем таблицу с именем «Source» со столбцом «Значения» с номерами для накопления.
Первое, что нужно сделать, это добавить столбец индекса.
Indexed = Table.AddIndexColumn(Source, "Index"),
Затем, после вашего вопроса, добавляется новый столбец с именем «RunTot».Каждое значение этого нового столбца будет числом из «Значений» этой строки плюс предыдущий промежуточный итог («RunTot»).Уловка - это символ "@" перед этой частью "@Output [RunTot] {[Index] -1}", так вы вызываете предыдущий элемент столбца, который вы строите.
"try... иначе "это просто способ избежать ошибки, которую вы получаете при передаче отрицательного индекса в список.
Последнее," Table.Buffer "- это способ немного ускорить процесс мышления.
Output = Table.Buffer(Table.AddColumn(Indexed, "RunTot", each [Values] + (try @Output[RunTot]{[Index]-1} otherwise 0)))
Но, как предлагает Алексис, гораздо лучше подход "List.Generat".Это промежуточная функция с использованием List.Generate:
fnListGenerateRunningTotal = (Input as list) as list =>
List.Generate(
()=> [Total = Input{0}, Counter = 0],
each [Counter] < List.Count(Input),
each [Total = Input{Counter} + [Total], Counter = [Counter] + 1],
each [Total]
)