Использование функций фильтров вместо функций временного ряда

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

Функции временного ряда или функции фильтров

Функции временного ряда Ago и Todate – это простой способ создания метрик для вычислений year-ago, year-to-date и т. п. Данный метод хорошо работает для отчетов, предназначенных для бизнес-пользователей. Однако эти функции генерируют сложные запросы, которые значительно снижают быстродействие. Кроме того, каждый раз при использовании одной из этих функций в отчете генерируется дополнительный подзапрос, и нагрузка на ресурсы базы данных еще возрастает.

В классических инфопанелях вместо использования функций временного ряда можно получить тот же результат за счет использования базовых метрик с функцией Фильтр, позволяющих отфильтровать нужный период времени. Этот способ может быть слишком сложен для отчетов, предназначенных для бизнес-пользователей, но отлично работает в инфопанелях, заранее настроенных ИТ-специалистами. При использовании этого способа создается физический запрос SQL, который гораздо проще, эффективнее и не требует дополнительных подзапросов. Запрос SQL выполняется быстрее, требует меньше ресурсов базы данных и снижает общее использование ЦП базой данных и количество операций ввода-вывода.

Вот пример физического запроса, сгенерированного при использовании и базовой метрики, и метрики месяц Назад в одном отчете. Генерируются два запроса.

Описание GUID-37245A7E-00E9-4071-9627-1A5BAED91311-default.jpg ниже
.jpg

На следующей иллюстрации показан код запроса SQL, сгенерированный для одиночного запроса при использовании функции Фильтр.

Описание GUID-F1D33998-F8D4-40BF-B630-6EDCEF1DCEFC-default.jpg ниже
.jpg

Внедрение функций фильтров в инфопанель с помощью запросов

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

Здесь приведен пример: поскольку это значительно упрощает расчет, предполагается, что измерение календаря включает в себя столбец Julian Period Number. Без столбца Julian Period Number можно обойтись, но для вычисления требуемого периода потребуются более сложные формулы.

  1. Измените запрос Month, чтобы добавить переменную презентации (MonthSelected).

    Описание GUID-DEEBC7D1-806C-48E9-965C-6131745A65CE-default.png ниже
    .png

  2. Создайте отдельный запрос инфопанели, чтобы получить соответствующее значение Julian Period Number и поместить его в другую переменную (PeriodNumberSelected). Конечный пользователь не видит этот второй запрос: он скрыт в инфопанели, а значение вычисляется автоматически на основе переменной MonthSelected.

    Описание GUID-D41AE43F-CD62-498D-B041-9700D586BF77-default.png ниже
    .png

  3. Измените свойства инфопанели и нажмите Фильтры и переменные.
  4. Добавьте путь запроса Julian Period.

    Описание GUID-E46E926E-F0A3-4934-9D10-F0119B9109DF-default.jpg ниже
    .jpg

  5. В анализе удалите глобальный фильтр для столбца 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 возможные значения не заполняются.Описание GUID-B0D153C1-7DDF-445F-BF09-7E21EBECB88B-default.jpg ниже
.jpg

Заполняется только первоначальное значение: при помощи логического запроса с фильтром на основе значения MonthSelected.Описание GUID-C21AC2BA-E3B8-43BC-A812-517A074DBFA2-default.jpg ниже
.jpg