Utilizando Cargas Parciais

De Qknow
Ir para: navegação, pesquisa

This document is available in English. Click on flag at side.

EnglishFlag.jpg

Introdução

QvdFiles1.PNG

Em um modelo típico de carga de dados a partir do QlikView ou QlikSense, sempre que a operação de recarga é realizada todos os dados são eliminados da memória e substituídos por um processo que recupera todas as informações a partir dos arquivos e tabelas originais. Esta técnica, apesar de eficaz, incorre eventualmente em recuperar dados que já estão carregados em memória e que não sofreram alterações ou modificações em suas bases de origem. Por exemplo, é possível que uma tabela de vendas seja carregada diariamente com todas as operações realizadas no dia. Em um modelo tradicional de recarga, todos os registros carregados até o dia de execução do script são liberados da memória e recarregados a partir da tabela de Vendas, independente de quantos dias já haviam sido carregados anteriormente.

Obviamente é possível utilizar técnicas de carga incremental para obter apenas os dados que são diferentes em relação aqueles previamente lidos em operações anteriores, mas mesmo este processo implica em reler todos os dados da memória para um arquivo persistido em formato .QVD para então reposicioná-los de volta a memória. Ou seja, mesmo na carga incremental os dados são descarregados e recarregados, ainda que sem a necessidade de ler todos os registros das bases originais.

Em outras ocasiões as atualizações dos dados nas bases possuem periodicidades diferentes, tal como diariamente, alguns semanais e talvez outros mensais. Ou seja, tabelas que são obtidas com periodicidade de modificações diferenciadas. No modelo tradicional do QlikView/Sense todos os dados serão relidos na menor periodicidade dos dados modificados, de maneira que todas as tabelas serão lidas diariamente para manter o painel atualizado, independente de terem ou não modificações.

Este artigo aborda o modelo de recarga onde é possível definir se tabelas previamente carregadas precisam de novas leituras. O uso de instruções REPLACE e REPLACE ONLY são abordadas, permitindo que cada operação possa ser definida de maneira diferenciada. Adicionalmente, é possível instruir o QlikView Desktop a realizar a recarga parcial bem como configurar o QlikView Publisher Server para respeitar as instruções mencionadas. Para maiores informações sobre o Publisher Server e as versões QlikView disponíveis, consulte o artigo sobre a plataforma de servidores QlikView. Note que carga parcial não significa carga incremental, esta última definida pela capacidade de buscar apenas a diferença entre os dados já obtidos e novos.

Carga de Dados

A instrução padrão de carga de dados no QlikView se dá pelo comando LOAD que faz a leitura de tabelas armazenadas em bases de dados ou arquivos persistidos em disco, além de conexões com dados via Web Services ou HTML. Sempre que o script é executado, o comando LOAD faz a leitura de TODOS os registros contidos na tabela/arquivo e descarta quaisquer registros previamente carregados em memória. Os exemplos a seguir são demonstrações do uso do comando LOAD em diferentes situações.

// Carga de Dados de um Arquivo .QVD 
LOAD * FROM [$(vCaminhoOrigem)\Objeto_Fiscalizado.QVD] (qvd);

// Carga de Dados de um Arquivo Excel 
LOAD * FROM [Ouvidoria_v3.0.xlsx] (ooxml, embedded labels, table is FATO);

// Carga de Tabela de Banco de Dados 
LOAD * ;
SQL SELECT * FROM PROCESSOS_PRIM;

Nas instruções acima, como mencionado, todos os dados serão descarregados da memória e recarregados a partir das suas fontes originais. Obviamente, se o script é executado pela primeira vez não há nada para descarregar, logo os dados serão carregados para as respectivas tabelas. Assim, se uma tabela possui milhares ou milhões de registros, todos estes serão lidos e carregados, independente de se tratar da primeira carga ou de cargas recorrentes. Este comportamento é necessário e comum pois os dados podem ter sido atualizados em suas tabelas/arquivos originais, alterando os indicadores que são baseados nestes registros. Porém, a periodicidade de atualização de algumas tabelas/arquivos pode significar recuperar dados que não sofreram alterações, onerando o procedimento de recarga.

Dependendo da periodicidade de atualização dos registros nas respectivas fontes de dados, é possível deparar-se com situações onde certas tabelas/arquivos são atualizados frequentemente enquanto outros são modificados em bases temporais mais espaçadas. Por isso, recarregar todos os dados nem sempre se torna o caminho mais rápido e eficiente, mesmo porque algumas tabelas/arquivos sequer tenham sofrido alterações ao longo do tempo. Por exemplo, tabelas de dimensões como Estado, Cidade e País provavelmente não terão atualizações frequentes. Não é todo dia que novas cidades ou países são definidos. Este é um simples exemplo de que nem todos os dados são atualizados com frequencia.

O propósito deste artigo é apresentar o funcionamento da carga PARCIAL, que não deve ser confundida com a carga INCREMENTAL. No incremento, as tabelas/arquivos são lidos sempre que modificações, inserções ou exclusões ocorrem. O funcionamento da carga incremental pode ser conferido neste artigo. Na carca PARCIAL, nenhuma tabela de periodicidade de atualização maior é lida das bases/arquivos originais. Ou seja, nenhuma tentativa de descarga dos dados em memória é feita nas operações parciais. Assim, o tempo de reprocessamento é excepcionalmente menor, já que nem todas as tabelas serão relidas a todo momento.

A carga parcial (PARTIAL RELOAD) é definida pela instrução REPLACE como prefixo da instrução LOAD. Isso significa que as tabelas terão comportamentos diferentes quando o tipo de carga for completa ou parcial. A sintaxe elementar da instrução LOAD com o prefixo REPLACE é:

REPLACE LOAD * ;
REPLACE ONLY LOAD * ;


Testando a Carga Parcial

Para colocar em prática a carga parcial é preciso definir o comando REPLACE para as instruções que devem atuar de maneira diferente entre a carga completa e a carga parcial. Para realizar o teste em questão, abra um novo projeto em QlikView e em seguida o editor de scripts (CTRL + E). Cole no script as instruções a seguir que serão úteis para os testes de carga parcial.

Tab1:
LOAD RecNo() As ID, Now() As RecordAge AutoGenerate 1000;

Tab2:
REPLACE LOAD RecNo() As ID, Now() As NewAge AutoGenerate 1000; 

Tab3: 
REPLACE ONLY LOAD RecNo() As ID, Now() As LastAge AutoGenerate 1000;

Para execução de uma carga normal (FULL RELOAD) no QlikView, é comum o acionamento do botão Recarregar no canto superior esquerdo da janela do editor de scripts ou pelo acionamento das teclas de atalho CTRL + R. Este é o procedimento padrão e amplamente conhecido. Mas há também o acionamento da carga parcial no QlikView Desktop a partir do menu Arquivo da janela principal (fora do editor de scripts), acessando o comando Recarga Parcial, ou pressionando as teclas de atalho CTRL + SHIFT + R.

Nota: O atalho CTRL + SHIFT + R a partir do editor de scripts não executa a carga parcial.

Em uma recarga completa somente Tab1 e Tab2 serão recarregadas, enquanto em uma carga parcial, somente Tab2 e Tab3 serão recarregadas. Porém, nesta ocasião, todas as tabelas existirão na memória, uma vez que o comando LOAD de Tab1 é ignorado e não realiza uma operação de DROP (considerando que Tab1 já exista previamente carregada). As ações correspondentes a carga parcial e carga completa podem ser resumidas da seguinte forma:

  • Sempre que a carga completa (CTRL + R) é executada, todas as tabelas são recarregadas, exceto aquelas com REPLACE ONLY.
  • Quando a carga parcial é executada (CTRL + SHIFT + R), somente as tabelas com a instrução REPLACE são executadas, incluindo REPLACE ONLY.
  • Se a carga parcial é executada com uma instrução REPLACE ONLY, a recarga da tabela ocorre.


A seguinte tabela resume as operações de carga (completa/full ou parcial/partial) em relação as instruções LOAD, REPLACE LOAD e REPLACE ONLY LOAD:

PartialReload2.PNG


Diante dos cenários propostos, realize os seguintes testes:

1. Retorne a janela principal do QlikView Desktop e execute a carga completa pressionando as teclas CTRL + R. Note que o QlikView carregará as tabelas Tab1 e Tab2, mas não carregará a tabela Tab3. O resultado pode ser conferido no visualizador de tabelas (CTRL + T) caso tenha sido a primeira operação de carga.

PartialReload3.PNG

2. Ainda na janela principal do QlikView Desktop execute a carga parcial pressionando as teclas CTRL + SHIFT + R, ou a partir do menu Arquivo escolha Recarga Parcial. Note que apenas as tabelas Tab2 e Tab3 serão recarregadas em resposta ao uso do comando REPLACE e REPLACE ONLY.

PartialReload4.PNG


Note que o uso da instrução REPLACE permite diferentes comportamentos de recarga dos dados a partir do processo completo ou parcial. Durante as etapas de desenvolvimento de painéis com grandes volumes de registros e tabelas, esta técnica ajuda a reduzir o tempo de processamento sempre que um campo é modificado, uma tabela é incluída, excluída ou mesmo para fins de testes do script sem que seja necessário passar por todas as operações de LOAD.

Carga Parcial Agendada

Em nível de servidor é possível configurar as cargas para o modelo completo (FULL) ou parcial (PARTIAL). Conforme mencionado neste artigo, o modelo parcial levará em consideração o uso do comando REPLACE como prefixo do comando LOAD. Portanto, em uma operação real é provável que o mesmo extrator possua duas ou mais cargas para realizar reloads periódicos baseando-se nas periodicidades de atualização dos dados. Para que a carga parcial possa ser configurada em nível de servidor é necessário o uso do Publisher Server, licenciado separadamente.

Os processos de agendamento de carga de dados a partir das tabelas/arquivos para atualização dos painéis acessíveis via Access Point (HTML 5.0) são realizados utilizando o QMC (QlikView Management Console) no QlikView 11 ou 12. Para acesso a este gerenciador é preciso que o usuário faça parte do grupo do sistema operacional denominado QlikView Administrators. Mesmo um administrador do sistema operacional Windows não terá acesso ao QMC se não pertencer ao mencionado grupo do QlikView. Uma vez autenticado, é preciso navegar nas opções do QMC para chegar a configuração da carga parcial, por meio dos seguintes atalhos.

Documents ► Source Documents ► ReloadEngine
PartialReload5.PNG

Dentro da estrutura do Publisher Server é possível visualizar os agendamentos existentes ou criar novos processos de recargas periódicas. Na figura ao lado é possível constatar a lista de pastas virtuais disponíveis onde painéis estão organizados. Com um clique no sinal de (+) que precede o nome do painel é possível visualizar as cargas que estão configuradas. No exemplo, apenas uma operação está agendada para ocorrer em periodicidades definidas. Ao clicar no agendamento do painel qknow_secionaccess_pub_v1.0.qvw a parte direita da janela do QMC é atualizada com as informações da tarefa.

PartialReload6.PNG

Múltiplas guias são exibidas (conforme imagem acima) e uma delas apresenta uma série de parâmetros para configuração da tarefa. Mas é na guia Reload que a opção de carga parcial pode ser habilitada para a tarefa em questão, bastando selecionar um check-box com a descrição Partial Reload

PartialReload7.PNG

Ao habilitar esta opção as instruções de carga no script do arquivo .QVW levarão em consideração o uso (ou não) das instruções REPLACE e REPLACE ONLY, tal como descrito na seção anterior. Múltiplas tarefas de cargas podem e devem ser criadas de acordo com as necessidades de cada tabela/arquivo.

Nota: Esta opção só estará disponível com o QlikView Publisher Server instalado e licenciado.



Assuntos Relacionados



Envelope01.jpg
Procurando Algo? Fale Conosco!



Voltar | Página Principal