Poprzedzające polecenie LOAD

Funkcja poprzedzającego polecenia LOAD umożliwia ładowanie tabeli w jednej operacji przy jednoczesnym określeniu kilku kolejnych przekształceń. Zasadniczo jest to instrukcja LOAD ładowana z instrukcji LOAD lub SELECT bez określania kwalifikatora źródłowego, takiego jak From lub Resident, jak to się zwykle dzieje. W ten sposób można skumulować dowolną liczbę instrukcji LOAD. Instrukcja na dole zostanie oceniona jako pierwsza, następnie zostanie oceniona instrukcja znajdująca się powyżej aż do instrukcji na samej górze.

Ten sam wynik można uzyskać przy użyciu klauzuli Resident, ale w większości przypadków poprzedzające polecenie LOAD będzie działać szybciej.

Inną zaletą poprzedzającego ładowania jest przechowywanie obliczenia w jednym miejscu i możliwość jego ponownego wykorzystania w instrukcjach LOAD umieszczonych wyżej.

Uwaga: Następujących prefiksów nie można używać w poprzedzającej instrukcji LOAD: Join, Crosstable i Intervalmatch.

Example 1: Przekształcanie danych ładowanych przy użyciu instrukcji SELECT

W przypadku ładowania danych z bazy danych przy użyciu instrukcji SELECT nie można użyć funkcji aplikacji QlikView do interpretowania danych w instrukcji SELECT. Rozwiązaniem jest dodanie instrukcji LOAD, gdy wykonuje się przekształcenie danych, powyżej instrukcji SELECT.

W tym przykładzie interpretujemy datę przechowywaną jako ciąg znaków przy użyciu funkcji Date# aplikacji QlikView w instrukcji LOAD, przy użyciu poprzedniej instrukcji SELECT jako źródła.

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

Example 2: Upraszczanie skryptu przez ponowne użycie obliczeń

W tym przykładzie obliczenie jest wykorzystywane w skrypcie więcej niż raz:

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

Wprowadzając obliczenie w pierwszym uruchomieniu, możemy użyć go ponownie w funkcji Age w poprzedzającej funkcji LOAD:

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