Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Декабрь 18, 2017, 06:20:06 am

Автор Тема: Дубликаты данных в QlikView  (Прочитано 1853 раз)

Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Дубликаты данных в QlikView
« : Июнь 25, 2015, 11:15:42 am »
Добрый день!
Осуществляю загрузку данных в свое приложение QlikView через Excel файлы.
Планирую ежемесячно обновлять данные и встал вопрос, а как QlikView обрабатывает полностью одинаковые строки (или дубликаты)?

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

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

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1005
  • Страна: ru
  • Рейтинг: +103/-0
    • Просмотр профиля
Re: Дубликаты данных в QlikView
« Ответ #1 : Июнь 25, 2015, 11:19:53 am »
Привет.
Все зависит от того, каким образом происходит обновление.
При загрузке данных в приложении Qlikview модель данных формируется заново.
Если в Excel таблицах встречаются дубликаты, можно от них избавиться, добавив Distinct в оператор Load.

Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Re: Дубликаты данных в QlikView
« Ответ #2 : Июнь 25, 2015, 11:32:09 am »
Да, на данный момент, модель данных формируется заново.
А как добавить Distinct в оператор Load?

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

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

Re: Дубликаты данных в QlikView
« Ответ #2 : Июнь 25, 2015, 11:32:09 am »

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1005
  • Страна: ru
  • Рейтинг: +103/-0
    • Просмотр профиля
Re: Дубликаты данных в QlikView
« Ответ #3 : Июнь 25, 2015, 12:51:32 pm »
Проверьте

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
];
В этом случае всем понятно что мы хотим сделать.

Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Re: Дубликаты данных в QlikView
« Ответ #4 : Июнь 26, 2015, 01:55:51 pm »
Спасибо, буду пробовать!
Скажите, "load Distinct *;" - означает, что будут загружаться все указанные ниже ассоциированные таблицы с учетом проверки на Distinct?
А что означает знак "*" после Distinct?

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 1005
  • Страна: ru
  • Рейтинг: +103/-0
    • Просмотр профиля
Re: Дубликаты данных в QlikView
« Ответ #5 : Июнь 26, 2015, 04:47:54 pm »
Привет.
В данном примере "load Distinct *;" идет в роли предварительной загрузки.
Обратите внимание, для этого оператора не указан источник данных (from или resident) поэтому он обрабатывает данные последующих операторов Load.
Т.е. сначала грузит две таблицы с дубликатами, убирает дубликаты и оставляет в памяти одну таблицу.
Звездочка *  в операторе load обозначает "все поля", стандартная маска:  * = все символы.

Оффлайн Ирина

  • Наставник
  • **
  • Сообщений: 78
  • Рейтинг: +5/-0
    • Просмотр профиля
Re: Дубликаты данных в QlikView
« Ответ #6 : Июнь 26, 2015, 05:57:19 pm »
Теперь все понятно, большое спасибо за подробные разъяснения!  :)

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

Re: Дубликаты данных в QlikView
« Ответ #6 : Июнь 26, 2015, 05:57:19 pm »