Trabalhando com o QlikView



Baixar 11.43 Mb.
Pdf preview
Página23/117
Encontro09.04.2020
Tamanho11.43 Mb.
1   ...   19   20   21   22   23   24   25   26   ...   117

Máximo de

Símbolos

nos Gráficos

A configuração Max Symbols in Charts é usada para definir o número de dados a serem

exibidos nos gráficos do QlikView. Como uma consulta Direct Discovery pode retornar

muitos valores diferentes, é recomendado revisar essa configuração para permitir que o

Trabalhando com o QlikView - QlikView 12, November 2017

250


8   Introdução ao carregamento de dados

QlikView exiba o número desejado de dados nos gráficos.



Configuração

de Tempo de

Espera QVS

no Arquivo

Config.xml

Quando o Direct Discovery é usado para consultar um sistema externo separado do

QlikView Server, a configuração de tempo limite do Servidor no arquivo config.xml deve

ser ajustada para dar tempo para que o QlikView obtenha de volta os resultados da

consulta. Falha ao permitir tempo suficiente para concluir os resultados das consultas

em um erro "Conexão com o servidor perdida" durante o uso do cliente Ajax.

A configuração padrão é de 60 segundos. A configuração pode precisar ser aumentada

para o tempo máximo de consulta. O arquivo config.xml está localizado no diretório

C:\ProgramData\QlikTech\WebServer

. A tag XML é .

Observe que, durante as atualizações, a configuração será substituída pelo valor

padrão.


QlikView Publisher

O QlikView Publisher requer acesso de leitura às tabelas do banco de dados utilizadas por Discovery Direct.

Quando os aplicativos do QlikView que empregam o Publisher usarem Direct Discovery, certifique-se de que

a conta de serviço executando o Publisher tenha o acesso de leitura necessário. Se isso não acontecer, o

Publisher não conseguirá ler a tabela de Direct Discovery durante as atualizações de dados programadas.

8.16 Práticas recomendadas para a modelagem de dados

Esta seção descreve várias maneiras diferentes de carregar seus dados no documento do QlikView,

dependendo de como os dados estão estruturados e de qual modelo de dados você deseja alcançar.

Em geral, a maneira como os dados são carregados no documento pode ser explicada pelo processo Extrair,

Transformar e Carregar:

1. Extrair

O primeiro passo é extrair os dados do sistema da fonte de dados. No script, você pode usar os

comandos

SELECT ou LOAD para definir isso. As diferenças entre esses comandos são:

l

SELECT é usado para selecionar dados de uma fonte de dados ODBC ou provedor OLE DB.

O comando

SELECT SQL é avaliado pelo provedor de dados, e não pelo QlikView.

l

LOAD é usado para carregar dados de um arquivo, de dados definidos no script, de uma

tabela carregada anteriormente, de uma página da web, do resultado de um comando

SELECT subsequente ou gerando dados automaticamente

2. Transformar

A fase de transformação envolve a manipulação dos dados utilizando funções de script e regras para

derivar a estrutura do modelo de dados desejado. As operações típicas são:

l

Cálculo de novos valores



l

Tradução de valores codificados

l

Renomeando campos



l

União de tabelas

l

Agregação de valores



Trabalhando com o QlikView - QlikView 12, November 2017

251


8   Introdução ao carregamento de dados

l

Criação de tabela dinâmica



l

Validação de dados

3. Carregar

Na etapa final, execute o script para carregar o modelo de dados definido no documento.

Seu objetivo deve ser o de criar um modelo de dados que permita uma manipulação eficiente dos dados no

QlikView. Geralmente, isso significa que você deve apontar para um esquema de estrela ou de floco de neve

razoavelmente normalizado, sem referências circulares, isto é, um modelo no qual cada entidade seja

mantida em uma tabela separada. Em outras palavras, um modelo de dados típico teria a seguinte

aparência:

l

uma tabela central de fatos que contém as chaves para as dimensões e os números usados para



calcular medidas (como o número de unidades, o volume das vendas e os valores do orçamento).

l

tabelas adjacentes contendo as dimensões com todos os seus atributos (como produtos, clientes,



categorias, calendário e fornecedores).

Em muitos casos é possível resolver uma tarefa (por exemplo, agregações) criando um

modelo de dados mais rico no script de carregamento ou executando as agregações nas

expressões do gráfico. Como regra geral, o desempenho será melhor se você mantiver as

transformações de dados no script de carregamento.

Recomenda-se esboçar seu modelo de dados no papel. Isso ajuda a fornecer uma estrutura de

quais dados extrair e quais transformações executar.

Cada tabela do modelo de dados geralmente corresponde a um comando



SELECT ou LOAD. As diferenças

entre esses comandos são:

l

SELECT é usado para selecionar dados de uma fonte de dados ODBC ou provedor OLE DB. O

comando


SELECT SQL é avaliado pelo provedor de dados, e não pelo QlikView.

l

LOAD é usado para carregar dados de um arquivo, de dados definidos no script, de uma tabela

carregada anteriormente, de uma página da web, do resultado de um comando

SELECT

subsequente ou gerando dados automaticamente

Usando arquivos QVD para carregamento incremental

A carga incremental é uma tarefa muito comum em relação às bases de dados. É a carga somente de

registros novos ou alterados da base de dados. Todos os outros dados já devem estar disponíveis, de uma

forma ou de outra. Com



Arquivos QVD (página 232) é possível executar carga incremental na maioria dos

casos.


O processo básico está descrito abaixo:

1. Carregue os

novos dados

da tabela da Base de Dados (um processo lento, carregando um número

limitado de registros).

Trabalhando com o QlikView - QlikView 12, November 2017

252


8   Introdução ao carregamento de dados

2. Carregue os dados antigos do arquivo QVD (um processo bem mais rápido, carregando muitos

registros).

3. Criar um novo arquivo QVD.

4. Repetir o procedimento para cada tabela carregada.

A complexidade da solução depende da natureza da base de dados de origem, mas os seguintes casos

básicos podem ser identificados:

1)

Caso 1: Anexar Apenas (página 253) (normalmente arquivos de log

2)

Caso 2: Inserir Apenas (Sem Atualizar nem Excluir) (página 254)

3)

Caso 3: Inserir e Atualizar (Sem Excluir) (página 255)

4)

Caso 4: Inserir, Atualizar e Excluir (página 256)

Veja a seguir, as soluções descritas para cada um desses casos. A leitura dos arquivos QVD pode ser feita

no modo otimizado ou no modo padrão. (O método usado é automaticamente selecionado pela linguagem

de script do QlikView, dependendo da complexidade da operação.) O modo otimizado é (bem

aproximadamente) 10 vezes mais rápido do que o modo padrão ou 100 vezes mais rápido do que carregar a

base de dados do modo comum.



Caso 1: Anexar Apenas

O caso mais simples é aquele dos arquivos de log; arquivos nos quais os registros só são acrescentados e

jamais excluídos. As seguintes condições se aplicam:

l

O banco de dados deve ser um arquivo de log (ou algum outro arquivo no qual os registros são



acrescentados e não inseridos ou excluídos) contido em um arquivo de texto (sem ODBC/OLE DB).

Trabalhando com o QlikView - QlikView 12, November 2017

253


8   Introdução ao carregamento de dados

l

O QlikView controla o número de registros lidos anteriormente e carrega apenas registros incluídos no



final do arquivo.

Exemplo:

Buffer (Incremental) Load * From LogFile.txt (ansi, txt, delimiter is '\t', embedded labels);



Caso 2: Inserir Apenas (Sem Atualizar nem Excluir)

Se os dados residirem em uma base de dados, não em um arquivo de log simples, a solução do caso 1 não

funcionará. No entanto, o problema poderá ser solucionado com um mínimo de trabalho adicional. As

seguintes condições se aplicam:

l

A fonte de dados pode ser qualquer base de dados.



l

O QlikView carrega os registros inseridos na base de dados após a execução do último script.

l

É necessário um campo ModificationDate (ou semelhante) para que o QlikView reconheça os



registros novos.

Trabalhando com o QlikView - QlikView 12, November 2017

254


8   Introdução ao carregamento de dados

Exemplo:

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#

AND ModificationTime < #$(BeginningThisExecTime)#;

Concatenate LOAD PrimaryKey, X, Y FROM File.QVD (qvd);

STORE QV_Table INTO File.QVD;

(Os sinais de sustenido na cláusula SQL WHERE definem o início e o final de uma data. Verifique o manual

do banco de dados para obter a sintaxe de data correta do banco de dados.)

Caso 3: Inserir e Atualizar (Sem Excluir)

O caso seguinte se aplica quando os dados nos registros carregados anteriormente são alterados entre as

execuções de script. As seguintes condições se aplicam:

l

A fonte de dados pode ser qualquer base de dados.



l

O QlikView carrega os registros inseridos ou atualizados na base de dados após a execução do último

script

l

É necessário um campo ModificationDate (ou semelhante) para que o QlikView reconheça os



registros novos.

l

É necessário um campo chave primário para que o QlikView classifique os registros atualizados do



arquivo QVD.

l

Esta solução forçará a leitura do arquivo QVD no modo padrão (em vez do otimizado), que ainda será



consideravelmente mais rápido do que carregar a base de dados inteira.

Trabalhando com o QlikView - QlikView 12, November 2017

255


8   Introdução ao carregamento de dados

Exemplo:

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#;

Concatenate LOAD PrimaryKey, X, Y FROM File.QVD

WHERE NOT Exists(PrimaryKey);

STORE QV_Table INTO File.QVD;

Caso 4: Inserir, Atualizar e Excluir

O caso mais difícil de solucionar é quando os registros são excluídos da base de dados de origem entre as

execuções de script. As seguintes condições se aplicam:

l

A fonte de dados pode ser qualquer base de dados.



l

O QlikView carrega os registros inseridos ou atualizados na base de dados após a execução do último

script.

l

O QlikView remove os registros excluídos da base de dados após a execução do último script.



l

É necessário um campo ModificationDate (ou semelhante) para que o QlikView reconheça os

registros novos.

l

É necessário um campo chave primário para que o QlikView classifique os registros atualizados do



arquivo QVD.

l

Esta solução forçará a leitura do arquivo QVD no modo padrão (em vez do otimizado), que ainda será



consideravelmente mais rápido do que carregar a base de dados inteira.

Trabalhando com o QlikView - QlikView 12, November 2017

256


8   Introdução ao carregamento de dados

Exemplo:

Let ThisExecTime = Now(  

 

);

QV_Table:



SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#

AND ModificationTime < #$(ThisExecTime)#;

Concatenate LOAD PrimaryKey, X, Y FROM File.QVD

WHERE NOT EXISTS(PrimaryKey);

Inner Join SQL SELECT PrimaryKey FROM DB_TABLE;

If ScriptErrorCount = 0 then

STORE QV_Table INTO File.QVD;

Let LastExecTime = ThisExecTime;

End If


Combinando tabelas com Join e Keep

Uma junção é uma operação que usa duas tabelas para combiná-las em uma. Os registros da tabela

resultante são combinações dos registros das tabelas originais, de forma que, geralmente, os dois registros

que contribuem para qualquer combinação na tabela resultante tenham um valor comum para um ou vários

campos comuns, a assim chamada junção natural. No QlikView, as junções podem ser feitas no script,

produzindo tabelas lógicas.

Assim, a lógica do QlikView não verá as tabelas separadas, e sim o resultado da junção, que é uma única

tabela interna. Em algumas situações isso é necessário, mas existem desvantagens:

Trabalhando com o QlikView - QlikView 12, November 2017

257


8   Introdução ao carregamento de dados

l

Normalmente, as tabelas carregadas ficam maiores e o QlikView trabalha mais lentamente.



l

Algumas informações podem ser perdidas: a frequência (número de registros) na tabela original pode

não mais estar disponível.

A funcionalidade



Keep, que tem o efeito de reduzir uma ou ambas as tabelas à interseção dos dados da

tabela antes de serem armazenadas no QlikView, foi projetada para reduzir o número de casos que exigem o

uso de junções explícitas.

Nesta documentação, o termo junção é geralmente utilizado para junções feitas antes da

criação das tabelas internas. Entretanto, a associação, feita após a criação das tabelas

internas, também é basicamente uma junção.

Join


A forma mais simples de fazer uma junção é usar o prefixo

