пятница, 24 февраля 2012 г.

Set Analysis in QlikView

Одним из основных принципов построения приложений в QlikView является Set Analysis или анализ множеств. Для начала давайте разберемся с понятием множества. Согласно формулировке Бертрана Рассела «Множество есть совокупность различных элементов, мыслимая как единое целое». Другими словами в QlikView множеством будем называть некий набор данных, отобранных по определенным правилам.

Все мы  пользовались функцией суммирования по столбцу в Excel определяя набор ячеек в которых находятся значения для суммирования, в QlikView мы бы просто написали функцию sum(Sales). Затем мы хотим проанализировать данные за определенный год, то есть выделяем ячейки за определенный год. В  QlikView мы бы написали функцию sum({S<Year={2011}>} Sales).

Итак, анализ множеств по своей сути близок к концепции выделения (selection) и позволяет дополнительно определить  данные, которые бы не завесили от текущего выделения (то есть в терминах QlikView от тех фильтров, которые мы наложили на данные).
В QlikView множество заключается в круглые скобки  { } и используется в функциях агрегирования.
Синтаксически множество описывается операторами 3х видов:

·         Идентификатор (Identifiers)  – определяет базовый набор данных для нашего подмножества.

·         Оператор (Operators)  - позволяет определить операцию, которая будет использоваться для формирования данных из нескольких множеств (множества как и числа можно складывать и вычитать J)

·         Модификатор (Modifiers) – позволяет изменить сформированное подмножество.

Теперь разберем каждый вид оператора. В QlikView чаще всего используются следующие идентификаторы:

·         $ - множество записей отобранных пользователей (Selection).  Функция суммирования будет выглядеть как  sum ({$} Sales) это эквивалентно функции sum ({$} Sales).

·         1 – множество всех записей приложения (как будто на данные приложения пользователь и не накладывал фильтр). Функция суммирования будет выглядеть как sum ({1} Sales).   

Так же может использоваться идентификатор 0, определяющий пустое множество.

Так же множество базироваться на фильтрах установленных пользователем  ( $1 – предыдущее выделение, S_1 – следующий набор фильтров, причем QlikView может обрабатывать множества  на несколько шагов вперед/назад), а так же на закладках с определенным именем, например функция Sum({MyCustomer}Sales) просуммрует все продажи для данных определенных в закладке MyCustomer  (обратите внимание, что данные, определяемые в закладке MyCustomer  так же являются множеством и заключены в фигурные скобки с точки зрения синтаксиса.

Как я уже сказала ранее множества, как и числа, можно складывать, вычитать и умножать. Только термины используются чуть-чуть другие, а операторы остались все те же.
+  - Union (объединение)  – возвращает набор записей, принадлежащих обоим множествам

-  Exclusion – возвращает записи, принадлежащие первому, но не принадлежащие другому множеству, определенному идентификатором
* Inersection – Пересечение – возвращает записи, принадлежащие обоим множествам.

/ - Symmetric Difference -  симметрическая разность -  возвращает подмножество, принадлежащее либо одному, либо другому множеству, но не обоим одновременно.

Например,  Sum ({1-$} Sales) возвращает продажи по всем записям за исключением выделенных.

Наконец множество сформированное идентификаторами и операторами может быть изменено модификаторам.  Модификатор состоит из одного или нескольких полей, за каждым из которых следует выборка на основе этого поля. Модификатор заключается в угловые скобки  <  >.
Например:
 sum ({1 <Регион = {Запад}>} Продажи )  - возвращает сумму продаж по региону Запад (модификатор <Регион = {Запад}>), при это текущая выборка игнорируется (1 – определяет весь набор записей, игнорируя текущую выборку).
Sum({$<Год = {2011}, Регион = {Запад} >} Продажи) – возвращает сумму продаж по региону запад за 2011 год, при этом используется текущая выборка пользователя по всем остальным полям ($ - текущая выборка).  
Для того, что бы поэкспериментировать в построении различных множеств можно создать небольшое QlikView приложение и в Pivot-таблицах в качестве выражений написать различные выражения. Мое приложение выглядит вот так:
LOAD * INLINE [
    Месяц, Регион, Продажи
    1, Запад, 10
    1, Восток, 10
    1, Юг, 10
    1, Север, 10
    2, Запад, 10
    2, Восток, 10
    2, Юг, 10
    2, Север, 10
    3, Запад, 10
    3, Восток, 10
    3, Юг, 10
    3, Север, 10
]
;

 
Думаете, что это все средства, которые можно использовать для формирования множеств?  Нет, поэтому продолжение следует.

Комментариев нет:

Отправить комментарий