QlikView - Carga Incremental
Conforme o volume de dados na fonte de dados de um documento QlikView aumenta, o tempo necessário para carregar o arquivo também aumenta, o que retarda o processo de análise. Uma abordagem para minimizar esse tempo gasto para carregar os dados é carregar apenas os registros que são novos na origem ou os atualizados. Este conceito de carregar apenas os registros novos ou alterados da fonte para o documento QlikView é chamadoIncremental Load.
Para identificar os novos registros da origem, usamos uma chave única sequencial ou um carimbo de data e hora para cada linha. Esses valores de chave exclusiva ou campo de data e hora devem fluir do arquivo de origem para o documento QlikView.
Vamos considerar o seguinte arquivo de origem contendo detalhes do produto em uma loja de varejo. Salve-o como um arquivo .csv no sistema local, onde pode ser acessado pelo QlikView. Após um período de tempo, mais alguns produtos são adicionados e a descrição de alguns produtos muda.
Product_Id,Product_Line,Product_category,Product_Subcategory
1,Sporting Goods,Outdoor Recreation,Winter Sports & Activities
2,"Food, Beverages & Tobacco",Food Items,Fruits & Vegetables
3,Apparel & Accessories,Clothing,Uniforms
4,Sporting Goods,Athletics,Rugby
5,Health & Beauty,Personal Care
6,Arts & Entertainment,Hobbies & Creative Arts,Musical Instruments
7,Arts & Entertainment,Hobbies & Creative Arts,Orchestra Accessories
8,Arts & Entertainment,Hobbies & Creative Arts,Crafting Materials
9,Hardware,Tool Accessories,Power Tool Batteries
10,Home & Garden,Bathroom Accessories,Bath Caddies
11,"Food, Beverages & Tobacco",Food Items,Frozen Vegetables
12,Home & Garden,Lawn & Garden,Power Equipment
Carregando os dados no QlikView
Carregaremos o arquivo CSV acima usando o editor de script (Control + E), escolhendo a opção Arquivos de Tabela conforme mostrado abaixo. Aqui também salvamos os dados em um arquivo QVD no sistema local. Salve o documento QlikView como um arquivo .qvw.
Verificando os dados carregados.
Podemos verificar os dados carregados no documento QlikView criando um objeto de pasta chamado Table Box. Isso está disponível no menu Layout eNew Sheet Objects submenu.
Criação do layout da tabela
Ao selecionar o Table Boxobjeto de pasta, passamos para a próxima tela, onde é possível selecionar as colunas e suas posições na tabela a ser criada. Escolhemos as seguintes colunas e suas posições e clicamos em Concluir.
Visualizando os Dados Existentes
O gráfico a seguir mostrando os dados conforme definidos na etapa anterior é exibido.
Atualizando os dados de origem
Vamos adicionar mais três registros aos dados de origem. Aqui, os IDs do produto são os números exclusivos, que representam novos registros.
13,Office Supplies,Presentation Supplies,Display
14,Hardware,Tool Accessories,Jigs
15,Baby & Toddler,Diapering,Baby Wipes
Script de carregamento incremental
Agora, escrevemos o script para obter apenas os novos registros da fonte.
// Load the data from the stored qvd.
Stored_Products:
LOAD Product_Id,
Product_Line,
Product_category,
Product_Subcategory
FROM
[E:\Qlikview\data\products.qvd]
(qvd);
//Select the maximum value of Product ID.
Max_Product_ID:
Load max(Product_Id) as MaxId
resident Stored_Products;
//Store the Maximum value of product Id in a variable.
Let MaxId = peek('MaxId',-1);
drop table Stored_Products;
//Pull the rows that are new.
NewProducts:
LOAD Product_Id,Product_Line, Product_category,Product_Subcategory
from [E:\Qlikview\data\product_categories.csv]
(txt, codepage is 1252, embedded labels, delimiter is ',', msq)
where Product_Id > $(MaxId);
//Concatenate the new values with existing qvd.
Concatenate
LOAD Product_Id,Product_Line, Product_category,
Product_Subcategory
FROM [E:\Qlikview\data\products.qvd](qvd);
//Store the values in qvd.
store NewProducts into [E:\Qlikview\data\products.qvd](qvd);
O script acima busca apenas os novos registros, que são carregados e armazenados no arquivo qvd. Como vemos os registros com os novos IDs de produto 13, 14 e 15.