Ładowanie danych z wcześniej załadowanej tabeli

Istnieją dwa sposoby ładowania i przekształcania danych z tabeli, która została już załadowana.

  • Resident LOAD — w tym przypadku w celu załadowania nowej tabeli używany jest predykat Resident w kolejnej instrukcji LOAD.
  • Poprzedzające polecenie LOAD — w tym przypadku ładowanie odbywa się z poprzedzającej instrukcji LOAD lub SELECT bez określania źródła.

Resident czy poprzedzające LOAD?

W większości przypadków można uzyskać te same wyniki przy użyciu dowolnej z tych metod. Poprzedzające polecenie LOAD jest zwykle szybszą opcją, ale istnieją przypadki, gdy konieczne jest użycie polecenia Resident LOAD:

  • Jeśli klauzula Order_by będzie używana do sortowania rekordów przed przetworzeniem instrukcji LOAD.
  • Aby użyć dowolnego z poniższych prefiksów, kiedy to poprzedzająca instrukcja LOAD nie jest obsługiwana.
    • Crosstable
    • Join
    • Intervalmatch

Resident LOAD

Aby załadować dane z wcześniej załadowanej tabeli, można użyć predykatu Resident w instrukcji LOAD. Jest to przydatne, gdy trzeba wykonać obliczenia na danych załadowanych przy użyciu instrukcji SELECT, kiedy nie ma możliwości skorzystania z funkcji Qlik Sense, takich jak przetwarzanie dat lub wartości liczbowych.

Example:  

W tym przykładzie interpretacja danych jest przeprowadzana w ładowaniu Resident, ponieważ nie można jej wykonać w początkowym ładowaniu 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;
Porada: Predykatu Resident często używa się w sytuacji korzystania z tabeli tymczasowej podczas obliczeń i filtrowania. Po realizacji celu związanego z tabelą tymczasową należy ją usunąć przy użyciu instrukcji Drop table.

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.

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żywać funkcji aplikacji Qlik Sense 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 Qlik Sense 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 ;

Ograniczenia dotyczące poprzedzających poleceń Load

  • Następujących prefiksów nie można używać w poprzedzającej instrukcji LOAD: Join, Crosstable i Intervalmatch.
  • Jeśli używane jest polecenie distinct w celu ładowania unikatowych rekordów, wówczas polecenie distinct należy umieścić w pierwszej instrukcji Load, ponieważ distinct wpływa tylko na tabelę docelową.

See also: