Laden von Daten aus bereits geladenen Tabellen

Es gibt zwei Möglichkeiten zum Laden und Umwandeln von Daten aus einer Tabelle, die bereits geladen wurde.

  • Resident LOAD – hierbei nutzen Sie das Prädikat Resident in einer nachfolgenden LOAD-Anweisung, um eine neue Tabelle zu laden.
  • Vorangehender Load-Befehl – hierbei laden Sie die Daten aus der vorangehenden LOAD- oder SELECT-Anweisung, ohne eine Quelle anzugeben.

Resident oder vorangehende LOAD-Anweisung?

Gewöhnlich kann mit beiden Methoden dasselbe Ergebnis erzielt werden. Ein vorangehender LOAD-Befehl ist in der Regel die schnellere Option, aber in manchen Fällen müssen Sie einen Resident LOAD verwenden:

  • Wenn Sie die Bedingung Order_by zum Sortieren der Datensätze vor der Verarbeitung der LOAD-Anweisung verwenden.
  • Wenn Sie eines der folgenden Präfixe verwenden möchten, für die eine vorangehende LOAD-Anweisung nicht unterstützt wird:
    • Crosstable
    • Join
    • Intervalmatch

Resident LOAD

Sie können das Prädikat Resident in einer LOAD-Anweisung verwenden, um Daten aus einer bereits geladenen Tabelle zu laden. Das ist nützlich, wenn Sie Berechnungen für Daten durchführen möchten, die mit einer SELECT-Anweisung geladen wurden, und Sie die Qlik Sense-Funktionen wie die Verarbeitung von Datum und numerischen Werten nicht nutzen können.

Example:  

In diesem Beispiel erfolgt die Datumsinterpretation imResident Load, da sie im ursprünglichen Crosstable LOAD nicht möglich ist.

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;
Tipp: Resident wird auch häufig dann eingesetzt, wenn eine temporäre Tabelle für Berechnungen oder Filter verwendet werden soll. Nachdem die temporäre Tabelle ihren Zweck erfüllt hat, sollte sie mithilfe der Anweisung Drop table gelöscht werden.

Vorangehender Load-Befehl

Mit dem vorangehenden Load-Befehl können Sie eine Tabelle in einem Arbeitsschritt laden, jedoch trotzdem aufeinanderfolgende Umformungen definieren. Im Grunde ist es eine LOAD-Anweisung, die über den Befehl LOAD oder SELECT unten lädt, ohne einen Qualifizierer für die Quelle wie From oder Resident anzugeben, was normalerweise der Fall ist. Sie können auf diese Art und Weise beliebig viele LOAD-Anweisungen stapeln. Die Anweisung unten wird zuerst ausgewertet, dann die Anweisung darüber usw., bis die oberste Anweisung ausgewertet wurde.

Sie können auch die Anweisung Resident verwenden, in den meisten Fällen ist eine vorangehende LOAD-Anweisung jedoch schneller.

Ein weiterer Vorteil einer vorangehenden Load-Anweisung ist es, dass die Berechnung an einem Ort stattfindet und in den darüberliegenden LOAD-Anweisungen wiederverwendet wird.

Example 1: Umformen von Daten, die von einer SELECT-Anweisung geladen wurden

Wenn Sie Daten aus einer Datenbank mit einer SELECT-Anweisung laden, können Sie keine Qlik Sense-Funktionen nutzen, um die Daten in der SELECT-Anweisung zu interpretieren. Sie müssen eine LOAD-Anweisung dort, wo Sie die Datenumformung durchführen, über der SELECT-Anweisung hinzufügen.

In diesem Beispiel interpretieren wir ein Datum, das als String mit der Date#-Funktion von Qlik Sense in einer LOAD-Anweisung mit der vorherigen SELECT-Anweisung als Quelle gespeichert wurde.

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

Example 2: Vereinfachen Ihres Skripts durch Wiederverwenden von Berechnungen

In diesem Beispiel benutzen wir eine Berechnung mehrmals im Skript:

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

Durch Einführung der Berechnung in einem ersten Schritt können wir sie in der Age-Funktion in einer vorangehenden LOAD-Anweisung erneut verwenden:

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

Einschränkungen für vorangehende Ladevorgänge

  • Die folgenden Präfixe können nicht mit einer vorangehenden LOAD-Anweisung verwendet werden: Join, Crosstable und Intervalmatch.
  • Wenn Sie distinct zum Laden von eindeutigen Datensätzen verwenden, müssen Sie distinct in die erste load-Anweisung platzieren, da distinct nur die Zieltabelle betrifft.

See also: