Неофициальный форум пользователей Qlik Sense & Qlikview

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: Ирина от 25 июня 2015, 11:15:42

Название: Дубликаты данных в QlikView
Отправлено: Ирина от 25 июня 2015, 11:15:42
Добрый день!
Осуществляю загрузку данных в свое приложение QlikView через Excel файлы.
Планирую ежемесячно обновлять данные и встал вопрос, а как QlikView обрабатывает полностью одинаковые строки (или дубликаты)?

По одной из таблиц моей модели происходит автоматическое связывание (я пополняю ее новыми данными). И иногда в пополняемых данных могут присутствовать уже строки, которые были ранее. Как их видит и обрабатывает QlikView?

Пример - на картинке строчка (дубликат во 2ой таблице) выделена желтым.
Название: Re: Дубликаты данных в QlikView
Отправлено: admin от 25 июня 2015, 11:19:53
Привет.
Все зависит от того, каким образом происходит обновление.
При загрузке данных в приложении Qlikview модель данных формируется заново.
Если в Excel таблицах встречаются дубликаты, можно от них избавиться, добавив Distinct в оператор Load.
Название: Re: Дубликаты данных в QlikView
Отправлено: Ирина от 25 июня 2015, 11:32:09
Да, на данный момент, модель данных формируется заново.
А как добавить Distinct в оператор Load?

И все-таки вопрос как QlikView обрабатывает такие строки без Distinct?
Название: Re: Дубликаты данных в QlikView
Отправлено: admin от 25 июня 2015, 12:51:32
Проверьте


LOAD * INLINE [
    F1, F2, F3
    1, Кофта, 42
    2, Штаны, 44
    3, Блузка, 44
    4, Футболка, 42
];

LOAD * INLINE [
    F1, F2, F3
    1, Кофта, 42
    7, Футболка, 42
];

Будет загружено 6 записей в одну таблицу, "1, Кофта, 42" , будет повторяться.
В простой таблице будет отображаться 5 записей.
Наличие хоть одного Distinct приведет к тому, что дубли будут исключены. Но выглядит как-от непонятно, и чтобы не надеяться на внутренние механизмы Qlikivew можно сделать так:

load Distinct *;
LOAD * INLINE [
    F1, F2, F3
    1, Кофта, 42
    2, Штаны, 44
    3, Блузка, 44
    4, Футболка, 42
];
LOAD * INLINE [
    F1, F2, F3
    1, Кофта, 42
    7, Футболка, 42
];

В этом случае всем понятно что мы хотим сделать.
Название: Re: Дубликаты данных в QlikView
Отправлено: Ирина от 26 июня 2015, 01:55:51
Спасибо, буду пробовать!
Скажите, "load Distinct *;" - означает, что будут загружаться все указанные ниже ассоциированные таблицы с учетом проверки на Distinct?
А что означает знак "*" после Distinct?
Название: Re: Дубликаты данных в QlikView
Отправлено: admin от 26 июня 2015, 04:47:54
Привет.
В данном примере "load Distinct *;" идет в роли предварительной загрузки.
Обратите внимание, для этого оператора не указан источник данных (from или resident) поэтому он обрабатывает данные последующих операторов Load.
Т.е. сначала грузит две таблицы с дубликатами, убирает дубликаты и оставляет в памяти одну таблицу.
Звездочка *  в операторе load обозначает "все поля", стандартная маска:  * = все символы.
Название: Re: Дубликаты данных в QlikView
Отправлено: Ирина от 26 июня 2015, 05:57:19
Теперь все понятно, большое спасибо за подробные разъяснения!  :)