Join no script, que une a tabela interna a outra

tabela nomeada ou à última tabela criada anteriormente. A junção será um outer join, criando todas as

combinações possíveis de valores das duas tabelas.

Exemplo:

LOAD a, b, c from table1.csv;

join LOAD a, d from table2.csv;

A tabela interna resultante tem os campos a, b, c e d. O número de registros é diferente dependendo dos

valores de campo das duas tabelas.

Os nomes dos campos a serem unidos devem ser exatamente os mesmos. O número de

campos a serem unidos é arbitrário. Normalmente, as tabelas devem ter um ou alguns campos

em comum. Nenhum campo em comum gerará o produto cartesiano das tabelas. Também é

possível ter todos os campos em comum, mas isso normalmente não faz sentido. A menos

que o nome de uma tabela carregada anteriormente seja especificado no comando Join o

prefixo Join utilizará a última tabela criada anteriormente. Dessa forma, a ordem dos dois

comandos não é arbitrária.

Keep


Uma das principais características do QlikView é sua capacidade de fazer associações entre as tabelas, em

vez de uni-las, reduzindo bastante o espaço usado na memória, aumentando a velocidade e oferecendo

enorme flexibilidade. A funcionalidade keep foi projetada para reduzir o número de casos em que as junções

explícitas precisam ser usadas.

O prefixo

Keep entre dois comandos LOAD ou SELECT tem o efeito de reduzir uma ou ambas as tabelas à

interseção dos dados da tabela antes de serem armazenadas no QlikView. O prefixo



Keep sempre deve ser

precedido de uma das palavras-chave



InnerLeft ou Right. A seleção de registros das tabelas é feita da

mesma maneira que em uma junção correspondente. Entretanto, as duas tabelas não são unidas e serão

armazenadas no QlikView como duas tabelas nomeadas separadas.

Trabalhando com o QlikView - QlikView 12, November 2017

258


8   Introdução ao carregamento de dados

Inner


Os prefixos

Join Keep na linguagem de script do QlikView podem ser precedidos pelo prefixo Inner.

Se for usado antes de



Join, especificará que a junção das duas tabelas deve ser interna. A tabela resultante

contém apenas combinações entre as duas tabelas com um conjunto de dados completo de ambos os lados.

Se usado antes de

Keep, especificará que as duas tabelas deverão ser reduzidas à sua interseção comum

antes de serem armazenadas no QlikView.



Exemplo:

Nestes exemplos, usamos as tabelas de fontes Table1 e Table2:



Tabelas de fonte com os exemplos Inner

Primeiro, realizamos um



Inner Join nas tabelas, resultando em um VTable, contendo apenas uma linha, o

único registro existente em ambas as tabelas, com dados combinados de ambas as tabelas.

VTable:

SELECT * from Table1;



inner join SELECT * from Table2;

Exemplo de Inner Join

Se você realizar um



Inner Keep, ainda terá duas tabelas. As duas tabelas serão, obviamente, associadas

através do campo comum A.

VTab1:

SELECT * from Table1;



VTab2:

inner keep SELECT * from Table2;



Exemplo de Inner Keep

Trabalhando com o QlikView - QlikView 12, November 2017

259


8   Introdução ao carregamento de dados

Left


Os prefixos

Join Keep na linguagem de script do QlikView podem ser precedidos pelo prefixo left.

Se for usado antes de



Join, ele especificará que a junção das duas tabelas deve ser à esquerda. A tabela

resultante contém apenas combinações entre as duas tabelas com um conjunto de dados completo da

primeira tabela.

Se usado antes de



Keep, especificará que a segunda tabela deverá ser reduzida à sua interseção comum

com a primeira tabela antes de ser armazenada no QlikView.



Exemplo:

Nestes exemplos, usamos as tabelas de fontes Table1 e Table2:



Tabelas de fonte com os exemplos Left

Primeiro, um



Left Join é realizado nas tabelas, resultando em um VTable, contendo todas as linhas da

Table1, combinadas com os campos das linhas correspondentes na Table2.

VTable:

SELECT * from Table1;



left join SELECT * from Table2;

Exemplo de Left Join

Se você realizar um



