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

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: Multicvet от 05 декабря 2014, 07:21:27

Название: Объединение таблиц с заменой
Отправлено: Multicvet от 05 декабря 2014, 07:21:27
Требуется объединить клиентов в одну табличку. При этом если в таблице сопоставления есть правило замены старого клиента на нового, то заменить, если нет, то загрузить клиентов из таблиц.

Например, есть три таблички:
    Клиент новый
                - Клиент Н1
                - Клиент Н2

2)     Клиент старый
                - Клиент С1
                - Клиент С2

3)     |Сопоставление|
                - Клиент Н1 | Клиент С1 (т.е. С1 заменяем на Н1)

Какими лопатами-граблями можно добиться, следующей таблички:
Н1
Н2
С2

Спасибо!
Название: Re: Объединение таблиц с заменой
Отправлено: admin от 06 декабря 2014, 10:58:00
Доброго времени суток  :)
Вот как вариант, идея такая:
В таблице  старых клиентов ставим метку для тех, которые уже есть в новых клиентах, через таблицу сопоставления.
Затем отсекаем по проставленной метке тех кто имеет сопоставления и грузим тех, кто таких записей не имеет.
Код примера несложный, копируем и запускаем:

// Пример скрипта для форума Qlikview & Qlik SENSE
ClientNew:
LOAD * INLINE [
    %IDN, NewClient
    n1, Клиент A
    n2, Клиент B
    n3, Клиент C
    n4, Клиент D
];

ClientOld:
LOAD * INLINE [
   %IDN, %IDO
    n3, o2
    n1, o4
];

right Join LOAD * INLINE [
    %IDO, OldClient
    o1, Клиент Ф
    o2, Клиент Ц
    o3, Клиент Л
    o4, Клиент А
];
STORE * from ClientOld into ClientOld.qvd(qvd);
drop Table ClientOld;

LOAD %IDO as [%IDN], OldClient as [NewClient]
FROM [ClientOld.qvd](qvd)
WHERE(IsNull(%IDN));
Название: Re: Объединение таблиц с заменой
Отправлено: Multicvet от 18 декабря 2014, 05:03:58
Спасибо! Попробую!