Фильтры NPrinting – Часть 3 (Расширенный поиск)
В июне 2019 года вышел релиз NPrinting, а вместе с ним и долгожданная опция расширенной фильтрации поиска. В своих предыдущих постах я писал о различных требованиях, которые должны строго соблюдаться для правильной работы фильтров NPrinting. Сообщество в основном обсуждало возможность создавать фильтры с подстановочными знаками с подходами «wildcard match/like (*)» или «(>), (> =), (<=), (<)». Другими словами, люди хотели иметь возможность применять фильтры к набору данных, которые в результате могли бы возвращать несколько значений.
Теперь, когда эта функция доступна, как бы вы ее использовали? Основы описаны в официальной документации в разделе «Создание динамического фильтра с расширенным поиском», и я не буду здесь останавливаться на этом. Вместо этого я подумал, что лучше будет привести примеры, которые ближе к делу.
I –Принципы тематического исследования
- название поля даты – [Date]
- измерение – [Customer Name]
- имя текстового поля – [Dimension 1]
- показатель(мера) – [Sales Amount]
II – Сроки
Фильтр расширенного поиска очень помогает в этом упражнении. Все виды скользящих дат, такие как переходящие 7,14,21,30 дней, скользящие месяцы, последняя неделя, год ко дню и т. д., теперь можно легко обрабатывать в фильтре NPrinting. Хотя эта функция очень востребована и чрезвычайно удобна, если вам нужно быстро применить такой фильтр, я все же предпочел бы использовать флаги, встроенные в скрипт Qlik, поскольку думаю, что они будут работать немного быстрее, особенно на больших наборах данных. Предположим, я хочу отфильтровать:
-
Прокат за последние 7 дней
- Расширенный поиск: =([Date]>Today()-7)*([Date]<=Today())
- C НАЧАЛА ГОДА НА СЕГОДНЯШНИЙ ДЕНЬ
- Расширенный поиск: =([Date]>YearStart(Today()))*([Date]<=Today())
-
C НАЧАЛА МЕСЯЦА НА СЕГОДНЯШНИЙ ДЕНЬ
- Расширенный поиск: =([Date]>MonthStart(Today()))*([Date]<=Today())
-
Последине 12 месяцев
- Расширенный поиск: =([Date]>AddYear(Today(),-1))*([Date]<=Today())
Очевидно, что с этой функцией вы получаете большую гибкость и можете избежать создания флагов. Это огромное преимущество для тех разработчиков NPrinting, которые не имеют прямого влияния на форму модели данных Qlik.
Другим преимуществом является то, что даты и временные метки из-за использования символов «>» «<» в расширенном поиске автоматически распознаются и не требуют преобразования в числа (что очень сбивало с толку и часто создавало проблему для пользователей, которые невнимательно изучали руководство NPrinting).
III – Текст
Это довольно просто, но все же полезно. Вы можете применить точный поиск (аналогично обычному фильтру NPrinting с атрибутом «значение равно»). Вы также можете применять фильтры с подстановочными знаками, используя «*» , «?» или «^», где каждый из них выполняет свою функцию (подробности о том, как использовать каждый из них, доступны на странице справки Qlik.
IV – Меры – «Включить цикл» больше не создает пустых отчетов!
Это – долгожданный функционал. Он позволит отфильтровать конкретное измерение на основе истинного/ложного выражения, которое вы указали для значения измерения. Предположим, у нас есть основная таблица с клиентами. В этой таблице есть все клиенты, с которыми мы имели дело. В таблице транзакций у нас есть только несколько транзакций, поскольку мы только что открыли новое представление, и хотим сообщать только о нем. Предположим, мы сообщаем о продажах по имени клиента. В таком сценарии, чтобы гарантировать, что мы составляем отчеты только для клиентов, с которыми у нас были продажи, мы можем применить следующий фильтр:
- Отфильтровать клиентов, у которых есть продажи
- Поле: [Customer Name]
- Расширенный поиск: =Sum([Sales Amount]) > 0
Очевидно, мы можем справиться с этим в большинстве сценариев, убрав значения «0» на диаграммах или таблицах, но в одном сценарии, где мы используем функцию отчета «Включить цикл», мы не могли этого делать до сих пор!
Поскольку вы можете создать любое выражение в расширенном поиске, вы можете создать логику, которая для каждой комбинации измерений будет проверять, может ли ваш отчет выдавать какие-либо значения. Очевидно, что проблема может возникнуть тогда, когда вы хотите использовать более одного поля в цикле. В таком сценарии вам нужно сделать немного больше. Вам необходимо рассмотреть свою модель данных и, если возможно, создать сцепленное поле (путем объединения измерений, которые вы хотите использовать в своем цикле). Затем просто примените фильтр расширенного поиска к этому полю.
Расширенный поиск теперь является решением в случаях, подобных тем, о которых сообщалось в темах сообщества:
- https://community.qlik.com/t5/Qlik-NPrinting-Discussions/Only-produce-report-that-are-not-empty-when-using-cycle/m-p/1586203#M24318
- https://community.qlik.com/t5/Qlik-NPrinting-Discussions/Condition-combined-with-cyle-field/m-p/30385?advanced=false&collapse_discussion=true&filter=location&location=forum-board:qlik-nprinting-discussions&q=cycle%20empty&search_type=thread
Хотя это кажется всего лишь несущественной особенностью, на самом деле это довольно большой шаг вперед в улучшении продукта NPrinting. Я уже вижу много разных сценариев, когда это будет полезно и сократит процесс проектирования и разработки.