Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Fala pessoal, beleza?
Acredito que muitos aqui já elaboraram um belíssimo código seguinte todos a maioria das melhores práticas em script/modelagem e precisaram concatenar (Concatenate) duas ou mais tabelas (fatos ou não), porém essa concatenação esta demorando muito tempo para ocorrer. Já passaram por isso?
Esse artigo explicará como realizar a concatenação de tabelas mantendo uma leitura otimizada. Vamos la?
Lembram o que é uma leitura otimizada? Eu falei disso neste post: Melhores Práticas – QVD Optimized.
Em resumo, um QVD mantém a leitura otimizada somente quando realizamos essas ações em sua leitura:
IMPORTANTE: A leitura otimizada é realizada apenas na leitura de um QVD, esqueça o LOAD RESIDENT.
O conceito de concatenar é um termo utilizado para unir duas coisas. Em nosso caso "coisa" significa tabela, ou seja, unir duas tabelas.Para entender melhor como realmente o concatenar funciona, vamos a um exemplo:
Tenho duas tabelas: Vendas e População
Agora vou concatenar as duas tabelas:
Note que basicamente uma tabela foi colocada abaixo da outra. Esse é o resultado quando realizamos uma concatenação das tabelas.
OBSERVAÇÃO: As células em branco ficarão com o valor nulo no qlikview.
Entendemos o resultado de uma concatenação de tabelas, mas como deve ser a sintaxe para fazer isso?Basicamente o comando Concatenate deve ser utilizado antes do LOAD de uma tabela. Vamos usar o exemplo das tabelas de Vendas e População para aprender:
Desta forma, o QlikView vai interpretar que a tabela População vai concatenar os seus dados com a tabela Vendas, pois o script de leitura da tabela Vendas esta logo acima da tabela População. Caso a concatenação que deseja fazer não seja com a tabela acima, você pode simplesmente criar uma referência no Concatenate, dessa forma:
OBSERVAÇÃO: Como sabemos a concatenação resultará em apenas uma tabela, desta forma o nome da tabela resultante será a tabela que receberá os dados da outra, em nosso exemplo a tabela final ficará com o nome de Vendas.Beleza! Agora eu entendi o que é Concatenar, mas como faze-la de forma otimizada?
As formas de Concatenar mantendo a leitura otimiza são:
O AutoConcatenate é quando o QlikView identifica duas ou mais tabelas que possuem, exatamente, as mesmas colunas e faz a concatenação automática delas, ou seja, você não precisa utilizar o comando Concatenate.Veja a imagem para entender melhor
Todas as tabelas possuem as mesmas colunas, são elas: A, B, C, D, E e F. Se carregarmos essas cinco tabelas sem utilizar o Concatenate, o QlikView utilizará o conceito de AutoConcatenate e concatenará as cinco tabelas de maneira otimizada.Veja que o código esta sem o comando Concatenate:
Veja a execução do script mantendo a leitura otimizada:
Resultado das cinco tabelas concatenadas:
PS: Lembrem-se que o nome que a tabela concatenada irá assumir é o nome da primeira tabela que foi carregada, no exemplo: Tabela 1.Yuri, essa eu já sabia! facin!!
Manter os campos existentes e adicionando? Ahn?Esse caso é o mais interessante do comportamento do QlikView, e eu gosto de chama-lo de escadinha, pois tabelas que possuem alguns campos em comum podem sim fazer a concatenação de maneira otimizada.Vamos ao exemplo e depois explico melhor!
PS: Enxergaram a escadinha? rsrs
Vamos entender
Nesta caso o código precisa utilizar o comando Concatenate, veja como ficou:
Veja a execução do script mantendo a leitura otimizada:
Resultado das cinco tabelas concatenadas:
Pô Yuri, mas nem sempre vamos ter tabelas no modelo de escadinha. Ajuda aí!! (rsrsrs)
Vamos para um exemplo mais prático
Imaginem que temos que concatenar duas tabelas, Tabela 1 e Tabela 2, sendo que:
Tabela 1 possui as colunas: A, B, C e D.
Tabela 2 possui as colunas: A, B, D, F e G
Pensando Alto: As duas tabelas possuem as colunas A, B e D, porém a tabela 2 não possui a coluna C e ainda possui as colunas F e G para adicionar... é... já era a escadinha, exemplo deu certo! rsrs
Vamos lá!
Carregar as duas tabelas
Criar a coluna C na tabela 2.
Para criar esse registro de maneira otimizada, podemos criar uma tabela sem registro com um valor nulo sendo atribuído com o nome de C.
Gerar um novo QVD da Tabela 2 agora possuindo as colunas A, B, C, D, F e G.
Carregar o novo QVD da Tabela 2 e Concatenar com a Tabela 1.
Depois de entender como é o comportamento do QlikView na concatenatação de tabelas, o "pulo do gato" foi adicionar a coluna C na Tabela 2 através de um AutoGenerate.
Veja a execução do script mantendo a leitura otimizada:
A aplicação de exemplo esta disponível para download aqui!
Isso pode parecer bobo e talvez desnecessário, mas te garanto que em projetos grandes essas manhas vão ajudar bastante para manter a performance de tempo de recarga das aplicações.
E não poderia deixar de falar que é sempre importante aprendermos sobre melhores práticas e entendermos o comportamento do QlikView para determinadas ações.
É isso pessoal!
Até a próxima semana!!
Muito bom!
Muito Útil, obrigado.