Страницы: 1
RSS
Построение простых вычислений в Power Query, Работа с простыми вычислениями в Power Query с ссылкой на ячейку выше
 
Добрый день. Появилась проблема с простыми вычислениям в Query, не могу понять как прописать формулу в настраиваемый столбец.
Проблема с ссылкой на ячейку выше.
На начало месяца есть переходящий остаток, к примеру 50тыс р.
Каждый день есть 3 меняющихся показателя, в данном примере
Показатель 1   (прибыль)Показатель 2 (расходы)Показатель 3 (Остаток)
Показатель 1 и 2 автоматически подгружаются в таблицу, показатель 3 высчитывается как:
Показатель 3 (остаток) за прошлый день плюс показатель 1 за текущий день и  минус показатель 2 за текущий день, таким образом получаем остаток на текущий день.
Как это можно прописать в настраиваемый столбец расчеты Показателя 3, чтобы данные ссылались на строку выше и делали вычисления по текущему дню?
Пример во вложении
Изменено: Татьяна Саломонова - 27.05.2022 20:42:37
 
Цитата
Татьяна Саломонова написал:
Пример во вложении
И где он?
 
Цитата
написал:
Цитата
Татьяна Саломонова написал:
Пример во вложении
И где он?
Простите не подгрузилось, теперь точно во вложении)
 
Татьяна Саломонова, приложите пример с реальным видом данных, которые Вы грузите в PQ. Без формул; и, наверное, Вы из умной таблицы грузите, а не просто с листа.
 
Цитата
написал:
Татьяна Саломонова, приложите пример с реальным видом данных, которые Вы грузите в PQ. Без формул; и, наверное, Вы из умной таблицы грузите, а не просто с листа.
У меня данные в power bi подгружаются, в самом экселе нету
 
Татьяна Саломонова,
1. Так запрос скопируйте в excel.
2. Если данные конфиденциальные, сделайте пример в умной таблице excel в ТАКОМ ЖЕ виде, как они грузятся в PBI. У Вас же формулы там не грузятся.
 
1. Уважаемые модераторы, прошу переименовать тему в "Нарастающий итог, PQ".
2. Татьяна Саломонова, не знаю, где у Вас изнАчальная сумма в PBI. Сделал в отдельной таблице.
К сожалению, в PQ, в отличие от SQL, нет простого способа обратиться к предыдущей строке. Довольно просто это сделать по индексу, но это будет безумно медленно. Используйте List.Accumulate или List.Generate.
Вариант:
Код
let
  initialSum = Table.FirstValue ( Excel.CurrentWorkbook(){[ Name = "initialSum" ]}[Content] ),
  data = Excel.CurrentWorkbook(){[ Name = "data" ]}[Content],
  typed = Table.TransformColumnTypes ( data, { { "Дата", type date } } ),
  recs = List.Buffer ( Table.ToRecords ( typed ) ),
  generate = List.Generate (
    () => [ i = 0, result = Record.AddField ( recs{i}, "Показатель 3 (остаток)", initialSum ) ],
    each [i] < List.Count ( recs ),
    each [
      i = [i] + 1,
      result = Record.AddField (
        recs{i},
        "Показатель 3 (остаток)",
        [result][#"Показатель 3 (остаток)"] + recs{i - 1}[#"Показатель 1 (прибыль)"] - recs{i - 1}[#"Показатель 2 (расходы)"]
      )
    ],
    each [result]
  ),
  toTable = Table.FromRecords (
    generate,
    type table [ Дата = date, #"Показатель 1 (прибыль)" = number, #"Показатель 2 (расходы)" = number, #"Показатель 3 (остаток)" = number ]
  )
in
  toTable

P.S. Старайтесь выполнять то, что Вас просят. Я не просто так просил дать пример данных в нормальном виде. А то потом начнется: "А у меня начальная сумма в другом месте, как переделать, чтобы работало?"
Изменено: surkenny - 29.05.2022 23:40:40
Страницы: 1
Наверх