Маркус 'ответ правильный. Способ сделать это - использовать IntervalMatch. Вы можете получить две таблицы такими, какие они есть, и добавить отношение между ними, используя IntervalMatch. Вы не можете добавить отношения после запуска скрипта загрузки.
Сначала вам нужно загрузить таблицу с диапазоном дат (запросы sql опущены). Допустим,
Ranges:
LOAD
rangeID,
validfrom, // date
validto, // date
commonkey, // common key for the two tables
price; // the data that's needed as a result of the linking
Во-вторых, вы загружаете другую таблицу с датой
Data:
LOAD
column1,
column2,
date,
commonkey;
Далее вам нужно будет использовать IntervalMatch. Это один из способов сделать это:
Left Join (Data)
IntervalMatch(date, commonkey)
LOAD
validfrom,
validto,
commonkey
Resident Ranges;
Теперь у вас есть связь между двумя таблицами. Вы можете удалить полученный синтетический ключ, добавив это:
Left Join (Data)
LOAD
validfrom,
validto,
commonkey,
rangeID
Resident Ranges;
DROP Fields validfrom, validto FROM Data;
Теперь таблицы связаны с помощью клавиши rangeID
. Если у таблиц нет общего ключа, например, идентификатора категории или чего-то еще (т. Е. Нужно сопоставить только даты), вы можете просто проигнорировать commonkey
в приведенном выше примере. Я просто хотел включить его в пример, потому что он мне нужен в моем случае, и, надеюсь, он поможет кому-то с подобной проблемой.
Вы можете найти это в справке Qlikview с пометкой «IntervalMatch (extended)». Кулинарная книга Qlikview (fillrowsintervalmatch.qvw) также помогла мне с этой проблемой.