Межстрочные функции
Межстрочные функции считают значение с оглядкой на соседние строки: накопительная сумма, значение из предыдущей строки, скользящее среднее, место в рейтинге. В редакторе они собраны в группе «По строкам».
Важно: в каком порядке идут строки
Заголовок раздела «Важно: в каком порядке идут строки»В поле-формуле таблицы эти функции видят строки в порядке добавления, новые сверху, и только загруженную порцию строк. Ваша сортировка в таблице на них не влияет. Поэтому:
- «предыдущая» строка для
lagдобавлена позже текущей; running_sumкопит сумму от самой новой записи к старым и начинается заново в каждой порции.
Для динамики во времени (нарастающий итог, изменение к прошлому месяцу, скользящее среднее) надёжнее виджеты: линейный график, KPI со сравнением, «Сравнение периодов». Межстрочные функции подходят для небольших таблиц, которые вы заполняете по порядку.
running_sum(expr)
Заголовок раздела «running_sum(expr)»Накопительная сумма от первой строки до текущей включительно.
running_sum([Сумма])running_sum(if([Тип] == "Доход", [Сумма], -[Сумма]))lag(expr, n=1)
Заголовок раздела «lag(expr, n=1)»Значение из строки на n позиций раньше. Если такой строки нет, результат пустой.
lag([Цена]) // значение соседней строкиlag([Сумма], 3) // три строки назадlead(expr, n=1)
Заголовок раздела «lead(expr, n=1)»То же, но в другую сторону.
lead([Дата платежа])window_avg(expr, n)
Заголовок раздела «window_avg(expr, n)»Скользящее среднее за последние n строк, включая текущую.
window_avg([Сумма], 3)Пусто, если n ≤ 0 или все значения окна пустые.
rank(expr)
Заголовок раздела «rank(expr)»Место по убыванию: строка с наибольшим значением получает 1. Равные значения получают одинаковое место. Пустые значения не участвуют.
rank([Доходность]) // место актива по доходностиrank не зависит от порядка строк, но тоже видит только загруженную порцию.
Граничные случаи
Заголовок раздела «Граничные случаи»- В формуле виджета внутри агрегата межстрочные функции не работают: им нужен порядок строк, а агрегат его не задаёт.
- Если
nбольше, чем строк до текущей,lagвернёт пусто.
Когда running_sum, а когда sum
Заголовок раздела «Когда running_sum, а когда sum»sum([Сумма]): одно число по всем строкам (агрегат).running_sum([Сумма]): своё накопленное число в каждой строке.
Частые ошибки
Заголовок раздела «Частые ошибки»- Ждут, что
lagвозьмёт прошлый месяц. Строки идут в порядке добавления, а не по дате. Для «к прошлому периоду» используйте сравнение в KPI. rankпо полю-связи. Связь хранит ссылку, ранжировать по ней бессмысленно. Ранжируйте по числу.