Left Keep, ainda terá duas tabelas. As duas tabelas serão, obviamente, associadas

através do campo comum A.

VTab1:

SELECT * from Table1;



VTab2:

left keep SELECT * from Table2;

Trabalhando com o QlikView - QlikView 12, November 2017

260


8   Introdução ao carregamento de dados

Exemplo de Left Keep

Right


Os prefixos

Join Keep na linguagem de script do QlikView podem ser precedidos pelo prefixo right.

Se for usado antes de



Join, ele especificará que a junção das duas tabelas deve ser à direita. A tabela

resultante contém apenas combinações entre as duas tabelas com um conjunto de dados completo da

segunda tabela.

Se usado antes de



Keep, especificará que a primeira tabela deverá ser reduzida à sua interseção comum

com a segunda tabela antes de ser armazenada no QlikView.



Exemplo:

Nestes exemplos, usamos as tabelas de fontes Table1 e Table2:



Tabelas de fonte com os exemplos Right

Primeiro, um



Right Join é realizado nas tabelas, resultando em um VTable, contendo todas as linhas da

Table2, combinadas com os campos das linhas correspondentes na Table1.

VTable:

SELECT * from Table1;



right join SELECT * from Table2;

Exemplo de Right Join

Se você realizar um



Right Keep, ainda terá duas tabelas. As duas tabelas serão, obviamente, associadas

através do campo comum A.

VTab1:

SELECT * from Table1;



Trabalhando com o QlikView - QlikView 12, November 2017

261


8   Introdução ao carregamento de dados

VTab2:


right keep SELECT * from Table2;

Exemplo de Right Keep

Usando o mapeamento como uma alternativa à junção

O prefixo

Join no QlikView é uma ótima maneira de combinar várias tabelas de dados no modelo de dados.

Uma desvantagem é que as tabelas combinadas podem se tornar grandes e criar problemas de

desempenho. Uma alternativa ao

Join, nas situações em que você precisa analisar um único valor de outra

tabela, é usar o mapeamento. Isso pode prevenir o carregamento de dados desnecessários, que atrasa os

cálculos e pode criar erros de cálculo, porque as junções podem mudar o número de registros nas tabelas.

A tabela de mapeamento consiste em duas colunas: um campo de comparação (entrada) e um campo de

valor de mapeamento (saída).

Nesse exemplo, temos uma tabela de pedidos (Orders) e precisamos saber qual é o país do cliente, que está

armazenado na tabela de clientes (Customers).

Tabela de dados Orders

CustomerID'>OrderID

OrderDate

ShipperID

Freight

CustomerID

12987


2007-12-01

1

27



3

12988


2007-12-01

1

65



4

12989


2007-12-02

2

32



2

12990


2007-12-03

1

76



3

Tabela de dados Customers

CustomerID

Name

Country

...

1

DataSales



Spain

...


2

BusinessCorp

Italy

...


3

TechCo


Germany

...


4

Mobecho


France

...


A fim de procurar o país (Country) de um cliente, precisamos de uma tabela de mapeamento que teria a

seguinte aparência:



Baixar 11.43 Mb.

Compartilhe com seus amigos:
1   ...   19   20   21   22   23   24   25   26   ...   117




©bemvin.org 2020
enviar mensagem

    Página principal
Prefeitura municipal
santa catarina
Universidade federal
prefeitura municipal
pregão presencial
universidade federal
outras providências
processo seletivo
catarina prefeitura
minas gerais
secretaria municipal
CÂmara municipal
ensino fundamental
ensino médio
concurso público
catarina município
Dispõe sobre
reunião ordinária
Serviço público
câmara municipal
público federal
Processo seletivo
processo licitatório
educaçÃo universidade
seletivo simplificado
Secretaria municipal
sessão ordinária
ensino superior
Relatório técnico
Universidade estadual
Conselho municipal
técnico científico
direitos humanos
científico período
espírito santo
pregão eletrônico
Curriculum vitae
Sequência didática
Quarta feira
prefeito municipal
distrito federal
conselho municipal
língua portuguesa
nossa senhora
educaçÃo secretaria
segunda feira
Pregão presencial
recursos humanos
Terça feira
educaçÃO ciência
agricultura familiar