Книга рецептов LPE
В данном разделе описаны примеры использования LPE-выражений для вычисления различных фактов в разделе “Размерности” виджета.
Математические функции
Математические функции могут использоваться как для работы с единичными значениями, так и со столбцами. Например, ниже показано вычисление EBIDA-показателя.
sum(revenue_without_nds)-sum(price_without_nds*sales_amount):ebida
Здесь вычитание применяется к единичным значениям, а умножение к столбцам.
В тригонометрических функциях по умолчанию используются радианы, а не углы, однако, специальные функции позволяют преобразовывать радианы и градусы между собой. В примере ниже вычисляется расстояние от Санкт-Петербурга до различных объектов при помощи их координат.
acos(sin(radians(59.9386))*sin(radians(latitude)) + cos(radians(59.9386))*cos(radians(latitude)) * cos(radians(30.3141 - (longitude)))) * 6371:distance
Ниже приведен пример использования функции power()
при расчёте сложных процентов.
deposit*power(1+percents/100, years):summa
Эту же формулу можно использовать для вычисления количества лет, через которые сумма перевалит через определенный порог
log(1+percents/100, 2):years_num
При расчёте величин, которые могут оказаться не целыми числами рекомендуем использовать функцию round()
и её аналоги (floor()
и ceiling()
).
Важно заметить, что в интерфейсе Luxms BI есть другой инструмент для округления чисел - в настройках виджета вы можете задать формат числа (снимок экрана ниже), если вы используете его, то в функции round()
нет необходимости.
Пример использования функции round()
для округления результата деления:
round(sum(revenue_without_nds)/1000, 2):revenu
Строковые функции
Чаще всего строковые функции используются для создания или редактирования размерностей, а не фактов. Например, с помощью LPE можно создать столбец “ФИО” из отдельных “Имя”, “Отчество”, “Фамилия”:
concat(surname, name, fathername):full_fio
Или убрать из названия федеральных округов словосочетание “федеральный округ” для сокращения
trim(lower(fo_name), 'федеральный округ'):fo_name_short
Преобразование типов данных с помощью LPE
Функция age()
вычисляет разницу между двумя датами и возвращает её в виде типа данных interval
. Так как этот тип данных не отображается виджетами Luxms BI, необходимо преобразовать его.
to_char(age(now(), '2022-03-15'), 'Y MM DD HH24:MI:SS'):aa