Cargar datos de una tabla previamente cargada

Hay dos formas de cargar y transformar datos desde una tabla previamente cargada.

  • Resident LOAD: usamos el predicado Resident en una sentencia LOAD subsiguiente para cargar una nueva tabla.
  • Load precedente: se carga desde la sentencia LOAD o SELECT precedente sin especificar una fuente.

¿Resident o LOAD precedente ?

En la mayoría de los casos se puede lograr el mismo resultado usando cualquier método. Un LOAD precedente es generalmente la opción más rápida, pero hay algunos casos en los que necesita usar un Resident LOAD en su lugar:

  • Si desea utilizar la cláusula Order_by para ordenar los registros antes de procesar la sentencia LOAD.
  • Si desea utilizar cualquiera de los siguientes prefijos, para los casos en que no se admite LOAD precedente:
    • Crosstable
    • Join
    • Intervalmatch

Resident LOAD

Puede utilizar el predicado Resident en una sentencia LOAD para cargar datos desde una tabla previamente cargada. Esto es útil cuando desea realizar cálculos en los datos cargados con una sentencia SELECT donde no tiene la opción de usar funciones Qlik Sense, como la fecha o el manejo de valores numéricos.

Example:  

En este ejemplo, la interpretación de la fecha se realiza en el Resident load, ya que no se puede hacer en el Crosstable LOAD inicial.

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;
Sugerencia: Un caso habitual de uso de Resident es cuando desea utilizar una tabla temporal para cálculos o filtrado. Una vez que haya alcanzado el propósito de la tabla temporal, debe eliminarse utilizando la sentencia Drop table.

Load precedente

La función load precedente permite cargar una tabla en una sola pasada mientras se conserva la posibilidad de definir varias transformaciones sucesivas. Básicamente, es una sentencia LOAD que carga desde la sentencia LOAD o SELECT inferior, sin especificar un cualificador de origen como From o Resident, como se haría normalmente. Puede apilar cualquier número de sentencias LOAD de esta manera. En primer lugar se evaluará la sentencia final, luego la sentencia superior, etc., hasta que se haya evaluado la sentencia del principio.

Puede lograr el mismo resultado usando Resident, pero en la mayoría de los casos un LOAD precedente será más rápido.

Otra ventaja del load precedente es que puede mantener un cálculo en un lugar y reutilizarlo en las sentencias LOAD situadas encima.

Example 1: Transformar los datos cargados por una sentencia SELECT

Si carga datos de una base de datos utilizando una sentencia SELECT, no puede usar funciones Qlik Sense para interpretar los datos en la sentencia SELECT. La solución es añadir una sentencia LOAD, donde realice la transformación de datos, encima de la sentencia SELECT.

En este ejemplo, interpretamos una fecha almacenada como una cadena utilizando la función de Qlik Sense Date# en una sentencia LOAD, utilizando la sentencia SELECT anterior como fuente.

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

Example 2: Simplificar el script mediante la reutilización de cálculos

En este ejemplo se usa un cálculo más de una vez en el script:

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

Introduciendo el cálculo en un primer paso, podemos reutilizarlo en la función Age en un LOAD precedente:

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

Limitaciones de las cargas anteriores

  • Los siguientes prefijos no pueden usarse junto con un LOAD precedente: Join, Crosstable y Intervalmatch.
  • Si está usando distinct para cargar registros únicos, necesita colocar distinct en la primera sentencia de carga, puesto que distinct solo afecta a la tabla de destino.

See also: