Set Analysis (Анализ множеств) в QlikView

ЗАЧЕМ ИСПОЛЬЗОВАТЬ SETANALYSIS

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

Множества могут использоваться в функциях агрегирования.Функции агрегирования как правило агрегируют множества возможных записей, определенных текущей выборкой. Однако выражением множества может быть определено альтернативное множество записей. Поэтому множество имеет принципиальное сходство с выборкой. В случае использования выражение множества всегда начинается и заканчивается фигурными скобками, например {BM01}.

Анализ множеств применим, как в QlikView, так и в Qlik Sense.

АНАЛИЗ МНОЖЕСТВА И ВЫРАЖЕНИЯ МНОЖЕСТВА

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

Обычно при совершении выборки функции агрегирования, такие как Sum, Max, Min, Avg и Count, выполняют агрегирование совершенных выборок: текущие выборки. Ваши выборки автоматически определяют набор данных, в отношении которых выполняется агрегирование. С помощью анализа множества можно определить группу, независимую от текущих выборок. Это может быть полезным в том случае, если необходимо узнать точное значение, например долю продукта на рынке по всем регионам, независимо от текущих выборок.

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

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

СОЗДАНИЕ ВЫРАЖЕНИЙ МНОЖЕСТВА

Перед тем как рассматривать различные аспекты примера анализа множества необходимо определить различие между выражением множества и анализом множества:

Определение множества значений поля считается определением выражения множества, тогда как использование выражений множества для анализа данных считается анализом множества. Следовательно, в остальной части данного раздела говорится о выражении множества и его компонентах.

Ниже приведен пример анализа множества: sum( {$<Year={2009}>} Sales ), где {$<Year={2009}>} является выражением множества.

Существует два общих синтаксических правила для выражения множества:

  • Выражение множества должно использоваться в функции агрегирования. В этом примере функцией агрегирования является sum(Sales).
  • Выражение множества должно быть заключено в скобки {}. В этом примере выражением множества является: {$<Year={2009}>}.

Выражение множества состоит из комбинации следующих частей:

  • Identifiers.
    Один или несколько идентификаторов определяют отношение между выражением множества и тем, что оценивается в остальной части выражения. Простое выражение множества состоит из одиночного идентификатора, например знака доллара США {$}, что означает все записи в текущей выборке.
  • Operators.
    Если идентификаторов несколько, для обновления множества данных используется один или несколько операторов. Обновление выполняется путем определения способа объединения множеств данных, представленных идентификаторами, для создания подмножества или супермножества, например.
  • Modifiers.
    Для изменения выборки в выражение множества можно добавить один или несколько модификаторов. Модификатор можно использовать самостоятельно или для изменения идентификатора для фильтра множества данных.

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

ИДЕНТИФИКАТОРЫ

Идентификаторы определяют отношение между выражением множества и значениями поля или оцениваемым выражением.

В нашем примере sum( {$<Year={2009}>} Sales ) идентификатором является знак доллара $, он означает, что множество записей для оценки состоит из всех записей текущей выборки. Этот набор в дальнейшем фильтруется частью модификатора выражения множества. В более сложном выражении множества два идентификатора можно объединить с помощью оператора.

Множества описываются в QlikView (Qlik Sense) при помощи фигурных скобок {}.

Знак 0 – описывает пустое множество.

Знак 1 – описывает полное множество всех записей в приложении.

Знак $ – представляет записи текущей выборки.

Рассмотрим выражения, которые можно формировать с помощью идентификаторов:

Выражение {$} указывает на текущую выборку.

Выражение {1-$} обозначает отрицание текущей выборки, т.е. множество, которое образуется путем исключения из всех значений приложения текущей выборки.

Выражение {$1} представляет предыдущую выборку, т.е. эквивалентно нажатию кнопки “Назад”.

Выражение {$_1}, {$_2} … {$_N} представляет следующие выборки, т.е. на один, два … N шагов вперед, т.е. эквивалентно нажатию кнопки “Вперед”. В уведомлениях Назад и Вперед может быть использовано любое целое без знака. Выражение {$_0} представляет текущую выборку.

Выражение {1} игнорируется текущая выборка (за множество данных берутся все строки приложения). Измерение не игнорируется.

Выражение{1} Total – игнорируется и текущая выборка, и измерение.

Выражение {BookMark} – множество содержит набор значений, которое образуется фильтрами, сохраненными в закладке “Bookmark” приложения QlikView (Qlik Sense).

Group – Название группы, альтернативное состояние (Alternate State)Примеры:

  • sum({$} Sales)
    возвращает продажи для текущей выборки, т.е. тоже самое, что функция sum(Sales);
  • sum({$1} Sales)
    возвращает продажи для предыдущей выборки;
  • sum({$_2} Sales)
    возвращает продажи для второй следующей выборки, т.е. на два шага вперед. Подходит только в случае выполнения двух операций Назад;
  • sum({1} Sales)
    возвращает общий объем продаж в приложении, игнорируется выборка, но не измерение. При использовании в диаграмме, где в качестве измерения присутствует Продукция, каждый продукт получит различное значение;
  • sum({1} TotalSales)
    возвращает общий объем продаж в приложении, игнорируется и выборка, и измерение. Т.е. тоже самое, что функция sum(AllSales);
  • sum({BM01} Sales)
    возвращает продажи для закладки BM01;
  • sum({MyBookMark} Sales)
    возвращает продажи для закладки MyBookMark.;
  • sum({Server\BM01} Sales)
    возвращает продажи для закладки сервера BM01.;
  • sum({Document\MyBookmark} Sales)
    возвращает продажи для закладки документа MyBookmark.;

ОПЕРАТОРЫ МНОЖЕСТВА

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

+: объединение множеств. Данная бинарная операция возвращает множество, состоящее из записей, принадлежащих любому из двух операндов множества.

464

A+B

-: Исключение одного множества записей из другого множества записей. Данная бинарная операция возвращает множество записей, принадлежащих первому из двух операндов множества. Также, при использовании в качестве унарного оператора, она возвращает дополнительное множество.

https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Venn0100.svg/220px-Venn0100.svg.png

A-B

*: Пересечение множеств. Данная бинарная операция возвращает множество, состоящее из записей, принадлежащих обоим операндам множества.

https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Venn0001.svg/220px-Venn0001.svg.png

A*B

/: Исключающее ИЛИ. (члены, принадлежащие только к одному из двух наборов). Данная бинарная операция возвращает множество, состоящее из записей, принадлежащих любому из операндов множества, но не обоим.

https://upload.wikimedia.org/wikipedia/commons/thumb/4/46/Venn0110.svg/220px-Venn0110.svg.png

A\B Очередность: 1) унарный минус (дополнительно), 2) пересечение и симметрическая разность и 3)Объединение и исключение. Внутри группы выражение оценивается слева на право. Альтернативная очередность может быть определена стандартными скобками, которые могут быть необходимы, так как операторы множества не переключаются. Например, A+(B-C) отлично от (A+B)-C, которое, в свою очередь, отлично от (A-C)+B.

МОДИФИКАТОРЫ МНОЖЕСТВА

Модификаторы используются для внесения дополнений или изменений в выборку. Подобные изменения могут быть записаны в выражении множества. Модификатор состоит из нескольких имен поля, после каждого указана одна или несколько выборок, которые можно выполнить в поле. Модификаторы начинаются и заканчиваются угловыми скобками <>.

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

Множество может быть изменено дополнительной или измененной выборкой. Подобное изменение может быть записано в выражении множества. Модификатор состоит из одного или нескольких имен полей, за каждым из которых следует выборка, которая должна быть составлена на основе поля и заключена в <и>. Например: <Year={2007,+2008}, Region={US}>. Имена и значения полей могут цитироваться как обычно. Например: <[SalesRegion]={’Westcoast’, ’SouthAmerica’}>.

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

Наиболее распространенным случаем, однако, является выборка, основанная на списке значений полей, заключенном в фигурные скобки, значения разделены запятыми. Например: <Year={2007,2008}>. Здесь фигурные скобки определяют множество элементов, в котором элементы могут быть либо значениями полей, либо поисками значений полей. Поиск всегда определяется использованием двойных кавычек. Например, <Ingredient={«*Garlic*»}> выберет все ингредиенты, включая строку «чеснок».

