В сегодняшней статье мы поговорим о возможности фильтрации данных при запросе к хранилищу и о том, как сократить время на ее выполнение, оптимизировав тем самым процесс построения отчета. Расскажем о том, какие возможности есть у разработчиков отчетов при создании отчета и дашборда. И прежде, чем перейдем к детальному разбору, напомним: в запросах к хранилищу данных в большинстве случаев можно указать параметр фильтрации. Речь, конечно, в большей степени идет об SQL-хранилищах данных, таких как MS SQL, MySQL, PostgreSQL, Oracle и т.д.

Зачем фильтровать данные?

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

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

Parameters in a query

Объект параметр

При создании или редактировании запроса в форме запросов можно создать объект Параметр (Parameter), который затем и будет использоваться в запросе. Для создания этого объекта в форме запроса присутствует элемент управления Новый параметр (New Parameter). После создания параметра с помощью его свойств можно определить тип данных, размер и его наименование, а также выражение, результат вычисления которого и будет являться фильтрующим значением текущего параметра. Добавленные параметры в форме запроса также будут отображаться в словаре данных отчета и могут быть отредактированы в любой момент разработки отчета.

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

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

Выражением параметра может быть как любое значение, так и выражение, в результате обработки которого будет получено фильтрующее значение. В качестве выражения также может быть указана ссылка на переменную отчета.
Parameters in a query

Переменная отчета как параметр

Переменную отчета можно использовать в запросе как параметр явно и неявно. Неявно означает создание объекта Параметр в форме запроса и указание ссылки на переменную отчета в качестве выражения этого параметра. Явное же использование переменной отчета как параметра в запросе предполагает установку опции Разрешить использование как SQL параметр (Allow using as SQL parameter) в форме редактирования переменной. Далее следует указать наименование переменной в тексте запроса.

Использование переменной как параметра в запросе имеет несколько преимуществ перед использованием объекта Параметр. Во-первых, можно создать одну переменную отчета и использовать её в запросах для различных источников данных. При этом обычный объект Параметр можно использовать только в том источнике данных, в котором он создан. Во-вторых, переменная отчета может быть с запросом значения от пользователя (ввод или выбор) или просто возвращать какое-либо значение.
Обратите внимание!

Для того чтобы переменная была с запросом ввода значения от пользователя, следует в редакторе переменной установить флажок у параметра Запросить у пользователя (Request from User). В этом случае при просмотре отчета пользователь сможет выбрать значение переменной. Чтобы пользователь смог не только выбирать значение, но и вводить его, необходимо в редакторе переменной установить параметр Разрешить пользовательские значения (Allow User Values).
В случаях использования переменной как параметра в запросе с пользовательским вводом значения или его выбором можно определить режим выполнения запроса при построении отчета: выполнять запрос в момент построения отчета или отложить выполнение запроса до подтверждения ввода значений параметров пользователем.

Запрос параметров

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

Для это следует установить свойство шаблона отчета Запросить параметры (Request Parameters) в значение Да (True). В этом случае при загрузке отчета во вьювер или переходе на вкладку просмотра отчета запрос не будет выполняться, пока пользователь не нажмет кнопку Применить (Submit) на панели параметров. После нажатия этой кнопки будет начато выполнение запроса с инициализированными значениями переменных. После получения данных генератор отчетов произведет построение отчета с этими данными.

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

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

Запрашивать только необходимые данные

Как уже было сказано выше, по умолчанию запросы к хранилищам данных будут выполняться для всех источников данных, описание которых присутствует в словаре данных отчета. Но это можно изменить и получить данные только для источников, которые необходимы для построения отчетов. Другими словами, если в отчете в любом компоненте, инструменте, связях или где-то еще есть ссылка на колонку данных любого источника данных, то такой источник данных является необходимым для построения отчета.

Свойство, которое определяет, выполнять все запросы словаря данных или только используемых в отчете, принадлежит шаблону отчета и называется Запрашивать только необходимые данные (Retrieve Only Used Data). По умолчанию это свойство установлено в значение Нет (False), и это значит, что в момент построения отчета происходит выполнение запросов всех источников данных в словаре. Для того чтобы выполнять запросы только тех источников данных, которые используются в отчете, следует это свойство установить в значение Да (True).

В некоторых случаях выполнение запросов только для используемых источников данных может значительно сократить время построения отчета. Поскольку словарь данных, например, может содержать описание 10 источников данных, а используется в отчете только 2. Таким образом, генератор отчетов фактически затратит время на обработку запросов лишних 8 источников данных, но практически это не принесет какой-либо пользы для текущего отчета.

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

Если у вас остались вопросы по фильтрации данных, свяжитесь с нами.
Используя этот сайт, вы соглашаетесь на использование файлов Cookie для аналитики и персонализированного контента. Файлы Cookie хранят полезную информацию на вашем компьютере, чтобы помочь нам повысить эффективность и удобство использования. Для получения дополнительной информации, пожалуйста, прочтите Конфиденциальность и Использование Cookie.