Trabalhando com o QlikView



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

DIMENSION são campos que também armazenam uma cópia do valor de campo, mas os valores

duplicados são classificados no banco de dados antes de serem carregados na memória. Ao lidar com

grandes quantidades de dados, como geralmente ocorre ao usar o Direct Discovery, os dados são carregados

mais rapidamente como uma carga



DIRECT QUERY do que seriam por meio da carga SQL SELECT,

usada para os campos da memória.

Diferenças entre os dados da memória e os dados do banco de dados

DIRECT QUERY faz distinção entre maiúsculas e minúsculas ao fazer associações com os dados da

memória. O Direct Discovery seleciona os dados dos bancos de dados de origem, de acordo com a distinção

entre maiúsculas e minúsculas do banco de dados. Se um banco de dados não fizer distinção entre

maiúsculas e minúsculas, uma consulta do Direct Discovery poderia retornar dados que uma consulta da

memória não retornaria. Por exemplo, se os seguintes dados existissem em um banco de dados que não

fizesse distinção entre maiúsculas e minúsculas, uma consulta do Direct Discovery do valor "Red" retornaria

todas as quatro linhas.

ColumnA


ColumnB

red


one

Red


two

rED


three

RED


four

Por outro lado, uma seleção na memória de "Red," retornaria apenas:

Red two

Trabalhando com o QlikView - QlikView 12, November 2017



240

8   Introdução ao carregamento de dados

O QlikView normaliza os dados na medida que gera correspondências nos dados selecionados que os

bancos de dados não fariam correspondências. Como resultado disso, uma consulta na memória pode gerar

mais valores de correspondência do que uma consulta do Direct Discovery. Por exemplo, na tabela a seguir,

os valores para o número "1" variam pelo local de espaços ao seu redor:

ColumnA


ColumnB

' 1'


space_before

'1'


no_space

'1 '


space_after

'2'


two

Se você selecionar "1" em uma



Lista para a ColumnA, onde os dados estão na memória padrão do

QlikView, as primeiras três linhas são associadas:

'

1'

space_before



'1'

no_space


'1

'

space_after



Se a

Lista contiver dados do Direct Discovery, a seleção de "1" poderia associar apenas "no_space". As

correspondências retornadas para os dados do Direct Discovery dependem do banco de dados. Alguns

retornam apenas "no_space" e outros, como o SQL Server, retornam "no_space" e "space_after".

Armazenamento em cache e o Direct Discovery

O armazenamento em cache do QlikView armazena estados de seleção das consultas na memória. Já que

os mesmos tipos de seleções são feitas, o QlikView aproveita a consulta do cache, em vez de consultar os

dados de origem. Quando uma seleção diferente é feita, uma consulta do SQL é feita na fonte de dados. Os

resultados armazenados em cache são compartilhados entre os usuários.



Exemplo:

1. O usuário aplica a seleção inicial.

O SQL é transmitido para a fonte de dados subjacente.

2. O usuário limpa a seleção e aplica a mesma seleção como uma seleção inicial.

O resultado do cache é retornado e o SQL não é transmitido para a fonte de dados subjacente.

3. O usuário aplica uma seleção diferente.

O SQL é transmitido para a fonte de dados subjacente.

Um limite de tempo pode ser definido para o armazenamento em cache com a variável do sistema



DirectCacheSeconds. Quando o limite de tempo é alcançado, o QlikView limpa o cache dos resultados da

consulta do Direct Discovery gerados para as seleções anteriores. Em seguida, o QlikView consulta as

seleções dos dados de origem e cria novamente o cache para o limite de tempo designado.

Trabalhando com o QlikView - QlikView 12, November 2017

241


8   Introdução ao carregamento de dados

O tempo de cache padrão para os resultados da consulta do Direct Discovery é de 30 minutos, a menos que

a variável do sistema

DirectCacheSeconds seja usada.

Tipos de campos do Direct Discovery

No Direct Discovery, existem três tipos de campos de dados: DIMENSION, MEASURE e DETAIL. Os tipos

são definidos nos campos de dados quando a seleção do Direct Discovery é feita com o comando



Direct

Query no script de carregamento.

Todos os campos do Direct Discovery podem ser usados em combinação com campos na memória.

Normalmente, os campos com valores discretos que serão usados como dimensões devem ser carregados

com a palavra-chave DIMENSION, enquanto os dados numéricos que serão usados em agregações devem

ser marcados apenas como campos MEASURE.

A tabela a seguir resume as características e os usos dos tipos de campos do Direct Discovery:



Tipo de

campo

Na

memória?

Associação

de

formulários?

Usado em

expressões de

gráfico?

DIMENSION

Sim

Sim


Sim

MEASURE


Não

Não


Sim

DETAIL


Não

Não


Não

Campos DIMENSION

Os campos DIMENSION são carregados na memória e podem ser usados para criar associações entre

dados na memória e os dados dos campos do Direct Discovery. Os campos do Direct DiscoveryDIMENSION

também são usados para definir os valores de dimensão nos gráficos.

Campos MEASURE

Campos MEASURE, por outro lado, são reconhecidos em um "meta nível". Campos MEASURE não são

carregados na memória (não aparecem no visualizador de tabela). O propósito é permitir que agregações de

dados nos campos MEASURE ocorram no banco de dados e não na memória. Apesar disso, os campos

MEASURE podem ser usados em expressões sem alterar a sintaxe de expressão. Como resultado disso, o

uso dos campos Direct Discovery do banco de dados é transparente para o usuário final.

As seguintes funções de agregação podem ser usadas com campos MEASURE:

l

Sum

l

Avg

l

Count

l

Min

l

Max

Trabalhando com o QlikView - QlikView 12, November 2017

242


8   Introdução ao carregamento de dados

Campos DETAIL

Campos DETAIL fornecem informações ou detalhes que você pode exibir, mas não usar, nas expressões do

gráfico. Campos designados como DETAIL geralmente contêm dados que não podem ser agregados de

forma significativa, como comentários.

Qualquer campo pode ser designado como um campo DETAIL.

Fontes de dados suportadas no Direct Discovery

O QlikViewDirect Discovery pode ser usado nas seguintes fontes de dados, com conexões de 32 e 64 bits;

l

Fontes de dados ODBC/OLEDB – Todas as fontes ODBC/OLEDB são suportadas, incluindo SQL



Server, Teradata e Oracle.

l

Conectores personalizados que são compatíveis com SQL – Conector SAP SQL, conectores



personalizados QVX para fontes de dados compatíveis com SQL.

As conexões de 32 e 64 bits são suportadas.

SAP

Para o SAP, Direct Discovery pode ser usado apenas com o Qlik SAP SQL Connector e requer os seguintes



parâmetros nas variáveis

SET:

SET DirectFieldColumnDelimiter=' ';

SET DirectIdentifierQuoteChar=' ';

O SAP usa o OpenSQL, que delimita as colunas com um espaço em vez de uma vírgula; por isso, os

comandos SET acima resultam em uma substituição para ajustar a diferença entre ANSI SQL e OpenSQL.

Google Big Query

O Direct Discovery pode ser usado com o Google Big Query e requer os seguintes parâmetros nas variáveis

SET:


SET DirectDistinctSupport=false;

SET DirectIdentifierQuoteChar='[]';

SET DirectIdentifierQuote

O Google Big Query não suporta



SELECT DISTINCT ou nomes de coluna/tabela entre aspas e tem uma

configuração de aspas diferente do ANSI, com uso do '[ ]'.

MySQL e Microsoft Access

O Direct Discovery pode ser usado em conjunto com o MySQL e o Microsoft Access, mas pode exigir os

seguintes parâmetros nas variáveis de conjunto, devido aos caracteres entre aspas usados nestas fontes:

SET DirectIdentifierQuoteChar='``';

DB2, Oracle e PostgreSQL

O Direct Discovery pode ser usado em conjunto com o DB2, Oracle e o PostgreSQL, mas pode exigir os

seguintes parâmetros nas variáveis de conjunto, devido aos caracteres entre aspas usados nestas fontes:

SET DirectIdentifierQuoteChar='""';

Trabalhando com o QlikView - QlikView 12, November 2017

243


8   Introdução ao carregamento de dados

Sybase e MS SQL Server

O Direct Discovery pode ser usado em conjunto com o Sybase e o MS SQL Server, mas pode exigir os

seguintes parâmetros nas variáveis de conjunto, devido aos caracteres entre aspas usados nestas fontes:

SET DirectIdentifierQuoteChar='[]';

Limitações no uso do Direct Discovery

Tipos de dados suportados

Todos os tipos de dados são suportados no Direct Discovery, embora possa haver casos em que formatos de

dados de origem específicos precisem ser definidos para o QlikView. Isto pode ser feito no script de carga

com a sintaxe "SET Direct...Format". O seguinte exemplo demonstra como definir o formato de data do

banco de dados de origem usado como a origem do Direct Discovery:

Exemplo:

SET DirectDateFormat='YYYY-MM-DD';

Existem também duas variáveis de scripts para controlar a forma como o Direct Discovery formata valores do

tipo monetário nos comandos SQL gerados:

SET DirectMoneyFormat (default '#.0000')

SET DirectMoneyDecimalSep (default '.')

A sintaxe para essas duas variáveis é a mesma que para

MoneyFormat MoneyDecimalSep, porém,

existem duas importantes diferenças no uso:

l

Como este não é um formato de exibição, ele não deve incluir símbolos de moeda ou separadores de



milhares.

l

Os valores padrão não são orientados pelo local, mas impressos nos valores. (Formatos específicos



para o local incluem o símbolo de moeda.)

O Direct Discovery pode suportar a seleção de dados Unicode estendidos usando o formato padrão de SQL

para literais de caracteres estendidos (N''), conforme exigido por alguns bancos de dados,

como o SQL Server. Esta sintaxe pode ser ativada para o Direct Discovery com a variável de script



DirectUnicodeStrings. Definir essa variável para "true" ativa o uso de "N" na frente das laterais dos

caracteres.

Segurança

As práticas de segurança recomendadas descritas a seguir devem ser levadas em conta ao usar o Direct

Discovery:

l

Todos os usuários que usam o mesmo aplicativo com o recurso Direct Discovery, usam a mesma



conexão. A passagem de autenticação e as credenciais por usuário não são suportadas.

l

O Acesso à Seção é suportado apenas no modo de servidor.



l

É possível executar comandos de SQL personalizados no banco de dados com uma expressão com a

palavra-chave NATIVE; portanto, a conexão do banco de dados configurada no script de carga deve

usar uma conta que tenha um acesso somente leitura ao banco de dados.

Trabalhando com o QlikView - QlikView 12, November 2017

244


8   Introdução ao carregamento de dados

l

O Direct Discovery não tem o recurso de registro em log, mas é possível usar o recurso de



rastreamento do ODBC.

l

É possível inundar o banco de dados com solicitações do cliente.



l

É possível obter mensagens de erro detalhadas dos arquivos de log do servidor.

Funcionalidades do QlikView não suportadas

Devido à natura interativa e específica para a sintaxe do SQL do Direct Discovery, vários recursos não são

suportados:

l

Cálculos avançados (Análise de conjunto, expressões complexas)



l

Dimensões calculadas

l

Análise comparativa (Estado alternativo) dos objetos que usam campos do Direct Discovery



l

Os campos Direct Discovery



MEASURE DETAIL não são suportados ao utilizar a função de

pesquisa


l

Carga binária de um aplicativo que esteja acessando uma tabela do Direct Discovery

l

Loop e redução



l

Chaves sintéticas na tabela no Direct Discovery

l

A nomenclatura de tabelas no script não se aplica à tabela do Direct Discovery



l

O uso do caractere curinga * após a palavra-chave



DIRECT QUERY no script de carga (

DIRECT QUERY

*

)

l



As tabelas do banco de dados do Oracle com colunas do tipo de dados LONG não são suportadas.

l

Número inteiros extensos na notação científica fora do intervalo [-9007199254740990,



9007199254740991] podem causar erros de arredondamento e comportamento não definido.

Suporte a várias tabelas no Direct Discovery

É possível usar o Direct Discovery para carregar mais de uma tabela ou exibição usando a funcionalidade de

junção ANSI SQL. Em um único gráfico, todas as medidas devem ser derivadas da mesma tabela lógica do

QlikView, mas isto pode ser uma combinação de várias tabelas da origem vinculadas por comandos de

junção. No entanto, é possível usar dimensões provenientes de outras tabelas do mesmo gráfico.

Por exemplo, você pode vincular as tabelas carregadas com o Direct Discoveryusando uma cláusula

Where

ou

Join.

l

Direct Discovery pode ser implantado em um cenário de fato único/dimensões múltiplas de memória



com conjuntos de dados grandes.

l

Direct Discovery pode ser usado com mais de uma tabela que deve corresponder a qualquer um dos



seguintes critérios:

