Chargement de données à partir d'une table déjà chargée

Il existe deux façons de charger et de transformer des données à partir d'une table déjà chargée.

  • Resident LOAD - où vous utilisez le prédicat Resident dans une instruction LOAD ultérieure pour charger une nouvelle table.
  • Instruction load antérieure - où vous chargez à partir de l'instruction LOAD ou SELECT antérieure sans préciser de source.

Choix entre l'instruction Resident et l'instruction LOAD antérieure

Dans la plupart des cas, les deux méthodes permettent d'aboutir au même résultat. Une instruction LOAD antérieure constitue généralement l'option plus rapide, mais certains cas nécessitent l'emploi de Resident LOAD :

  • Si vous souhaitez utiliser la clause Order_by pour trier les enregistrements avant le traitement de l'instruction LOAD.
  • Si vous souhaitez utiliser l'un des préfixes suivants, auquel cas l'instruction LOAD antérieure n'est pas prise en charge :
    • Crosstable
    • Join
    • Intervalmatch

Resident LOAD

Vous pouvez utiliser le prédicat Resident dans une instruction LOAD pour charger des données à partir d'une table déjà chargée. Cela s'avère utile lorsque vous souhaitez effectuer des calculs à partir des données chargées au moyen d'une instruction SELECT et que vous ne pouvez pas utiliser les fonctions de Qlik Sense telles que la manipulation des dates ou des valeurs numériques.

Example:  

Dans cet exemple, l'interprétation de la date est effectuée dans l'instruction de chargement Resident, car il est impossible de le faire dans l'instruction Crosstable LOAD initiale.

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;
Conseil: Le prédicat Resident est fréquemment utilisé lorsque vous souhaitez utiliser une table provisoire pour les calculs ou le filtrage. Une fois le but de la table provisoire atteint, vous devez retirer celle-ci au moyen de l'instruction Drop table.

Instruction load antérieure

La fonction d'instruction load antérieure vous permet de charger une table en une seule fois et de définir plusieurs transformations successives. En bref, il s'agit d'une instruction LOAD chargée à partir de l'instruction LOAD ou SELECT située en dessous, sans que vous deviez spécifier un qualificateur source, tel que From ou Resident, comme vous le feriez habituellement. Vous pouvez ainsi empiler autant d'instructions LOAD que vous le souhaitez. L'instruction située au bas de la pile sera évaluée en premier, puis l'instruction au-dessus, jusqu'à l'instruction figurant en haut de la pile.

Vous pouvez parvenir au même résultat à l'aide de Resident, mais dans la plupart des cas, une instruction LOAD antérieure est plus rapide.

L'emploi d'une instruction load antérieure présente l'avantage supplémentaire de conserver un calcul à un emplacement donné et de pouvoir le réutiliser dans les instructions LOAD situées avant.

Remarque: Les préfixes suivants ne peuvent pas être utilisés avec l'instruction LOAD antérieure :Join, Crosstable et Intervalmatch.

Example 1: Transformation des données chargées par une instruction SELECT

Si vous chargez les données d'une base de données à l'aide d'une instruction SELECT, vous ne pouvez pas utiliser les fonctions Qlik Sense pour les interpréter dans l'instruction SELECT. La solution consiste à ajouter une instruction LOAD permettant d'effectuer la transformation des données, au-dessus de l'instruction SELECT.

Dans cet exemple, nous interprétons une date stockée sous la forme d'une chaîne à l'aide de la fonction Qlik Sense Date# dans une instruction LOAD en utilisant l'instruction SELECT antérieure comme source.

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

Example 2: Simplification d'un script via la réutilisation des calculs

Dans cet exemple, un calcul est utilisé plusieurs fois dans le script :

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

L'introduction du calcul dans un premier temps permet de le réutiliser dans la fonction Age, au sein d'une instruction LOAD antérieure :

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

See also: