Загрузка данных из ранее загруженной таблицы

Существует два способа загрузки и преобразования данных из ранее загруженной таблицы.

  • Resident LOAD — где для загрузки новой таблицы используется логическое условие Resident с последующим оператором LOAD.
  • Предшествующий оператор load — где загрузка выполняется из предшествующего оператора LOAD или SELECT без указания источника.

Элемент Resident или предшествующий элемент LOAD?

В большинстве случаев с помощью обоих методов можно добиться одного и того же результата. Использование предшествующего оператора LOAD является более быстрым методом, но в некоторых случаях предпочтительнее использовать Resident LOAD:

  • В случае необходимости использования предложения Order_by для сортировки записей перед обработкой оператора LOAD.
  • В случае необходимости использования одного из следующих префиксов предшествующий элемент LOAD не поддерживается:
    • Crosstable
    • Join
    • Intervalmatch

Resident LOAD

Можно использовать логическое условие Resident в операторе LOAD, чтобы загрузить данные из ранее загруженной таблицы. Это удобно, когда необходимо выполнить вычисления с данными, загруженными с помощью оператора SELECT, когда нет возможности использовать функции Qlik Sense, такие как обработка даты или числовых значений.

Example:  

В этом примере интерпретация даты выполняется в загрузке Resident, поскольку ее выполнение в исходной загрузке Crosstable LOAD невозможно.

PreBudget: Crosstable (Month, Amount, 1) LOAD Account, Jan, Feb, Mar, … From Budget; Budget: Noconcatenate LOAD Account, Month(Date#(Month,’MMM’)) as Month, Amount Resident PreBudget; Drop Table PreBudget;
Подсказка: Часто элемент Resident используется, при необходимости временной таблицы для выполнения вычислений или фильтра. Если временная таблица больше не нужна, избавьтесь от нее с помощью оператора Drop table.

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

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

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

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

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

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

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

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

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

Example 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 ;

See also: