Вычисляемый факт Вычисляемый факт

Позволяет добавить свой факт в куб. Вычисляется на основе используемых в Кубе и области фильтрации измерений и фактов.

Необходимо задать:

  • Имя — идентификатор, который можно использовать в формулах других вычисляемых фактов;
  • Метка — строка, под которой факт будет виден в кубе и диаграмме;
  • Тип данных — тип данных вычисляемого выражения;
  • Метка агрегации — значок для вычисляемого выражения.

Окно настройки вычисляемого факта представлено на Рис.1 и условно разделено на 3 области.

Окно настройки вычисляемого факта
Рисунок 1. Окно настройки вычисляемого факта

1. Область ввода выражения

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

Формула выражения может содержать:

  • ссылки на используемые измерения и факты куба в виде наименования измерений и фактов;
  • варианты агрегации измерений и фактов;
  • скобки, определяющие порядок выполнения операций;
  • знаки математических операций и отношений;
  • логические операции (AND, OR, NOT, XOR) и значения (TRUE или FALSE);
  • функции в соответствии с синтаксическим описанием (Список функций);
  • строковые выражения в кавычках ("строковое выражение");
  • целые и вещественные числа;
  • однострочные и многострочные комментарии.

Однострочный комментарий начинается символами // (два слеша) и продолжается до конца строки. Многострочным комментарием считаются все символы, содержащиеся между /* (слеш-звездочка) и */ (звездочка-слеш).

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

2. Список измерений и фактов

Область содержит список измерений и фактов, которые можно использовать в вычисляемых фактах.

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

Новый факт создается на основе существующих фактов и измерений при помощи ряда функций и производных переменных от значений измерений:

  • Значение (Имя измерения.Value) — значение измерения. Можно опустить имя функции измерения, в таком случае по умолчанию будет функция Value, т.е. Имя измерения = Имя измерения.Value.
  • Количество (Имя измерения.Count) — количество уникальных значений измерения.
  • Итог (Имя измерения.IsTotal) — проверка, является ли значение измерения итогом. Переменная используется совместно с функциями IF()/IFF(), для модификации значений вычисляемого факта в итоговых ячейках.
  • Пусто (Имя измерения.IsNull) — проверка, является ли значение измерения пропущенным значением.

и от вариантов агрегации фактов:

  • Сумма (Имя факта.Sum ) — сумма всех значений фактов.
  • Количество (Имя факта.Count ) — количество всех значений фактов.
  • Среднее (Имя факта.Avg ) — среднее из всех значений фактов.
  • Минимум (Имя факта.Min ) — наименьшее из всех значений фактов.
  • Максимум (Имя факта.Max ) — наибольшее из всех значений фактов.
  • Стандартное откл. (Имя факта.StdDev ) — стандартное отклонение значений фактов, рассчитанное на основе несмещенной дисперсии.
  • Сумма квадратов (Имя факта.SumSq ) — сумма квадратов всех значений фактов.
  • Кол-во уникальных (Имя факта.UniqueCount ) — количество уникальных значений факта.
  • Кол-во пропусков (Имя факта.NullCount ) — количество пропущенных значений факта.
  • Первый (Имя факта.First ) — первое по списку значение факта.
  • Последний (Имя факта.Last ) — последнее по списку значение факта.

Внутри каждого из способов агрегации имеется доступ к итоговым значениям по каждому измерению Итог (Имя факта.Sum.Total.Имя измерения).

Примечание: в списке будут доступны только используемые факты и измерения. Измерения, которые не были перенесены в строки, столбцы или область фильтрации, в списке доступны не будут.

3. Список функций

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

Возможна фильтрация по категории и названию функции.

Двойной клик мыши по позиции выбранной функции вставляет ее синтаксис в область кода выражения. То же самое можно сделать, перетащив функцию из списка в область кода (Drag-and-Drop).