Подводные камни фильтров NPrinting – Часть 2 (Фильтры строки поиска)
Надеюсь, вам понравилось читать первую часть о «фильтрах». Там я попытался рассмотреть все основы. О чем я не упомянул, так это о том, что я не занимаюсь разработкой NPrinting, поэтому у меня нет окончательных знаний о NPrinting, и все, что я здесь пишу, основано только на моем опыте работы с инструментом и тестированием. Также мои выводы основаны исключительно на наблюдениях и доступной информации из справочного документа. Сказав это, мы можем перейти ко второй части «темы фильтров».
Строка поиска: NPrinting 16 содержал очень полезную опцию фильтра, где мы могли использовать «поиск» в качестве параметра. Мы могли бы использовать поиск несколькими способами, например: “ProductName like “*Shirt*” or Country where Sum(Sales)>10000.” Этот подход хорошо описан в сообществе, поэтому я не буду дублировать уже существующие статьи, вместо этого я просто укажу вам, где они:
Фильтр поиска по закладкам и фильтр поиска
К сожалению, вышеупомянутые параметры фильтрации в NPrinting 17 и более поздних версиях отсутствуют. Текущая версия по-прежнему не поддерживает поисковые фильтры. Как вы можете это сделать?
Оба эти методы, которые я собираюсь описать, основаны на изменениях, внесенных непосредственно в приложении Qlik для соответствия требуемому фильтру. Первый способ – использовать скрипт загрузки Qlik и включить в него логику. Если я хочу создать фильтр NPrinting, фильтрующий все «Product Names», в которых есть слово «*Shirt*», я могу просто создать поле флага в модели данных и ссылаться на него в NPrinting. Мой флаг будет создан по следующей формуле:. «…If ([Product Name] like‘ * Shirt * ’, 1,0) как NPrintingShirtFlag…». После перезагрузки метаданных в NPrinting я могу перейти к фильтрам и выбрать: Поле: NPrinitngShirtFlag, числовое значение: 1. Я знаю, что если в вашем приложении NPrinting много фильтров «поиска по шаблонам», этот метод может быть неуклюжим и не очень полезным, но на данный момент это единственный рабочий метод.
Что я могу сделать, чтобы отфильтровать свой отчет на основе значений продаж по странам, предполагая, мне нужно получить несколько пороговых значений: 15000$, 16000$ и 17000$? Что ж, это сложнее, и я предпочитаю использовать для этой цели расширенный анализ множеств. Прежде всего, я создаю поле острова данных в моей модели данных Qlik, которое содержит требуемые пороговые значения. Это будет использоваться в NPrinting как поле для применения фильтров.
SetFilter: Load * Inline [ NP_Filter 0 15000 16000 17000 ] ;
Следующим шагом является построение всех диаграмм и объектов с помощью расширенного анализа множеств. В этом простом примере я буду использовать следующую настройку: Chart: Table, Dimension: Customer, Expression:
Sum({<Country = {“=Sum(Sales)>=$(=Min(NP_Filter))”}>}Sales)
Вышеупомянутая формула будет работать на основе выбора в поле NP_Filter, которое затем может применяться в обычном режиме в NPrinting.
Я понимаю, что это обходной путь/подход, который требует существенной настройки. Этот подход также требует, как правило, выделенных объектов для печати отчетов. По моему скромному мнению, каждый отчет NPrinting должен запускаться в выделенном файле qvw/qvf, чтобы максимизировать производительность и удобство использования, за исключением тех, которые не требуют каких-либо настроек и не созданы на основе неподдерживаемых документов (прочтите справочный документ об этом)
К нему прилагается QVW-файл с образцом решения.