Опубликовано: 22 ноября, 2022

Значительную часть задач, которую можно решить с помощью DAX, в Luxms BI можно сделать встроенными методами (включая специальный встроенный парсер выражений).

  1. Можно создать межу с типом AGG_FN (и в конфиге проверить наличие поля
    “aggFormula”: true ), которая содержит в себе поле с SQL выражения для подстановки в запрос к источнику данных. Там может быть весьма разный по сложности SQL запрос. Такие межи могут использовать другие межи с агрегациями и делать операции уже с ними, если это необходимо.
    Такой подход может помочь, если нужно использовать оконные функции или посчитать нарастающий итог, например:2. Использование встроенного в Luxms BI парсера  выражений на основе LISP – LPE (Lux Path Expressions):
    При конфигурировании дэшлета можно создать межу, которой явно нет в кубе, но которая будет считаться «на лету», с использованием формулы, содержащей в себе операции над полями в кубе. Это делается при помощи LPE-выражений, которые будут использовать функции вида
    sum,
    min,
    max,
    sin, cos,… (математика)
    count,Специальные функции агрегаций:
    (работает в PostgreSQL, Greenplum, Clickhouse, Oracle > 9, MS SQL, Teradata)

    var_pop, var_samp (дисперсии),
    stddev_samp, stddev_pop (среднеквадратичные отклонения),
    mode (мода),
    median (медиана)

    По итогу можно написать выражение, которое есть ни что иное как формула для расчета межи (в данном примере формула не имеет физического смысла, просто демонстрирует то, как это может выглядеть синтаксически):
    (max(max_val_str) – avg(value) * 100 / stddev_pop(delta): my_new_measure_name
    Выражение может быть и куда сложнее. В данном случае мы создаем межу my_new_measure_name и неявно задаем ей формулу для расчета на понятном языке.

    3. Некоторые межи можно создать прямо в основном select для куба как доп.колонки таблицы и в дальнейшем использовать их как напрямую, так и в операциях других меж.