Caricamento di dati da una tabella caricata in precedenza

Sono disponibili due metodi per il caricamento e la trasformazione dei dati da una tabella già caricata.

  • Resident LOAD - in cui si utilizza il predicato Resident in un'istruzione LOAD successiva per caricare una nuova tabella.
  • Preceding load - in cui si esegue il caricamento dall'istruzione LOAD o SELECT precedente senza specificare una sorgente.

Resident o Preceding LOAD?

In alcuni casi, è possibile ottenere lo stesso risultato utilizzando entrambi i metodi. Un'istruzione Preceding LOAD è generalmente l'opzione più veloce, ma vi sono casi in cui occorre utilizzare Resident LOAD:

  • Se si desidera utilizzare la clausola Order_by per ordinare i record prima di elaborare l'istruzione LOAD.
  • Se si desidera utilizzare uno dei seguenti prefissi, nel cui caso l'istruzione preceding LOAD non è supportata:
    • Crosstable
    • Join
    • Intervalmatch

Resident LOAD

È possibile utilizzare il predicato Resident in un'istruzione LOAD per caricare i dati da una tabella caricata in precedenza. Questo risulta utile quando si desidera eseguire calcoli sui dati caricati con un'istruzione SELECT in cui non è possibile utilizzare le funzioni di Qlik Sense, come la gestione di valori numerici o di data.

Example:  

In questo esempio l'interpretazione della data viene eseguita nel caricamento di Resident, in quanto non può essere effettuata nella sezione Crosstable LOAD iniziale.

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;
Suggerimento: Un motivo comune per l'utilizzo di Resident è rappresentato da situazioni in cui si desidera utilizzare una tabella temporanea per i calcoli o l'applicazione di filtri. Una volta raggiunto lo scopo della tabella temporanea, questa deve essere eliminata mediante l'istruzione Drop table.

Preceding load

La funzione preceding load consente di caricare una tabella in un solo passaggio, tuttavia definisce diverse trasformazioni successive. Fondamentalmente si tratta di un'istruzione LOAD che viene caricata dall'istruzione LOAD o SELECT sottostante, senza la specifica di un qualificatore di sorgente quale From o Resident come si farebbe normalmente. In questo modo è possibile impilare qualsiasi numero di istruzioni LOAD. L'istruzione in fondo viene valutata per prima, quindi viene valutata l'espressione sopra e così via fino ad arrivare alla valutazione dell'istruzione nella parte superiore.

Lo stesso risultato può essere ottenuto mediante l'istruzione Resident, tuttavia, nella maggior parte dei casi l'utilizzo di un'istruzione preceding LOAD è l'alternativa più rapida.

Un altro vantaggio offerto dall'istruzione preceding load consiste nella possibilità di mantenere il calcolo in un punto e di poterlo riutilizzare nelle istruzioni LOAD collocate sopra.

Nota: I seguenti prefissi non possono essere utilizzati insieme all'istruzione preceding LOAD:Join, Crosstable Intervalmatch.

Example 1: Trasformazione dei dati caricati mediante un'istruzione SELECT

Se si caricano i dati da un database mediante un'istruzione SELECT, non è possibile utilizzare le funzioni di Qlik Sense per interpretare i dati in tale istruzione SELECT. La soluzione consiste nell'aggiungere un'istruzione LOAD, in cui viene eseguita la trasformazione dei dati, sopra l'istruzione SELECT.

In questo esempio i dati vengono interpretati come stringa mediante la funzione di Qlik Sense Date# in un'istruzione LOAD utilizzando l'istruzioneSELECT precedente come sorgente.

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

Example 2: Semplificazione di uno script mediante il riutilizzo dei calcoli

In questo esempio i calcoli vengono riutilizzati più volte nello script:

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

Mediante l'introduzione del calcolo nel primo passaggio, è possibile riutilizzarlo nella funzione Age in un'istruzione preceding LOAD:

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

See also: