Gegevens laden uit een eerder geladen tabel

Er zijn twee manieren om gegevens te laden en te transformeren vanuit een tabel die al is geladen.

  • Resident LOAD - waarbij u het predicaat Resident gebruikt in een daaropvolgende LOAD-opdracht om een nieuwe tabel te laden.
  • Voorafgaande load - waarbij u de load-bewerking uitvoert vanuit de voorafgaande LOAD- of SELECT-opdracht zonder een bron op te geven.

Resident of voorafgaande LOAD?

In de meeste gevallen kan hetzelfde resultaat worden bereikt met beide methoden. Een voorafgaande LOAD is meestal de snellere optie, maar in sommige gevallen moet u in plaats daarvan een Resident LOAD gebruiken:

  • Als u de clausule Order_by wilt gebruiken voor het sorteren van de records voordat de LOAD-opdracht wordt verwerkt.
  • Als u een van de volgende prefixen wilt gebruiken, waarbij een voorafgaande LOAD niet wordt ondersteund:
    • Crosstable
    • Join
    • Intervalmatch

Resident LOAD

U kunt het predicaat Resident in een LOAD-opdracht gebruiken om gegevens van een eerder geladen tabel te laden. Dit is handig als u berekeningen wilt uitvoeren met gegevens die geladen zijn met een SELECT-opdracht waarbij u geen Qlik Sense-functies kunt gebruiken, zoals datum of het afhandelen van numerieke waarden.

Example:  

In dit voorbeeld wordt de datuminterpretatie uitgevoerd in de Resident-load, omdat het niet in de initiële Crosstable LOAD kan worden gedaan.

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;
Tip: Resident wordt vaak gebruikt in gevallen waarin gebruikers een tijdelijke tabel willen gebruiken voor berekeningen of filteren. Als u het doel van de tijdelijke tabel hebt bereikt, moet de tabel worden gewist met de Drop table-opdracht.

Voorafgaande load

Met de functie voor voorafgaande load kunt u een tabel in één keer laden, maar toch meerdere, opeenvolgende transformaties definiëren. In wezen is het een LOAD-opdracht die moet worden geladen vanuit de onderstaande LOAD- of SELECT-opdracht, zonder dat een bronkwalificatie zoals From of Resident wordt opgegeven, die normaliter wordt gebruikt. Op deze manier kunt u elk gewenste aantal LOAD-opdrachten stapelen. De opdracht onderaan wordt eerst geëvalueerd, dan de opdracht erboven, enzovoort, totdat de bovenste opdracht is geëvalueerd.

U kunt hetzelfde resultaat verkrijgen door Resident te gebruiken, maar in de meeste gevallen werkt een voorafgaande LOAD sneller.

Een ander voordeel van een voorafgaande load is dat u een berekening op één plaats kunt houden en opnieuw kunt gebruiken in LOAD-opdrachten erboven.

Example 1: Gegevens transformeren die zijn geladen met een SELECT-opdracht

Als u gegevens uit een database laadt met een SELECT-opdracht, kunt u geen Qlik Sense-functies gebruiken om gegevens te interpreteren in de SELECT-opdracht. De oplossing is dat u een LOAD-opdracht moet toevoegen waar u gegevenstransformatie uitvoert, boven de SELECT-opdracht.

In dit voorbeeld interpreteren we een datum die is opgeslagen als een tekenreeks met de Qlik Sense-functie Date# in een LOAD-opdracht. Hierbij gebruiken we de voorafgaande SELECT-opdracht als bron.

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

Example 2: Het script vereenvoudigen door berekeningen opnieuw te gebruiken

In dit voorbeeld gebruiken we een berekening meer dan eens in het script:

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

Als de berekening de eerste keer wordt gebruikt, kan deze opnieuw worden gebruikt in de functie Age in een voorafgaande LOAD:

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

Beperkingen van voorafgaande loads

  • De volgende prefixen kunnen niet worden gebruikt in combinatie met voorafgaande LOAD: Join, Crosstable en Intervalmatch.
  • Als u distinct gebruikt om unieke records te laden, moet u distinct in de eerste laadinstructie plaatsen, aangezien distinct alleen van invloed is op de bestemmingstabel.

See also: