Вы здесь

Обмен переменными между приложениями Qlikview

PDF-версия

В процессе работы над аналитическими приложениями Qlikview нередко возникает необходимость передать переменные из одного скрипта в другой. Например, в приложениях пользователя на контрольную панель (Dashboard) необходимо вывести точку актуальности данных, другими словами дату запроса к базе данных источника.

Обычно, для этого используют переменные, передавая в них значения из запросов. Например, запрос даты начала периода в БЭСТ-5:

load MakeDate(left(param1,4),mid(param1,5,2),Right(param1,2)) as 'curr_beg';
SQL SELECT param1 FROM `ini_global_v` WHERE name='CURR_BEG';

LET QueryDate=today();
LET StartDate = peek('curr_beg');

Помимо этого в процессе работы загрузчика могут быть сформированы и другие переменные, которые понадобятся в других приложениях. Как их сохранить и передать?

Довольно просто. Для этого следует сформировать таблицу и сохранить ее наряду с другими файлами данных (*.QVD).

Variables:
LOAD * INLINE [
Variable_name, Variable_value
StartDate,$(StartDate)
QueryDate,$(QueryDate)
];

store * from Variables into Variables.qvd (qvd);
store * from Variables into Variables.txt (txt, delimiter is ';' );

Для загрузки переменных в другом приложении в скрипте используем следующую схему:

Variables:
LOAD * FROM
$(QVD_Path)Variables.qvd (qvd);

FOR i=0 to noofrows('Variables')-1
LET var_name= peek('Variable_name',i,'Variables');
LET $(var_name) = peek('Variable_value',i,'Variables');
NEXT i

Все просто, основная роль у функции peek(). Как следует из описания:

peek(fieldname [ , row [ , tablename ] ] )

Возвращает содержимое fieldname в записи, указанной с помощью row внутренней таблицы tablename. Данные выбираются из ассоциативной базы данных QlikView.

 

Тип материала: