Добрый день!
Осуществляю загрузку данных в свое приложение QlikView через Excel файлы.
Планирую ежемесячно обновлять данные и встал вопрос, а как QlikView обрабатывает полностью одинаковые строки (или дубликаты)?
По одной из таблиц моей модели происходит автоматическое связывание (я пополняю ее новыми данными). И иногда в пополняемых данных могут присутствовать уже строки, которые были ранее. Как их видит и обрабатывает QlikView?
Пример - на картинке строчка (дубликат во 2ой таблице) выделена желтым.
Привет.
Все зависит от того, каким образом происходит обновление.
При загрузке данных в приложении Qlikview модель данных формируется заново.
Если в Excel таблицах встречаются дубликаты, можно от них избавиться, добавив Distinct в оператор Load.
Да, на данный момент, модель данных формируется заново.
А как добавить Distinct в оператор Load?
И все-таки вопрос как QlikView обрабатывает такие строки без Distinct?
Проверьте
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
];
В этом случае всем понятно что мы хотим сделать.
Спасибо, буду пробовать!
Скажите, "load Distinct *;" - означает, что будут загружаться все указанные ниже ассоциированные таблицы с учетом проверки на Distinct?
А что означает знак "*" после Distinct?
Привет.
В данном примере "load Distinct *;" идет в роли предварительной загрузки.
Обратите внимание, для этого оператора не указан источник данных (from или resident) поэтому он обрабатывает данные последующих операторов Load.
Т.е. сначала грузит две таблицы с дубликатами, убирает дубликаты и оставляет в памяти одну таблицу.
Звездочка * в операторе load обозначает "все поля", стандартная маска: * = все символы.
Теперь все понятно, большое спасибо за подробные разъяснения! :)