Господа, я дико извиняюсь за такой простой вопрос,
но я никак не могу понять функционал этой функции.
Т.е я разобрался в примере из документации.
Но в контексте данного кода не могу разобраться - Что именно она делает? :
tmp1:
LOAD min(Date(Date#(dt,'YYYYMMDD'))) as 'DateStart', max(Date(Date#(dt,'YYYYMMDD'))) as 'DateEnd' Resident GOODS_MOVEMENT;
LET Date_Start = peek('DateStart',0,'tmp1');
LET Date_End = peek('DateEnd',0,'tmp1');
LET vStart = floor(Date_Start);
LET vEnd = floor(Date_End);
LET vNumOfDays = vEnd - vStart + 1;
//DROP Table tmp1;
Привет.
Согласно описанию и своему предназначению peek('DateStart',0,'tmp1') возвращает значение переменной DateStart из первой строки/записи ( 0 обозначает первую запись) таблицы с именем tmp1.
Описание функции (http://help.qlik.com/ru-RU/sense/3.1/Subsystems/Hub/Content/Scripting/InterRecordFunctions/Peek.htm)
Как вы наверное поняли, что контекст в коде - календарный.
Я уже видел примеры использования peek - относительно обоснованные.
Хоть и запутанные, но таблица tmp1 из кода состоит всего из двух значений.
почему нельзя было просто написать?
LOAD ДАТА
Resident GOODS_MOVEMENT //таблица откуда берем данные;
LET Date_Start = min(Date(Date#(dt,'YYYYMMDD'))) ;
Или у данных типы разные?
Ну потому что так не сработает.
min() используется в скрипте в операторе загрузки.
Для присвоения переменной минимального значения из числового ряда используется RangeMin().
Для чтения значений в скрипте из загруженных таблиц используется Peek().
Все на своих местах.
Понял.
Значит просто принять как данность.
спасибо