先行する LOAD

先行するLOAD機能を使用すると、1 つのパスでテーブルをロードし、複数の連続した変換を定義できます。基本的に、これは以下の LOADまたは SELECT ステートメントからロードする LOAD ステートメントのことで、通常指定する FromResident などのソース修飾子を指定せずに実行します。この方法では、LOAD ステートメントをいくつでもスタックできます。ステートメントの評価は、最下部のステートメントから順番に、上に向かって実行されます。

Residentを使用しても同じ結果を得られますが、ほとんどの場合、先行する LOAD の方が時間がかかりません。

先行する Load のもう 1 つの利点は、計算を 1 か所に維持して、その上に配置された LOADステートメントで再利用できるという点にあります。

注: JoinCrosstableIntervalmatch のプレフィックスは、先行する LOAD とは併用できません。

例1: SELECTステートメントでロードされたデータの変換

SELECTステートメントを使用してデータベースからデータをロードすると、QlikView 関数を使用してSELECT ステートメントでデータを解釈することができなくなります。この問題を解決するには、データの変換を行う場所、SELECTステートメントの上に LOAD ステートメントを追加します。

この例では、前の SELECTステートメントをソースとして使用し、QlikView の関数 Date#LOAD ステートメントで使用することで、保存された日付を文字列として解釈しています。

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 ;

最初のパスで計算を導入すると、先行する LOADで Age 関数を再利用できます。

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