Вычисляемый факт
Позволяет добавить свой факт в куб. Вычисляется на основе используемых в Кубе и области фильтрации измерений и фактов.
Необходимо задать:
- Имя — идентификатор, который можно использовать в формулах других вычисляемых фактов;
- Метка — строка, под которой факт будет виден в кубе и диаграмме;
- Тип данных — тип данных вычисляемого выражения;
- Метка агрегации — значок для вычисляемого выражения.
Окно настройки вычисляемого факта представлено на Рис.1 и условно разделено на 3 области.
1. Область ввода выражения
В области ввода задается формула расчета выражения. Ссылки на измерения, факты и синтаксические конструкции функций можно вставлять в код выражения, выбрав их двойным кликом мыши в соответствующих областях, либо написав вручную.
Формула выражения может содержать:
- ссылки на используемые измерения и факты куба в виде наименования измерений и фактов;
- варианты агрегации измерений и фактов;
- скобки, определяющие порядок выполнения операций;
- знаки математических операций и отношений;
- логические операции (AND, OR, NOT, XOR) и значения (TRUE или FALSE);
- функции в соответствии с синтаксическим описанием (Список функций);
- строковые выражения в кавычках ("строковое выражение");
- целые и вещественные числа;
- однострочные и многострочные комментарии.
Однострочный комментарий начинается символами //
(два слеша) и продолжается до конца строки. Многострочным комментарием считаются все символы, содержащиеся между /*
(слеш-звездочка) и */
(звездочка-слеш).
В области ввода выражения поддерживается комбинация клавиш Ctrl+/ — закомментировать/раскомментировать код.
Важно: если выражение вычисляемого факта некорректное, то все его ячейки состоят из пропусков. Также в выражении недопустимо применять рекурсивные обращения к фактам.
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).