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);Модель данных:
Результат работы: