В процессе работы над аналитическими приложениями 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.