Как сделать настраиваемым фильтр при просмотре отчета

Обновлено: 08.07.2024

Тренинги по SQL Server Reporting Services (SSRS)

      /  Обучение по SQL Server Reporting Services (SSRS)   /  
  • 3.3.7 Фильтрация и применение параметров в отчетах Reporting Services

3.3.7 Фильтрация и применение параметров в отчетах Reporting Services

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

Фильтрация в Reporting Services может производиться:

Разберем каждый из вариантов выбора.

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

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

Чтобы произвести фильтрацию на уровне запроса, нужно открыть свойства набора данных (Dataset) и добавить в нем в определение запроса выражение WHERE.

Например, если мы хотим всегда получать данные при помощи этого набора данных только по США, измененное определение запроса может выглядеть так:

SELECT Клиенты.Страна, Клиенты.Область, Клиенты.Город, Клиенты.Название, Заказано.Количество * Заказано.Цена AS Продажи FROM Заказано

INNER JOIN Заказы ON Заказано.КодЗаказа = Заказы.КодЗаказа

INNER JOIN Клиенты ON Заказы.КодКлиента = Клиенты.КодКлиента

WHERE Страна = ‘США’

ORDER BY Клиенты.Страна, Клиенты.Область, Клиенты.Город, Клиенты.Название

А если мы хотим иметь возможность запрашивать у пользователя каждый раз при запуске запроса название страны (или стран), по которым он хочет увидеть информацию, код запроса может выглядеть так:

SELECT Клиенты.Страна, Клиенты.Область, Клиенты.Город, Клиенты.Название, Заказано.Количество * Заказано.Цена AS Продажи FROM Заказано

INNER JOIN Заказы ON Заказано.КодЗаказа = Заказы.КодЗаказа

INNER JOIN Клиенты ON Заказы.КодКлиента = Клиенты.КодКлиента

WHERE Страна = @Страна

ORDER BY Клиенты.Страна, Клиенты.Область, Клиенты.Город, Клиенты.Название

Отметим, что такого изменения в определения запроса вполне достаточно, чтобы:

  1. В отчет был автоматически добавлен параметр @Страна (этот параметр можно будет увидеть в контейнере Parameters) в дизайнере отчета;
  2. При запуске отчета автоматически производился запрос данных о стране у пользователя (см. рис. 3.3.7-1)

Рис. 3.3.7-1 Отчет с запросом значения параметра

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

Как уже говорилось, мы можем также осуществлять фильтрацию не на уровне запроса, а на уровне отчета. При этом с источника будет скачиваться полный набор данных, а лишние данные будут отбрасываться позднее, на этапе формирования отчета (что, как правило, хуже с точки зрения производительности и расхода системных ресурсов). Чтобы настроить фильтрацию на уровне отчета (точнее, на уровне таблицы), достаточно открыть свойства таблицы (Tablix Properties) и настроить нужные параметры на вкладке Filters (см. рис. 3.3.7-2).


Рис. 3.3.7-2 Настройка фильтрации на уровне таблицы

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

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

Пытаюсь освоить СКД, мой уровень — ноль. Делаю простой отчёт с запросом по единственной таблице документа, без кода.

В запрос добавляю условие (ГДЕ) по реквизиту документа.
На вкладке "Параметры" в Схеме КД флажок "Запрещать незаполненные значения" снят.
Там же, "Использование" стоит "Авто".

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

Вопрос: как настроить так, чтобы пользователь мог использовать фильтр опционально?

(1) Условие ГДЕ в фигурных скобках в запросе? Попробовал, ничего не изменилось. Нюанс в том, что таких опциональных условий несколько. Каждое из них должно быть отдельным "ГДЕ", в отдельных фигурных скобках? Тогда синтаксис не очень ясен.

(2) Насколько понимаю, это просто другой способ? Скобки тоже должны работать?

(3) пробуй потыкаться в конструкторе запроса в разделе компоновка данных.
или поищи урок по "расширению языка запросов для СКД" (есть и текстом, и видео).

(3) когда через отборы скд - это там где вкладка в настройках схемы - получаешь в набор данных запросом вообще всё, а отбор из настроек этот запрос скомпонует сам. В этом случае никаких скобок не нужно.

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

(5) "параметр в настройки вынесен, а при этом с него снята галочка использования" — это мой случай и есть.
Типовых у меня нет под рукой, у меня учебная версия.
Ошибок в запросе нет, конструктор на него не ругается. Но поведение не меняется, параметр как будто считается обязательным.

(7) Спасибо! Кажется, работает. Теперь все эти поля нужно добавить в отборы на вкладке Схемы КД "Настройки" - "Отчет" - "Отбор".

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

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

Максимальное количество Задач для работы поиска зависит от тарифного плана. Подробнее вы можете узнать на странице сравнения тарифов.

Как работает фильтр

Откройте раздел Задачи и проекты, используйте панель навигации для фильтрации задач по ролям: Делаю, Помогаю, Поручил, Наблюдаю.

Поддержка

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

Поддержка

В правом поле вы можете отфильтровать задачи по ответственным, ролям или параметрам.

Поддержка

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

Поддержка

Также вы всегда можете отменить сделанные настройки, для этого нажмите Вернуть по умолчанию.

вернуть настройки.jpg

Администратор портала может сохранить созданный фильтр у всех сотрудников. Для этого нужно поставить галочку в поле Для всех.

Для всех.jpg

Как создать фильтр

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

Поддержка

Нажмите Сохранить фильтр в правом нижнем углу и назовите его. После кликните по кнопке Сохранить.

Поддержка

Теперь вы можете отслеживать задачи по сохранённому фильтру.

Как работает умный поиск

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

Поддержка

Битрикс24 будет искать задачи по названиям и содержанию, включая описание и комментарии.

Как найти задачи добавленные в избранное?

Чтобы найти задачи, добавленные в избранное, откройте фильтр и добавьте поле Параметры задачи.

Конечно, чем больше цифр по трафику, тем приятнее смотреть. Но все-таки веб-аналитика нужна не для красоты, а для решения практических задач. Разбираемся, как перестать учитывать определенные виды трафика в Яндекс.Метрике, — чтобы оценивать продвижение более объективно.

Как убрать из статистики свои просмотры/визиты

Часто предприниматель, руководитель или специалист — самый активный посетитель, который может по несколько раз в день заходить на сайт, проводить там много времени, активно переходить со страницы на страницу и так далее. А когда сайт только начинает продвигаться, собственные просмотры и визиты составляют значительную долю, — и может сложиться ложное представление о реальной посещаемости. Для этого и полезно исключать такой трафик из статистики.

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

В процессе настройки фильтра Яндекс.Метрики, который исключает трафик по IP-адресу(-ам).

В процессе настройки фильтра Яндекс.Метрики, который исключает трафик по IP-адресу(-ам).

Выбор условий сегментации по IP-адресам в кастомном отчете Яндекс.Метрики

Выбор условий сегментации по IP-адресам в кастомном отчете Яндекс.Метрики

Как удалить чужие сайты из отчетов Яндекс.Метрики

По умолчанию Яндекс.Метрика показывает статистику со всех сайтов, на которых установлен код счетчика с соответствующим ID (например, он отображается в футере, рядом с названием и адресом сайта). То есть это не баг, а фича.

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

Добавление нового фильтра в Метрике, который исключает трафик с посторонних сайтов.

Добавление нового фильтра в Метрике, который исключает трафик с посторонних сайтов.

Как сделать, чтобы роботы и боты не мешали веб-аналитике сайта

Пользователь Яндекс.Метрики может сталкиваться не только с посторонними сайтами в отчетах, но и с несуществующими людьми — бот-трафиком. (И необязательно, что в этом виноват недобросовестный подрядчик или сотрудник: накруткой поведенческих факторов, чтобы как-то в худшую сторону повлиять на SEO, могут заниматься и конкуренты.)

Настройка фильтрации роботов в Яндекс.Метрике

Настройка фильтрации роботов в Яндекс.Метрике

Могут ли тут сработать сегментация на уровне отчетов, фильтрация по IP? Вряд ли. У ботов, накручиваемых на сайт, могут быть самые разные регионы и IP-адреса. А такие метрики, как время на сайте, глубина просмотра или новизна, конечно, неуникальные, и легко могут совпасть с характеристиками живых людей. Самый надежный способ, пожалуй, это именно более жесткая фильтрация роботов в настройках Яндекс.Метрики.

Как отфильтровать брендовый поисковый трафик

И при оценке эффективности работы сотрудников/подрядчиков, которые занимаются поисковым продвижением (SEO), нужно такой брендовый поисковый трафик исключать. Ведь это не их заслуга, а следствие узнаваемости бренда, роста постоянной лояльной аудитории, сарафанного радио, упоминаний в СМИ, телевизионной рекламы и т. п.

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

Теперь — задать все условия в виде регулярного выражения (это специальный язык для работы с различными текстовыми строками):

  • ‘!’ восклицательный знак в начале показывает, что нужно отрицать условие. Это как раз нужно в данном случае, ведь брендовый поисковый трафик нужно убрать из отчета.
  • ‘~’ знак тильды сообщает Метрике, что дальше именно регулярное выражение. Метрика поддерживает синтаксис RE2, как и Google Таблицы
  • ‘|’ — вертикальная черта заменяет логическое выражение OR (или), ее используют, когда нужно указать несколько вариантов.

Правда, есть нюанс — Метрика фактически не определяет ключевые слова при переходах с Google, поэтому отфильтровать брендовый трафик с этой поисковой системы не удастся. Надо иметь это в виду.

Как очистить ссылки от ненужных параметров, меток, якорей

Но в таком случае не получится воспользоваться преимуществами этих самых параметров. Например, определять эффективность источника трафика вплоть до конкретного поста в соцсети, рекламного объявления или гостевой публикации — ведь UTM-метки и т. п. дополнительные данные вообще будут отсутствовать в отчетах Яндекс.Метрики. (Кстати, для одного счетчика можно задать максимум 30 фильтров и 30 операций.)

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

Чтобы глубже погрузиться в тонкости SEO, SMM, PPC, CPA и веб-аналитики, изучайте образовательный контент CyberMarketing. Большой выбор статей, вебинаров, видеокурсов для специалистов, руководителей, владельцев бизнеса.

Читайте также: