Использование выражений в журналах

В журналах Citeck помимо простых атрибутов (name, counterparty и др.) можно использовать выражения — SQL-подобные конструкции, вычисляемые в момент запроса к базе данных. Они поддерживают математические операции, функции работы с датами, а также поиск, группировку и сортировку с гарантией актуальности данных.

Выражение — набор функций, операторов, скобок и атрибутов, который позволяет вычислить значение на основе данных в БД.

Примечание

Вычисляемые атрибуты, которые описаны в типе, имеют схожую с выражениями функциональность и позволяют более гибко настраивать значения атрибутов, но у них есть ограничения при поиске, группировке и сортировке.

Эти операции доступны, только если для вычисляемого атрибута настроено сохранение в БД, но и в этом случае есть ограничение — их перерасчёт будет произведён только когда произойдёт обновление сущности.

Если обновляются связанные сущности или глобальные объекты, которые использовались для вычисления, то вычисляемый атрибут не пересчитается. В отличие от вычисляемых атрибутов, выражения в журнале позволяют настраивать вычисления, которые вычисляются в момент запроса для каждой записи, что позволяет искать, группировать и сортировать по ним с гарантией актуальности данных.

Выражения настраиваются в дополнительных настройках колонки в поле «Атрибут для загрузки».



Для настройки выражения нужно, чтобы в содержимом этого поля была или функция, или выражение, полностью обёрнутое в скобки.

Примеры

Расчёт разницы между датами в днях

ceil(((date_part('epoch', date0) - date_part('epoch', date1)) / (60 * 60 * 24)))
  • date0 и date1 — атрибуты с датой или датой-временем, между которыми происходит расчёт.

  • ceil — округлить до ближайшего целого, которое больше или равно аргументу. Вместо этой функции можно использовать:

    • floor — отбросить дробную часть;

    • round — округлить результат до ближайшего целого.

Произвольные математические операции

ceil(field0 + field1)

(field0 + field1)

(10 * (field0 + field1))
  • field0 и field1 — атрибуты сущности. Сложность выражений и количество атрибутов не ограничены.

Получить месяц и год

to_char(date0, 'MM.YYYY')
  • date0 — атрибут с датой или датой-временем.