Дубликаты данных в QlikView

Автор Ирина, 25 июня 2015, 11:15:42

« назад - далее »

Ирина

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

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

Пример - на картинке строчка (дубликат во 2ой таблице) выделена желтым.

admin

Привет.
Все зависит от того, каким образом происходит обновление.
При загрузке данных в приложении Qlikview модель данных формируется заново.
Если в Excel таблицах встречаются дубликаты, можно от них избавиться, добавив Distinct в оператор Load.

Ирина

Да, на данный момент, модель данных формируется заново.
А как добавить Distinct в оператор Load?

И все-таки вопрос как QlikView обрабатывает такие строки без Distinct?

admin

#3
Проверьте


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?

admin

Привет.
В данном примере "load Distinct *;" идет в роли предварительной загрузки.
Обратите внимание, для этого оператора не указан источник данных (from или resident) поэтому он обрабатывает данные последующих операторов Load.
Т.е. сначала грузит две таблицы с дубликатами, убирает дубликаты и оставляет в памяти одну таблицу.
Звездочка *  в операторе load обозначает "все поля", стандартная маска:  * = все символы.

Ирина

Теперь все понятно, большое спасибо за подробные разъяснения!  :)

Яндекс.Метрика