Поиски чувствительны к регистру, а также выполняются для всех исключенных значений. Пустые множества элементов, явно, например <Product={}>, или не явно, например <Product={«PerpetuumMobile»}> (поиск без проверок), означают продукция отсутствует, т.е. результатом будет множество записей, не связанных с каким-либо продуктом. Обратите внимание, что данное множество может быть достигнуто с помощью обычных выборок, кроме случаев, когда выборка сделана в другом поле, например TransactionID.

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

Модификатор множества может использоваться на идентификаторе множества или сам по себе. Он не может использоваться на выражении множества. При использовании на идентификаторе множества модификатор должен быть записан сразу после идентификатора множества. Например: {$<Year={2007,2008}>}. При использовании модификатора самого по себе он интерпретируется как изменение текущей выборки.Примеры:

  • sum({1<Region={US}>} Sales)
    возвращает продажи для региона США, текущая выборка игнорируется;
  • sum({$<Region=>} Sales)
    возвращает продажи для текущей выборки, выборки «Регион» удаляется;
  • sum({<Region=>} Sales)
    возвращает тоже, что и в примере выше. Если множество для изменения отсутствует, используется знак $;
  • sum({$<Year={2000}, Region={US,SE,DE,UK,FR}>} Sales)
    возвращает продажи для текущей выборки, но с новыми выборками в полях «Год» и «Регион»;
  • sum({$<~Ingredient={“*garlic*”}>} Sales)
    возвращает продажи для текущей выборки, но с принудительным исключением всех ингредиентов, содержащих строку «garlic»;
  • sum({$<Year={“2*”}>} Sales)
    возвращает продажи для текущей выборки, но все года начинаются на цифру «2», т.е. в поле «Год» выбран год 2000 и далее;
  • sum({$<Year={“2*”, ”198*”}>} Sales)
    как и выше, но в выборку также включены 80-е года;
  • sum({$<Year={“>1978$<2004”}>} Sales)
    как и выше, но с цифровым поиском с возможностью указания произвольного диапазона;

МОДИФИКАТОРЫ МНОЖЕСТВА С ОПЕРАТОРАМИ МНОЖЕСТВА

Выборка в поле может быть определена с помощью операторов множества, как описано выше, при работе с различными множествами элементов. Например, модификатор <Year={«20*»,1997}-{2000}> выберет все года, начиная с «20» в дополнение к «1997», кроме «2000».

МОДИФИКАТОРЫ МНОЖЕСТВА, ИСПОЛЬЗУЮЩИЕ НАЗНАЧЕНИЯ С ОПЕРАТОРАМИ МНОЖЕСТВА IMPLICIT

Эта нотация определяет новые выборки, игнорируя текущие выборки в поле. Однако, если требуется основать выборку на текущей выборке в поле и добавить значения поля, например, необходим модификатор <Year = Year + {2007, 2008}>. Простой и эквивалентный способ записать это — <Year += {2007, 2008}>, т. е. оператор назначения неявно определяет объединение. Также неявные пересечения, исключения и симметрические разности могут быть определены с помощью элементов “*=”, “–=” и “/=”.Примеры:

  • sum({$<Product += {OurProduct1,OurProduct2}>} Sales)
    возвращает продажи для текущей выборки, но с использованием неявного объединения для добавления продуктов «OurProduct1» и «OurProduct2» в список выбранных продуктов;
  • sum({$<Year = Year+({“20*”,1997} – {2000})>} Sales)
    возвращает продажи для текущей выборки, но с использованием неявного объединения для добавления нескольких годов в выборку: 1997 и все годы, начинающиеся с “20” – за исключением 2000. Обратите внимание, что в случае включения значения 2000 в текущую выборку оно останется включенным и после изменения. Также, как <Year = Year + ({“20*”,1997} – {2000})>;
  • sum({$<Product *= {OurProduct1}>} Sales)
    возвращает продажи для текущей выборки, но только для пересечения выбранных на данный момент продуктов и продукта «OurProduct1»;

МОДИФИКАТОРЫ МНОЖЕСТВА С РАСШИРЕНИЯМИ СО ЗНАКОМ ДОЛЛАРА

В выражениях множества могут использоваться переменные и другие расширения со знаком доллара.Примеры:

  • sum({$<Year = {$(#vLastYear)}>} Sales)
    возвращает продажи для предыдущего года в отношении текущей выборки. Здесь переменная vLastYear, содержащая соответствующий год, используется в расширении со знаком доллара.;
  • sum({$<Year = {$(#=Only(Year)-1)}>} Sales)
    возвращает продажи для предыдущего года в отношении текущей выборки. Здесь расширение со знаком доллара используется для расчета предыдущего года;

МОДИФИКАТОРЫ МНОЖЕСТВА С РАСШИРЕННЫМИ ПОИСКАМИ

Для определения множеств могут использоваться расширенные поиски с помощью подстановочных знаков и агрегирований.Примеры:

  • sum({$–1<Product = {“*Internal*”, “*Domestic*”}>} Sales)
    возвращает продажи для текущей выборки, за исключением продуктов со строкой «Internal» или «Domestic» в имени продукта;
  • sum({$<Customer = {“=Sum({$<Year={2007}>} Sales)>1000000”}>} Sales)
    возвращает продажи для текущей выборки, но с новой выборкой в поле «Клиент»: только клиенты с общими продажами более 1 000 000 за 2007 год;

МОДИФИКАТОРЫ МНОЖЕСТВА С НЕЯВНЫМИ ОПРЕДЕЛЕНИЯМИ ЗНАЧЕНИЙ ПОЛЯ

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

В подобных случаях должны использоваться функции элемента P() и E(), представляющие множество элементов возможных значений и исключенные значения поля, соответственно. В скобках можно указать одно выражение множества и одно поле. Например: P({1} Customer). Эти функции не могут использоваться в других выражениях.Примеры:

  • sum({$<Customer = P({$<Product = {‘Shoe’}>} Customer)>} Sales)
    возвращает продажи для текущей выборки, но только клиентов, покупавших когда — либо продукт «Обувь». Здесь функцияэ лемента P() возвращает список возможных клиентов, подразумеваемых выборкой «Обувь» в поле Продукция;
  • sum({$<Customer = P({$<Product = {‘Shoe’}>})>} Sales)
    то же, что и в примере выше. Если в функции элемента поле опущено, функция вернет возможные значения для поля, указанного во внешнем назначении;
  • sum({$<Customer=P({$<Product = {‘Shoe’}>} Supplier)>} Sales)
    возвращает продажи для текущей выборки, но только клиентов, поставлявших когда — либо продукт «Обувь». Здесь функция элемента P() возвращает список возможных поставщиков, подразумеваемых выборкой «Обувь» в поле Продукция. Список поставщиков затем используется в качестве выборки в поле Клиент;
  • sum({$<Customer = E({$<Product={‘Shoe’}>})>} Sales)
    возвращает продажи для текущей выборки, но только клиентов, никогда не покупавших продукт «Обувь». Здесь функция элемента E() возвращает список клиентов, исключенных выборкой «Обувь» в поле Продукция;

СИНТАКСИС ДЛЯ МНОЖЕСТВ (QLIKVIEW, QLIK SENSE)

Таким образом, полный синтаксис (не включая дополнительное использование стандартных скобок для определения последовательности) выглядит следующим образом:

set_expression ::= { set_entity { set_operatorset_entity }}
set_entity ::= set_identifier[ set_modifier ]
set_identifier ::= 1|$|$N|$_N|bookmark_id|bookmark_name
set_operator ::= +|-|*|/
set_modifier ::= $<field_selection{,field_selection}>
field_selection ::= field_name[=|+=|¬–=|*=|/=] element_set_expression
element_set_expression ::= element_set{ set_operator element_set }
element_set ::= [field_name]|{element_list}|element_function
element_list ::= element{,element}
element_function ::= (P|E)([set_expression][field_name])
element ::= field_value| "search_mask"

ПРИМЕРЫ

Sum ({$<[Компания]-={'*Indef*'}+{'<пустоезначение>'}>}Данные)
459
Sum({1-$<~[Компания] = {‘*ffff*’}>} Данные)
460
Sum({$<[Год] *= {‘201*’,2009}-{$(#vCurrentYear)}>}Данные)
461

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

Sum({<[Компания] = P({$<[Рэйтинг]={'5'}>) [Компания]}>} Данные)
462
Sum({<[Год] ={'>=$(vYearMin)<=$(vYearMax)’}Данные)
463
Комментирование и размещение ссылок запрещено.

Комментарии закрыты.

63 queries in 0,473 seconds