Функционал DAX языка встроенными методами Luxms BI

Значительную часть задач, которую решает функционал 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 для куба как доп.колонки таблицы и в дальнейшем использовать их как напрямую, так и в операциях других меж.