Модификаторы множества

Множество может быть изменено дополнительной или измененной выборкой. Подобное изменение может быть записано в выражении множества.

Модификатор состоит из одного или нескольких имен полей, за каждым из которых следует выборка, которая должна быть составлена на основе поля и заключена в угловые скобки: < >. Например, элемент <Year={2007,2008},Region={US}>. Имена полей и значения полей можно заключить в кавычки как обычно, например: <[Sales Region]={’West coast’, ’South America’}>.

Установленный модификатор изменяет выборку предыдущего установленного идентификатора. Если отсутствует ссылка на установленный идентификатор, состояние текущей выборки является неявным.

Определить выборку можно несколькими способами.

  • На основе другого поля
  • На основе множеств элементов (список значений поля в модификаторе)
  • Принудительное исключение

Данные способы описаны в следующих подразделах.

На основе другого поля

Простым случаем является выборка на основе выбранных значений другого поля, например: <OrderDate = DeliveryDate>. Данный модификатор возьмет выбранные значения из элемента DeliveryDate и применит их в качестве выборки к элементу OrderDate. Если присутствует множество уникальных значений (больше пары сотен), то данная операция потребует большой загрузки ЦП, поэтому ее следует избегать.

На основе множеств элементов

Наиболее распространенный пример выражения множества — это выражение, основанное на списке значений поля, заключенном в фигурные скобки. Значения разделены запятыми, например <Year = {2007, 2008}>. Фигурные скобки определяют множество элементов, в котором элементы могут быть значениями поля или поисками значений поля.

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

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

Для поисков, т. е. строк, содержащих подстановочные знаки либо начинающихся с реляционного оператора или знака равенства, следует использовать двойные кавычки. К примеру, <Ingredient = {"*Garlic*"}> служит для выбора всех ингредиентов, содержащих строку "Garlic". Двойные кавычки можно заменить квадратными скобками, например <Ingredient = {[*Garlic*]}>. Также двойные кавычки можно заменить апострофами, например <Ingredient = {`*Garlic*`}>. При поиске регистр не учитывается.

Примечание:

В предыдущих версиях Qlik Sense не было различий в использовании одинарных и двойных кавычек. Все строки, заключенные в кавычки, обрабатывались как поиски. В целях обеспечения обратной совместимости приложения, созданные при помощи более ранних версий Qlik Sense, будут работать в том же порядке, что и в предыдущих версиях. В приложениях, созданных при помощи Qlik Sense November 2017 и более поздних версий, учитывается различие между двумя типами кавычек.

Принудительное исключение

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

Примечание: Режим логического "AND" поддерживается только при использовании API-интерфейса подсистемы Qlik.

Examples and results:  

Примеры Результаты
sum( {1<Region= {USA} >} Sales ) Возвращает продажи в регионе USA, игнорируя текущую выборку
sum( {$<Region = >} Sales ) Возвращает продажи для текущей выборки, но выборка в элементе "Region" удаляется.
sum( {<Region = >} Sales )

Возвращает то же, что и в примере выше. Если множество для изменения отсутствует, используется знак $.

Примечание: Синтаксис в двух предыдущих примерах интерпретируется как "выборки отсутствуют" в поле "Region", т. е. будут возможны все регионы, которым присвоены другие выборки. Не эквивалентен синтаксису <Region = {}> (или любому другому тексту с правой стороны от знака равенства, неявно возникшему в результате пустого множества элементов), интерпретируемому как "регион отсутствует".
sum( {$<Year = {2000}, Region = {US, SE, DE, UK, FR}>} Sales ) Возвращает продажи для текущей выборки, но с новыми выборками в элементах "Year" и "Region".
sum( {$<~Ingredient = {“*garlic*”}>} Sales )

Поле Ingredient находится в режиме логического "AND".

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

sum( {$<Year = {“2*”}>} Sales ) Возвращает продажи для текущей выборки, но все года начинаются на цифру "2", т. е. в поле "Year" выбран год 2000 и далее.
sum( {$<Year = {“2*”,”198*”}>} Sales ) Как и выше, но также 1980-е годы включены в выборку.
sum( {$<Year = {“>1978<2004”}>} Sales ) Возвращаются значения продаж для текущих выборок, но с числовым поиском, используемым для оценки диапазона лет для суммирования продаж за это время.