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 einem nachfolgenden LOAD-Befehl, um eine neue Tabelle zu laden.
  • Vorangehender Load-Befehl – hierbei laden Sie die Daten aus dem vorangehenden LOAD- oder SELECT-Befehl, ohne eine Quelle anzugeben.

Resident oder vorangehender LOAD-Befehl?

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 des LOAD-Befehls verwenden.
  • Wenn Sie eines der folgenden Präfixe verwenden möchten, für die ein vorangehender LOAD-Befehl nicht unterstützt wird:
    • Crosstable
    • Join
    • Intervalmatch

Resident LOAD

Sie können das Prädikat Resident in einem LOAD-Befehl 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 einem SELECT-Befehl 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 des Befehls 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 ein LOAD-Befehl, der ü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-Befehle stapeln. Der Befehl unten wird zuerst ausgewertet, dann der Befehl darüber usw., bis der oberste Befehl ausgewertet wurde.

Sie können auch den Befehl Resident verwenden, in den meisten Fällen ist ein vorangehender LOAD-Befehl jedoch schneller.

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

Hinweis: Die folgenden Präfixe können nicht mit einem vorangehendenLOAD-Befehl verwendet werden:Join, Crosstable und Intervalmatch.

Example 1: Umformen von Daten, die von einem SELECT-Befehl geladen wurden

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

In diesem Beispiel interpretieren wir ein Datum, das als String mit der Date#-Funktion von Qlik Sense in einem LOAD-Befehl mit dem vorherigen SELECT-Befehl 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 einem vorangehenden LOAD-Befehl erneut verwenden:

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

See also: