Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

сокращение строк load distinct...

Всем привет!

При загрузке данных в приложение мне часто приходится выполнять операцию сокращения строк в таблице фактов путем объединения ее с таблицей справочника по коду. Например так

inner join (Fact_table)

load distinct dim_id resident Dimension1;

Все здорово и великолепно, за исключением того, что эта операция убирает дубли строк из таблицы фактов - Fact_table (пример во вложении)...

В связи с этим 2 вопроса:

1. не является ли такое поведение ошибкой? В документации об обрезании результирующей таблицы вроде ничего не написано.

2. приходится для сохранения всех строк таблицы фактов использовать временную таблицу, куда записывать уникальные коды, затем ее соединять с таблицей фактов.

tmp_Dim:

load distinct dim_id resident Dimension1;

inner join (Fact_table)

load dim_id resident tmp_Dim;

drop table tmp_Dim;

Можно ли сделать это проще, без временной таблицы?

1 Solution

Accepted Solutions
Sergey_Polekhin
Employee
Employee

Здесь нет ошибки.

Дело в том, что выполнение команд

inner join (Data)

load distinct Dim1 resident Dimension;

приводит к созданию промежуточной таблицы, в которую и выполняется объединение данных из двух исходных таблиц. Присутствие же конструкции load distinct Dim1 приводит к отбору в эту промежуточную таблицу только уникальных значений Dim1.

Полагаю, что если вам нужно просто выполнить проверку и уничтожение записей не совпадающих со справочником, то проще использовать конструкцию Inner Keep (Data) при загрузке таблицы Dimension.

В этом случае вы уничтожаете не нужные данные сразу в обоих таблицах при единичной загрузке таблицы Dimension.

Пример приложения - в аттаче. Я позволил себе добавить в исходную таблицу Data еще одно значение, для того, чтобы убедиться в том, что оно уничтожится в результате использования конструкции Inner Keep.

View solution in original post

2 Replies
Sergey_Polekhin
Employee
Employee

Здесь нет ошибки.

Дело в том, что выполнение команд

inner join (Data)

load distinct Dim1 resident Dimension;

приводит к созданию промежуточной таблицы, в которую и выполняется объединение данных из двух исходных таблиц. Присутствие же конструкции load distinct Dim1 приводит к отбору в эту промежуточную таблицу только уникальных значений Dim1.

Полагаю, что если вам нужно просто выполнить проверку и уничтожение записей не совпадающих со справочником, то проще использовать конструкцию Inner Keep (Data) при загрузке таблицы Dimension.

В этом случае вы уничтожаете не нужные данные сразу в обоих таблицах при единичной загрузке таблицы Dimension.

Пример приложения - в аттаче. Я позволил себе добавить в исходную таблицу Data еще одно значение, для того, чтобы убедиться в том, что оно уничтожится в результате использования конструкции Inner Keep.

Anonymous
Not applicable
Author

Спасибо Сергей!

оператор keep то что надо, не знал о нем...