пятница, 10 февраля 2012 г.

Автоматическая генерация данных

Очень часто на проектах надо определить календарь (без пропусков, поэтому из базы данных взять  скорее всего не получится).
Поэтому приведу небольшой кусочек скрипта и полезную в этом случае функцию:

Dates:
LOAD
 
date(today()-recno(),'DD.MM.YY') as "Date"
 
AUTOGENERATE today() - MakeDate(2011, 1, 1);
 

Разберем синтаксис оператора.
  • Функция date форматирует выражение  (первый аргумент функции) как дату. Формат определяется вторым аргументом функции. В нашем случае 'DD.MM.YY'.
  • Оператор  AUTOGENERATE обеспечивает нужное количество строк в таблице. Стоит обратить внимание, что функция не должна содержать данные из базы данных. В нашем случае количество записей определяется количеством дней между сегодняшней датой  - today() - и некой константой которую Вы введете. Функция MakeDate(2011, 1, 1) выдает дату… год, месяц и число – параметры функции.
Что бы понять, какие же данные выдает оператор AUTOGENERATE

Number:
LOAD recno() as число    
AutoGenerate (30) 

Сколько строк в получившейся таблице?  Посмотреть результаты можно, добавить объект Список на лист.

1 комментарий:

  1. Спасибо! Очень полезная информация. У нас внедрили. До этого я использовал хранимые процедуры и результаты их выводил в ексель. Сразу же нашёл, что результат можно выводить и в qlikview. 1-я проблема - передача параметров в ХП. вот и думаю теперь так:
    Dates:
    LOAD
    date(today()-recno(),'YYYYMMDD') as "НП"
    AUTOGENERATE today() - MakeDate(2011, 1, 1);
    LOAD
    date(today()-recno(),'YYYYMMDD') as "КП"
    AUTOGENERATE today() - MakeDate(2011, 1, 1);
    это будет 2 списка для выбора НП (начало периода) и КП (конец периода). Теперь буду думать, как их передать в ХП грамотно

    ОтветитьУдалить