Carregando dados de uma tabela carregada anteriormente

Existem duas maneiras de carregar e transformar dados de uma tabela que já foi carregada.

  • Resident LOAD - em que você usa o predicado Resident em um comando LOAD subsequente ao carregamento de uma nova tabela.
  • Antes do carregamento - no qual você carrega a partir do comando LOAD ou SELECT anterior, sem especificar uma fonte.

Resident ou LOAD precedente?

Na maioria dos casos, o mesmo resultado pode ser obtido usando qualquer um desses métodos. Um LOAD anterior é geralmente a opção mais rápida, mas há alguns casos que, em vez dela, você precisa usar um Resident LOAD:

  • Se você quiser usar a cláusula Order_by para classificar os registros antes de processar a declaração LOAD.
  • Se você quiser usar qualquer um dos seguintes prefixos, casos em que o LOAD precedente não é suportado:
    • Crosstable
    • Join
    • Intervalmatch

Resident LOAD

Você pode usar o predicado Resident em um comando LOAD para carregar dados de uma tabela anteriormente carregada. Isso será útil quando você quiser fazer cálculos nos dados carregados com um comando SELECT que não oferece a opção de utilizar as funções do Qlik Sense, como manipulação do valor de data ou numérico.

Example:  

Nesse exemplo, a interpretação dos dados é realizada no carregamento Resident, uma vez que não pode ser feito no 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;
Dica: Um caso comum para o uso de Resident é quando você deseja usar uma tabela temporária para cálculos ou filtragem. Depois de atingir o objetivo da tabela temporária, ela deve ser descartada usando a declaração Drop table.

Load precedente

O recurso Load precedente permite carregar uma tabela em um único passo, mas ainda define várias transformações sucessivas. Basicamente, é uma instrução LOAD carregada da instrução LOAD ou SELECT abaixo, sem especificar um qualificador de origem, como From ou Resident, como você faria normalmente. É possível empilhar qualquer número de instruções LOAD dessa maneira. A declaração no final será avaliada primeiro, seguida da declaração acima e assim por diante até que a declaração superior seja avaliada.

Você pode conseguir o mesmo resultado usando Resident, mas na maioria dos casos, um LOAD precedente será mais rápido.

Outra vantagem do load precedente é que você pode manter um cálculo em um lugar e reutilizá-lo em comandos LOAD colocados acima.

Example 1: Transformando os dados carregados por uma cálculo SELECT

Se você carregar dados de um banco de dados usando um comando SELECT, não será possível usar as funções do Qlik Sense para interpretar os dados no comando SELECT. A solução é adicionar um comando LOAD, no qual você executará a transformação de dados, acima da declaração SELECT.

Neste exemplo, interpretamos uma data armazenada como um caractere usando a função Date# do Qlik Sense em um comando LOAD, usando o comando SELECT precedente como fonte.

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

Example 2: Simplificando o seu script reutilizando cálculos

Neste exemplo, usamos um cálculo mais de uma vez no script:

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

Ao introduzir o cálculo em uma primeira passagem, podemos reutilizá-lo na função Age em um LOAD precedente:

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

Limitações de cargas precedentes

  • Os seguintes prefixos não podem ser usados em combinação com o LOAD precedente: Join, Crosstable e Intervalmatch.
  • Se você estiver usando distinct para carregar registros exclusivos, precisará colocar distinct na primeira instrução de carga, pois distinctafeta apenas a tabela de destino.

See also: