В этом разделе объясняется разница между функциями временного ряда и функциями фильтров, а также рассказывается, как внедрить функции фильтров. Эта информация применима и к рабочим книгам, и к классическим инфопанелям.
Функции временного ряда или функции фильтров
Функции временного ряда Ago
и Todate
– это простой способ создания метрик для вычислений year-ago, year-to-date
и т. п. Данный метод хорошо работает для отчетов, предназначенных для бизнес-пользователей. Однако эти функции генерируют сложные запросы, которые значительно снижают быстродействие. Кроме того, каждый раз при использовании одной из этих функций в отчете генерируется дополнительный подзапрос, и нагрузка на ресурсы базы данных еще возрастает.
В классических инфопанелях вместо использования функций временного ряда можно получить тот же результат за счет использования базовых метрик с функцией Фильтр
, позволяющих отфильтровать нужный период времени. Этот способ может быть слишком сложен для отчетов, предназначенных для бизнес-пользователей, но отлично работает в инфопанелях, заранее настроенных ИТ-специалистами. При использовании этого способа создается физический запрос SQL, который гораздо проще, эффективнее и не требует дополнительных подзапросов. Запрос SQL выполняется быстрее, требует меньше ресурсов базы данных и снижает общее использование ЦП базой данных и количество операций ввода-вывода.
Вот пример физического запроса, сгенерированного при использовании и базовой метрики, и метрики месяц Назад
в одном отчете. Генерируются два запроса.
На следующей иллюстрации показан код запроса SQL, сгенерированный для одиночного запроса при использовании функции Фильтр
.
Внедрение функций фильтров в инфопанель с помощью запросов
В большинстве внедренных систем на инфопанели уже есть соответствующий запрос, и пользователи могут выбрать нужный месяц. Первый шаг – определение периодов времени, которые нужно отфильтровать в соответствии с выбором пользователя.
Здесь приведен пример: поскольку это значительно упрощает расчет, предполагается, что измерение календаря включает в себя столбец Julian Period Number
. Без столбца Julian Period Number
можно обойтись, но для вычисления требуемого периода потребуются более сложные формулы.
Month
, чтобы добавить переменную презентации (MonthSelected
).
Julian Period Number
и поместить его в другую переменную (PeriodNumberSelected
). Конечный пользователь не видит этот второй запрос: он скрыт в инфопанели, а значение вычисляется автоматически на основе переменной MonthSelected
.
Julian Period
.
Month
и используйте необходимые функции фильтра формул столбца, исходя из значений Julian Period Number
. Приведем несколько примеров:
Current Month: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800})
Month Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-1)
Year Ago: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"=@{PeriodNumberSelected}{80800}-12)
Year to date: Filter("Revenue Metrics"."Revenue" using "Time"."Julian Month Number"<=@{PeriodNumberSelected}{80800} and “Time”.”Year”=@{YearSelected}{2019})
Внедрение функций фильтров в рабочую книгу с помощью параметров
Тот же принцип можно применить и в рабочей книге. Запросы и переменные презентаций заменяются фильтром инфопанели и параметрами.
Создайте три параметра: MonthSelected, PeriodNumberSelected и YearSelected. На холсте в фильтре инфопанели показывается только параметр MonthSelected.
Возможные значения параметра MonthSelected определяются на основе логического запроса SQL с выбором всех месяцев.
Для параметров PeriodNumberSelected и YearSelected возможные значения не заполняются.
.jpg
Заполняется только первоначальное значение: при помощи логического запроса с фильтром на основе значения MonthSelected.
.jpg