l

A cardinalidade do campo chave na junção é baixa.



l

A cardinalidade do campo chave na junção é alta,



DirectEnableSubquery é definida como

verdadeira e todas as tabelas foram unidas com Direct Discovery.

Consulte:

Usando subconsultas com o Direct Discovery (página 247)

Trabalhando com o QlikView - QlikView 12, November 2017

245


8   Introdução ao carregamento de dados

l

Direct Discovery não é adequado para implantação em um cenário de Terceira forma normal com



todas as tabelas na forma Direct Discovery.

Vinculando tabelas do Direct Discovery com uma cláusula Where

Neste script de exemplo, carregamos os dados do banco de dados AW2012. As tabelas Product e

ProductSubcategory estão vinculadas com uma cláusula



Where usando o campo comum

ProductSubCategoryID.

Product_Join:

DIRECT QUERY

DIMENSION

[ProductID],

[AW2012].[Production].[Product].[Name] as [Product Name],

[AW2012].[Production].[ProductSubcategory].[Name] as [Sub Category Name],

Color,

[AW2012].[Production].[Product].ProductSubcategoryID as [SubcategoryID]



MEASURE

[ListPrice]

FROM [AW2012].[Production].[Product],

[AW2012].[Production].[ProductSubcategory]

WHERE [AW2012].[Production].[Product].ProductSubcategoryID =

[AW2012].[Production].[ProductSubcategory].ProductSubcategoryID

;

Vinculando tabelas do Direct Discovery com cláusulas Join On



Também é possível usar cláusulas

Join On para vincular tabelas do Direct Discovery. Neste comando de

exemplo, unimos a tabela SalesOrderHeader à tabela SalesOrderDetail por meio do campo SalesOrderID e

também unimos a tabela Customer à tabela SalesOrderHeader por meio do campo Customer ID.

Neste exemplo, criamos medidas da mesma tabela lógica, o que significa que podemos usá-las no mesmo

gráfico. Por exemplo, é possível criar um gráfico com SubTotal e OrderQty como medidas.

Sales_Order_Header_Join:

DIRECT QUERY

DIMENSION

AW2012.Sales.Customer.CustomerID as CustomerID,

AW2012.Sales.SalesOrderHeader.SalesPersonID as SalesPersonID,

AW2012.Sales.SalesOrderHeader.SalesOrderID as SalesOrderID,

ProductID,

AW2012.Sales.Customer.TerritoryID as TerritoryID,

OrderDate,

NATIVE('month([OrderDate])') as OrderMonth,

NATIVE('year([OrderDate])') as OrderYear

MEASURE

SubTotal,



TaxAmt,

TotalDue,

OrderQty

DETAIL


DueDate,

ShipDate,

CreditCardApprovalCode,

PersonID,

Trabalhando com o QlikView - QlikView 12, November 2017

246


8   Introdução ao carregamento de dados

StoreID,


AccountNumber,

rowguid,


ModifiedDate

FROM AW2012.Sales.SalesOrderDetail

JOIN AW2012.Sales.SalesOrderHeader

ON (AW2012.Sales.SalesOrderDetail.SalesOrderID =

AW2012.Sales.SalesOrderHeader.SalesOrderID)

JOIN AW2012.Sales.Customer

ON(AW2012.Sales.Customer.CustomerID =

AW2012.Sales.SalesOrderHeader.CustomerID);



Não é possível fazer referência a tabelas por alias na cláusula FROM. É necessário usar o

nome completo da tabela.

Usando subconsultas com o Direct Discovery

Se a cardinalidade do campo chave unindo a tabela for alta, ou seja, se contiver um número grande de

valores distintos, uma seleção no QlikView poderá gerar um comando SQL muito grande, já que a cláusula



WHERE key_field IN poderá conter um número grande de valores. Nesse caso, uma solução possível é

deixar o QlikView criar subconsultas.

Para ilustrar isso, usamos um exemplo onde uma tabela de produtos (ProductTable) é vinculada a uma

tabela de ordem de vendas (SalesOrderDetail) usando uma ID do produto (ProductID), com ambas as

tabelas usadas no modo Direct Discovery.

Criamos um gráfico com OrderMonth como dimensão e Sum(Subtotal) como medida, e uma caixa de filtro

para seleção do Size.

Trabalhando com o QlikView - QlikView 12, November 2017

247


8   Introdução ao carregamento de dados

