Перейти к основному содержимому

Книга рецептов 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() нет необходимости.

format_numbers.png

Пример использования функции 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