Для простых операций поиска, где вы хотите посмотреть одного значения а из другого значения вы можете использовать MAPPING
нагрузки, а затем использовать функцию ApplyMap()
. Например, у меня есть следующая таблица:
LOAD
*
INLINE [
UserID, System
1, Windows
2, Linux
3, Windows
];
У меня есть еще одна таблица, содержащая UserID и UserName следующим образом:
LOAD
*
INLINE [
UserID, UserName
1, Alice
2, Bob
3, Carol
];
можно затем объединить вышеуказанные таблицы с ApplyMap
следующим образом:
UserNameMap:
MAPPING LOAD
*
INLINE [
UserID, UserName
1, Alice
2, Bob
3, Carol
];
SystemData:
LOAD
UserID,
ApplyMap('UserNameMap', UserID, 'MISSING') as UserName,
System
INLINE [
UserID, System
1, Windows
2, Linux
3, Windows
];
Приложение ApplyMap очень быстро и не должно значительно замедлять время загрузки (хотя это будет не так быстро, как прямая загрузка QVD). Однако, как упоминалось, ApplyMap может использоваться только в том случае, если вы хотите сопоставить одно значение в таблице. Для получения дополнительных полей вам нужно будет использовать join
(который похож на SQL JOIN), если вы хотите объединить результаты в одну таблицу.
Если вы не хотите присоединяться к ним в одну таблицу (но сохраняйте ее как схему «звезда»), просто убедитесь, что поля, которые вы хотите связать, называются одинаковыми. Например:
A_Left:
Load a_id_left,
a_name_left as [Name_Left]
inline [
a_id_left, a_name_left
1, 'nwsnd'
2, 'dcsdcws'
3, 'fsdf' ];
A_Rigtht:
Load a_id_right,
a_name_right as [Name_Right]
inline [
a_id_right, a_name_right
1, 'nwsnd'
2, 'dcsdcws'
3, 'fsdf' ];
Data:
Load id,
a_id_left,
a_id_right,
data
inline [
id, a_id_left, a_right_id, data
1, 1, 2, 37
1, 1, 3, 18
1, 2, 3, 62
];
(я удалил свои «имя» поля из «данных», как бы не сработал).
Это будет работать в вашем документе QlikView из-за автоматической ассоциативности поля QlikView.
Однако, если вы хотите иметь данные в одной таблице (например,для вывода на QVD), то в вашем случае вам нужно будет JOIN
ваших двух таблиц в Data
. Мы можем изменить некоторые таблицы, чтобы сделать нашу жизнь немного легче, если положить ваш Data
стол первым, мы можем присоединиться к своим двум другим таблицам на:
Data:
Load id,
a_id_left,
a_id_right,
data
inline [
id, a_id_left, a_id_right, data
1, 1, 2, 37
1, 1, 3, 18
1, 2, 3, 62
];
LEFT JOIN (Data)
Load a_id_left,
a_name_left as [Name_Left]
inline [
a_id_left, a_name_left
1, 'nwsnd'
2, 'dcsdcws'
3, 'fsdf' ];
LEFT JOIN (Data)
Load a_id_right,
a_name_right as [Name_Right]
inline [
a_id_right, a_name_right
1, 'nwsnd'
2, 'dcsdcws'
3, 'fsdf' ];
Это будет прибегать в одной таблице с именем " Данные, которые вы затем можете вывести на QVD и т. Д.
Возможно, вы захотите подумать об оптимизации вашего эквалайзера «Таблица А», так как он почти загружен дважды, это может занять некоторое время (например, с сервера дальней связи и т. Д.), поэтому может быть лучше захватить ваши данные за один раз, а затем разрезать его, как только он будет в памяти (намного быстрее). Быстрый пример может быть следующим:
TableA:
LOAD
a_id_left,
a_id_right,
a_name_left,
a_name_right
FROM ...;
Data:
Load id,
a_id_left,
a_id_right,
data
inline [
id, a_id_left, a_id_right, data
1, 1, 2, 37
1, 1, 3, 18
1, 2, 3, 62
];
LEFT JOIN (Data)
LOAD DISTINCT
a_id_left,
a_name_left as [Name_Left]
RESIDENT TableA;
LEFT JOIN (Data)
LOAD DISTINCT
a_id_right,
a_name_right as [Name_Right]
RESIDENT TableA;
DROP TABLE TableA;