Модификаторы множества
Множество может быть изменено дополнительной или измененной выборкой. Подобное изменение может быть записано в выражении множества.
Модификатор состоит из одного или нескольких имен полей, за каждым из которых следует выборка, которая должна быть составлена на основе поля и заключена в скобки < и >. Пример: <Year={2007,+2008},Region={US}>. Имена полей и значения полей можно заключить в кавычки, как обычно, например: <[Sales Region]={’West coast’, ’South America’}>.
Модификатор множества изменяет выборку предыдущего идентификатора множества. Если отсутствует ссылка на идентификатор множества, состояние текущей выборки будет implicit.
Существует несколько способов определить выборку, как описано ниже.
На основе другого поля
Простым случаем является выборка на основе выбранных значений другого поля, например: <OrderDate = DeliveryDate>. Данный модификатор возьмет выбранные значения из элемента DeliveryDate и применит их в качестве выборки к элементу OrderDate. Если присутствует множество уникальных значений (больше пары сотен), то данная операция потребует большой загрузки ЦП, поэтому ее следует избегать.
На основе множеств элементов
Наиболее распространенный пример выражения множества — это выражение, основанное на списке значений поля, заключенном в фигурные скобки. Значения разделены запятыми, например <Year = {2007, 2008}>. Фигурные скобки определяют множество элементов, в котором элементы могут быть значениями поля или поисками значений поля.
Если значения списка не содержат пробелов или специальных символов, кавычки не требуются. Значения списка будут сопоставлены со значениями полей. При сравнении регистр не учитывается.
Если необходимо использовать подстановочные знаки либо значения списка содержат пробелы или специальные символы, следует заключить значения в кавычки. Если значения списка представляют собой значения поля, необходимо использовать одинарные кавычки. Будет выполнено сопоставление значений списка и отдельных значений полей с учетом регистра.
Для поисков, т. е. строк, содержащих подстановочные знаки либо начинающихся с реляционного оператора или знака равенства, следует использовать двойные кавычки. К примеру, <Ingredient = {"*Garlic*"}> служит для выбора всех ингредиентов, содержащих строку «Garlic». Двойные кавычки можно заменить квадратными скобками, например <Ingredient = {[*Garlic*]}>. Также двойные кавычки можно заменить апострофами, например <Ingredient = {`*Garlic*`}>. При поиске регистр не учитывается.
В предыдущих версиях QlikView не было различий в использовании одинарных и двойных кавычек. Все строки, заключенные в кавычки, обрабатывались как поиски. В целях обеспечения обратной совместимости документы, созданные при помощи более ранних версий QlikView, будут работать в том же порядке, что и в предыдущих версиях. В документах, созданных при помощи QlikView November 2017 и более поздних версий, учитывается различие между двумя типами кавычек.
Принудительное исключение
Наконец, для полей в режиме логического «И» существует также возможность принудительного исключения. При необходимости принудительно исключить определенные значения поля потребуется использовать знак « ~ » (тильда) перед именем поля.
Примеры и результаты:
Примеры | Результаты |
---|---|
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 находится в режиме логического «И». Возвращает продажи для текущей выборки, но с принудительным исключением всех ингредиентов, содержащих строку «garlic». |
sum( {$<Year = {“2*”}>} Sales ) | Возвращает продажи для текущей выборки, но все года начинаются на цифру «2», т. е. в поле «Year» выбран год 2000 и далее. |
sum( {$<Year = {“2*”,”198*”}>} Sales ) | Как и выше, но также 1980-е годы включены в выборку. |
sum( {$<Year = {“>1978<2004”}>} Sales ) | Возвращает продажи для текущей выборки, но с числовым поиском, который используется для охвата диапазона лет для суммирования продаж. |
Если нужно принудительно исключить определенные значения полей в объектах, таких как текстовые объекты, необходимо изменить синтаксис скрипта. Например, если используется оператор скрипта:
=count({<ANDActor=>}DISTINCT Title)
Измените его следующим образом:
=count({<~ANDActor=, ANDActor=>} DISTINCT Title)