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