qlik
December 30, 2020
Кейс Set Analysis - Баг или Фича?
Вводная часть
Разберем небольшой кейс. Источник данных, собранный на коленке:
SET1:
SET2:
Модель 1
Скрипт загрузки:
SET1:
LOAD
    ID,
    "Field 1",
    1 			As [Flag Set 1]
FROM [lib://Source/data.xlsx]
(ooxml, embedded labels, table is SET1);
SET2:
LOAD
    ID,
    "Field 2",
    1 			As [Flag Set 2]
FROM [lib://Source/data.xlsx]
(ooxml, embedded labels, table is SET2);Скриншот модели:
Посчитаем количество уникальных ID 4-мя способами:
Count(Distinct ID)
Count({<[Flag Set 1]={1}>} Distinct ID)
Count({<[Flag Set 2]={1}>} Distinct ID)
Count({ <[Flag Set 1]={1}> + <[Flag Set 2]={1}> } Distinct ID)Результат:
Модель 2
Меняем одну строку:
SET1:
LOAD
    ID,
    "Field 1",
    1 			As [Flag Set 1]
FROM [lib://Source/data.xlsx]
(ooxml, embedded labels, table is SET1);
Outer Join(SET1)
LOAD
    ID,
    "Field 2",
    1 			As [Flag Set 2]
FROM [lib://Source/data.xlsx]
(ooxml, embedded labels, table is SET2);Получилась модель данных:
Формулы остаются те же, а результат меняется:
Модель 3
Скрипт:
SET1:
LOAD
    ID,
    "Field 1"
FROM [lib://Source/data.xlsx]
(ooxml, embedded labels, table is SET1);
SET2:
LOAD
    ID,
    "Field 2"
FROM [lib://Source/data.xlsx]
(ooxml, embedded labels, table is SET2);
//==============================
Dim1:
LOAD
    ID,
    1 			As [Flag Set 1]
FROM [lib://Source/data.xlsx]
(ooxml, embedded labels, table is SET1);
Dim2:
LOAD
    ID,
    1 			As [Flag Set 2]
FROM [lib://Source/data.xlsx]
(ooxml, embedded labels, table is SET2);Модель данных:
Результат работы:
Модель 4
Скрипт:
SET1:
LOAD
    ID,
    "Field 1"
FROM [lib://Source/data.xlsx]
(ooxml, embedded labels, table is SET1);
SET2:
LOAD
    ID,
    "Field 2"
FROM [lib://Source/data.xlsx]
(ooxml, embedded labels, table is SET2);
DIM:
LOAD
    ID,
    1 			As [Flag Set 1]
FROM [lib://Source/data.xlsx]
(ooxml, embedded labels, table is SET1);
Concatenate(DIM)
LOAD
    ID,
    1 			As [Flag Set 2]
FROM [lib://Source/data.xlsx]
(ooxml, embedded labels, table is SET2);Модель данных:
Результат работы: