Предшествующий оператор LOAD

Предшествующий оператор LOAD позволяет загружать таблицу одной операцией, но, тем не менее, определяют несколько последующих преобразований. По существу, именно оператор LOAD выполняет загрузку из нижеуказанных операторов LOAD или SELECT, не указывая префикс источника, такой как From или Resident, который обычно указывается. Таким образом, можно выстроить в столбик любое количество операторов LOAD. Сначала будет оценен самый нижний оператор, затем оператор над ним и так до самого верхнего оператора.

Тот же результат можно достичь с помощью оператора Resident, но в большинстве случаев с предшествующим оператором LOAD это будет быстрее.

Еще одним преимуществом предшествующего оператора load является возможность хранить вычисление в одном месте и использовать его в операторах LOAD, размещенных выше.

Примечание: Следующие префиксы невозможно использовать вместе с предшествующим оператором LOAD:Join, Crosstable и Intervalmatch.

Пример 1: Преобразование данных, загруженных оператором SELECT

В случае загрузки данных из базы данных с помощью оператора SELECT нельзя использовать функции QlikView для интерпретации данных в операторе SELECT. В таком случае необходимо добавить оператор LOAD, в котором выполняется преобразование данных, над оператором SELECT.

В этом примере интерпретируется дата, сохраненная в виде строки, с помощью функции QlikView Date# в операторе LOAD. При этом предшествующий оператор SELECT используется в качестве исходного.

LOAD Date#(OrderDate,’YYYYMMDD’) as OrderDate;
SQL SELECT OrderDate FROM … ;

Пример 2: Упрощение скрипта с помощью многократного использования вычислений

В этом примере вычисление в скрипте используется несколько раз:

LOAD ..., Age( FromDate + IterNo() – 1, BirthDate ) as Age, Date( FromDate + IterNo() – 1 ) as ReferenceDate Resident Policies While IterNo() <= ToDate - FromDate + 1 ;

Использовав это вычисление однажды, его можно использовать повторно в функции Age в предшествующем операторе LOAD:

LOAD ..., ReferenceDate, Age( ReferenceDate, BirthDate ) as Age; LOAD *, Date( FromDate + IterNo() – 1 ) as ReferenceDate Resident Policies While IterNo() <= ToDate - FromDate + 1 ;