Cenário 1: Cardinalidade baixa

Nesse cenário, a tabela do produto contém um baixo número de produtos distintos, 266. Se fizermos uma

seleção em Size, o Direct Discovery gerará um comando SQL para retornar os dados, usando uma cláusula



WHERE ProductID IN, a qual conterá as IDs do produto, fazendo correspondência com o tamanho

selecionado, nesse caso, 20 produtos.

O SQL gerado tem a seguinte aparência:

SELECT ProductID, month([OrderDate]), SUM(OrderQty), SUM(SubTotal)

FROM

SalesTable



WHERE ProductID IN ( 12, 51, 67, 81, 89, 92, 100, 108, 142, 150, 151, 162, 191, 206, 220, 222, 251,

254)


GROUP BY ProductID, month([OrderDate])

Trabalhando com o QlikView - QlikView 12, November 2017

248


8   Introdução ao carregamento de dados

Cenário 2: Usando subconsultas

Se o mesmo exemplo contiver um número alto de produtos distintos, por exemplo 20.000, a seleção de um

filtro de dimensão Size, por exemplo, poderá gerar um comando SQL com uma cláusula



WHERE

ProductID IN contendo milhares de IDs do produto. O comando resultante pode ser muito grande para ser

administrado pela fonte de dados devido a limitações ou problemas de memória ou desempenho.

A solução é deixar o QlikView criar subconsultas, configurando o

DirectEnableSubquery como "true". O

comando SQL gerado poderá ter a seguinte aparência:

SELECT ProductID, month([OrderDate]), SUM(OrderQty), SUM(SubTotal)

FROM


SalesTable

WHERE ProductID IN

( SELECT DISTINCT "AW2012"."dbo"."PRODUCT"."PRODUCTID" WHERE "AW2012"."dbo"."PRODUCT"."SIZE" IN (3))

GROUP BY ProductID, month([OrderDate])

O tamanho da cláusula

WHERE ProductID IN não depende mais do número de chaves resultante da

seleção.


As seguintes limitações aplicam-se ao uso de subconsultas:

l

A sintaxe da subconsulta é invocada somente quando você selecionar dados que envolvam a



filtragem de gráficos usando dados de outra tabela.

l

A quantidade de dados nas chaves é o fator determinante, não o número de chaves.



l

As subconsultas são invocadas somente se todas as tabelas envolvidas estiverem no modo Direct

Discovery. Se você filtrar o gráfico usando dados de uma tabela incluída no modo de memória, uma

cláusula


IN será gerada.

Registrando em log o acesso ao Direct Discovery

Os comandos do Direct DiscoverySQL transmitidos para a fonte de dados podem ser registrados nos

arquivos de rastreamento da conexão com o banco de dados. Para uma conexão do ODBC padrão, o

rastreamento é iniciado com o

Administrador da Fonte de Dados do ODBC:

Trabalhando com o QlikView - QlikView 12, November 2017

249


8   Introdução ao carregamento de dados

O arquivo de rastreamento resultante detalha os comandos do SQL gerados pelas seleções e interações do

usuário.

Direct Discovery com QlikView Server e Publisher

Configurações do QlikView Server

Algumas configurações do QlikView Server deverão ser revisadas se Direct Discovery for usado em um

aplicativo QlikView.

Essas configurações afetarão todos os documentos QlikView que existem no mesmo

QlikView Server.

Object

Calculation

Time Limit

Como o recurso Direct Discovery consulta um sistema externo do QlikView, o tempo de

cálculo do gráfico depende do desempenho do sistema subjacente. É aconselhável

definir a configuração Object Calculation Time Limit no QlikView Management

Console alta o suficiente para dar tempo ao gráfico do QlikView obter os resultados da

consulta de direct discovery de volta da fonte de dados. Essa configuração está

localizada na guia Performance do QlikView Server listada no QlikView Management

Console.


Baixar 11.43 Mb.

Compartilhe com seus amigos:
1   ...   18   19   20   21   22   23   24   25   ...   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
reunião ordinária
Dispõe sobre
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
Curriculum vitae
pregão eletrônico
espírito santo
Sequência didática
Quarta feira
conselho municipal
distrito federal
prefeito municipal
língua portuguesa
nossa senhora
segunda feira
educaçÃo secretaria
Pregão presencial
recursos humanos
Terça feira
agricultura familiar
educaçÃO ciência