Você está na página 1de 164

QV_Developer_I_Course.

book Page 1 Tuesday, July 20, 2010 10:09 AM

Developer I
QV_Developer_I_Course.book Page 2 Tuesday, July 20, 2010 10:09 AM

Copyright © 2009 QlikTech International AB, Suécia.


A documentação e o software são protegidos por leis de direitos autorais internacionais e não
devem ser copiados, fotocopiados, reproduzidos, traduzidos ou reduzidos a qualquer meio
eletrônico ou formato legível por máquina, completa ou parcialmente, sem a permissão prévia
por escrito da QlikTech International AB, exceto conforme descrito no contrato do software.
Qlik®Tech e Qlik®View são marcas comerciais registradas da QlikTech International AB.
Microsoft, MS-DOS, Windows, Windows NT, Windows 2000, Windows Server 2003,
Windows Server 2008, Windows XP, Windows Vista, SQL Server, Excel, Access, Visual Basic,
Internet Explorer, Internet Information Server, Visual C++, Visual Studio e MS Query são
marcas comerciais da Microsoft Corporation.
IBM, AS/400 e PowerPC são marcas comerciais da International Business Machines
Corporation.
Firefox é marca comercial da Mozilla Foundation.
Apple, iPhone, iPod Touch, Safari e MacOS são marcas comerciais da Apple Corporation.
BlackBerry é marca comercial da Research In Motion.
Versão original: maio de 2009
Esta versão: setembro de 2009
QV_Developer_I_Course.book Page i Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONTEÚDO

1 INTRODUÇÃO 1
Público-alvo 1
O Que Você Aprenderá Neste Curso 1
Logística do Curso 2
Notas 2

2 O AMBIENTE DO QLIKVIEW 5
QlikView Desktop 6

3 A METODOLOGIA DE DESENVOLVIMENTO
DO QLIKVIEW 9
Importar/Exportar Layouts de Pasta e Documento como XML 9
Plano de Projeto do QWT (Qlik Wholesale Trade) 9
Revisão do Plano de Projeto 9
Metodologia SAFE 10

4 IMPLANTAÇÃO 13
QlikView Standalone 13
QlikView Server 14
QlikView Publisher 15

5 INTRODUÇÃO AOS DADOS E SCRIPTS 17


Bases de Dados Relacionais 17
Outras Estruturas de Dados 18
Comparando Estruturas de Bases de Dados às Estruturas de Dados
do QlikView 20
Estruturas de Dados no QlikView 21
Arquivos de Fonte de Dados 22
A Fonte de Dados QWT Principal 22
Os Arquivos de Dados QWT Secundários 23
Introdução aos Scripts 23

i
QV_Developer_I_Course.book Page ii Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONTEÚDO

6 CONECTANDO FONTES DE DADOS


ODBC/OLEDB 35
Sintaxe 35

7 CRIANDO O SCRIPT 43
Geração do Script 43
Lendo Tabelas no QlikView 43
Depuração de Scripts 51

8 ESTRUTURANDO O SCRIPT 57
Criando Abas no Script 57

9 TRANSFORMAÇÃO DE DADOS BÁSICA 65


Comando Load 65
Renomeando um Campo 66
Expressões de Script 67
Carregando um Arquivo XML 68
Renomeando Campos Usando o Comando Qualify 71
Campos Chave 74
Exemplo de Dificuldade 74
Como Isso Afeta Você? 74
Carregando um Campo Várias Vezes em uma Tabela 75
Usando um Contador de Registros em Campos Chave 75
Isto Está Certo? 76
Funções de Hora: Criando um Calendário 78
Obtendo a Maior e a Menor Data da Tabela Pedidos 78
Criando Variáveis no Script 80
O Calendário Mestre 83

10 O MODELO DE DADOS BÁSICO E O


VISUALIZADOR DE TABELAS 87
O Visualizador de Tabelas 87
A Tabela do Sistema 92
Propriedades do Documento: página Tabelas 94

ii
QV_Developer_I_Course.book Page iii Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONTEÚDO

11 ADICIONANDO DADOS DE TEXTO 95


Funcionários 95
Escritórios 96
Geração de scripts usando o Assistente de Arquivo 96

12 GERANDO DADOS NO SCRIPT DO QLIKVIEW 101


Carga Residente 101
Avançado – Usando Pedidos para determinar Vendedor. 101
Criando dados usando Load Inline e Autogenerate 102
Tabelas inline 102
Tabelas autogenerate 102
Include 102

13 CONSIDERAÇÕES SOBRE SCRIPTS 109


Tabelas de Chaves Sintéticas 111
Referências Circulares 114
Causas das Referências Circulares 115
Verificar os Números 120

14 ARQUIVOS QVD (ARQUIVOS DE DADOS


QLIKVIEW) 123
Formato de Arquivo QVD 123
Utilização de Arquivos QVD 123
Criando Arquivos QVD 124
Criação Manual de um Arquivo QVD no Script 125
Criação Automática de um Arquivo QVD no Script 129
Funções de Script do Arquivo QVD 131

15 RELATANDO ERROS NO QLIKVIEW 133

16 INFORMAÇÕES ADICIONAIS 135


Material de Referência 135
Tipos de dados no QlikView 135

iii
QV_Developer_I_Course.book Page iv Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONTEÚDO

17 APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT


PARA DESENVOLVEDORES 141
Desenho Fácil de Utilizar 141
Comportamento Natural do Ser Humano 142
Opções de Gráfico e Objeto no QlikView 143
Importar/Exportar Layouts de Pasta e Documento 153

iv
QV_Developer_I_Course.book Page 1 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO

1 INTRODUÇÃO

Objetivos do Curso
• Compreender o ambiente do QlikView
• Configurar seu ambiente de treinamento
• Compreender as opções de implantação e os métodos de
desenvolvimento
• Criar e modificar scripts de carregamento de dados do QlikView
• Lidar com questões comuns de transformação e modelagem de dados
• Criar e manipular arquivos QVD do QlikView
• Examinar as práticas recomendadas de desenho de nível superior para
Desenvolvedores do QlikView

Público-alvo
Este curso se destina a Desenvolvedores do QlikView e Administradores
do Sistema. O desenvolvedor é responsável pelo desenvolvimento e pela
documentação da solução QlikView (aplicativo) de acordo com os
requisitos especificados. Ele também ajuda a responder perguntas e a
elaborar recomendações durante as fases do projeto. A prioridade do
desenvolvedor é criar o modelo de dados e executar o procedimento
apropriado de extrair-transformar-carregar (ETL) dados como suporte
aos requisitos comerciais.
Os administradores do sistema são responsáveis pelo hardware, pelos
sistemas operacionais e pelas programações de trabalho. Eles garantem
a conectividade ODBC e/ou OLEDB entre o ambiente de hardware do
QlikView (servidor e cliente) e os sistemas de base de dados subjacentes.
Eles também fornecem os IDs de usuário e as senhas necessários para a
conectividade com esses sistemas, caso o administrador da rede ainda não
o tenha feito.

O Que Você Aprenderá Neste Curso


Este curso é uma introdução ao QlikView Desktop for the Developer.
Ao concluí-lo, você terá aprendido sobre:
• O ambiente do QlikView
• A metodologia do processo de desenvolvimento do QlikView
• A implantação
• A introdução aos dados e scripts
• A conexão com fontes de dados ODBC/OLEDB
• A criação do script
• Técnicas de transformação de dados

1
QV_Developer_I_Course.book Page 2 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO

• O modelo de dados básico e o visualizador de tabelas


• Considerações sobre scripts
• Referências circulares
• Chaves sintéticas e Tabelas sintéticas
• A verificação de números
• Conceitos básicos do QVD
• Conceitos básicos de layout de desenho para desenvolvedores

Logística do Curso
Preparando o Seu Computador para a Aula
Quando o ambiente de treinamento não estiver pré-configurado, o instrutor
fornecerá o material do curso. O arquivo será extraído automaticamente a
partir do arquivo no diretório padrão
C:\QlikViewTraining\DeveloperI\
Crie um atalho do Windows para essa pasta e o coloque na sua área de
trabalho.
Crie também um atalho do Windows para a pasta de documentação (veja a
seguir) e o coloque na sua área de trabalho.
C:\Arquivos de Programas\QlikView\Documentation.

Notas
Versões do Programa
Este curso foi criado usando a versão em inglês do QlikView 9.00, Beta 1
executada no Windows XP. Assim, se forem usados outros sistemas
operacionais ou idiomas, também poderão ser observadas pequenas
diferenças na aparência das janelas e caixas de diálogo.

Formatos de Texto deste Material


Os exercícios e as ações que devem ser executados por você, o aluno, serão
indicados pelo ícone do QlikView, como se pode ver a seguir:

Tarefa:
Este é um exemplo das instruções que você veria para fazer um exercício em
uma sequência de passos –
1 Clique no botão Iniciar
2 Localize o ícone do QlikView
3 Clique no ícone do QlikView para acionar o programa

2
QV_Developer_I_Course.book Page 3 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO

Todos os comandos, nomes de menus, caixas de diálogo e botões utilizam o


seguinte estilo de fonte: Arquivo - Abrir
Todos os nomes de listas, gráficos e dados específicos em listas etc. utilizam
o seguinte estilo de fonte: País
Todos os nomes de arquivo utilizam o seguinte estilo de fonte:
QlikViewDeveloperCourse.qvw

Nota sobre os Exercícios: Os exercícios do curso podem ser feitos de forma


independente, abrindo os arquivos relevantes nas pastas do capítulo
(c:\QlikViewTraining\DeveloperI\QVDeveloperI_Chapter05.qvw, por exemplo), ou
podem ser feitos sequencialmente usando o arquivo QVDeveloperI_Student.qvw no
diretório c:\QlikViewTraining\DeveloperI. Se você optar pela abordagem sequencial,
basta navegar até a pasta do capítulo relevante para obter os arquivos
complementares e as fontes de dados.

As Dicas e Notas estão destacadas em um fundo sombreado, como


mostrado a seguir:

Esta frase de exemplo é usada para esclarecer pontos importantes do texto, dicas e
notas que devem ser considerados enquanto você trabalha com o material do curso.

3
QV_Developer_I_Course.book Page 4 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO

4
QV_Developer_I_Course.book Page 5 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | O AMBIENTE DO QLIKVIEW

2 O AMBIENTE DO QLIKVIEW

Objetivos
• Compreender o ambiente do QlikView
• Examinar os produtos QlikView
• Definir o conteúdo de um arquivo QlikView

O QlikView é uma plataforma revolucionária que simplifica análises e


decisões para todos. É fácil de utilizar e fornece recursos de análise em
memória super-rápida por meio da integração e apresentação dinâmicas
de dados a partir de várias fontes.
O QlikView oferece análises e relatórios
• Fáceis de usar
• Amplamente distribuídos
• Flexíveis
• Representativos
Os arquivos QlikView podem ser implantados para usuários em redes
corporativas ou por meio de sofisticados portais baseados na Web e podem
ser exibidos em vários clientes diferentes. Alguns dos clientes de análise mais
comuns para arquivos QlikView incluem clientes de objetos Java, de plug-in
do Internet Explorer, AJAX (Asynchronous JavaScript and XML) Zero
Footprint e baseados no Windows. Os arquivos de análise QlikView
também podem ser enviados por e-mail, como um documento do Word
ou do Excel, e podem ser protegidos de várias maneiras diferentes.
Os arquivos QlikView são criados usando o QlikView Desktop e são
implantados e distribuídos usando o QlikView Server e o QlikView
Publisher. Os usuários podem acessar os arquivos com o QlikView nos
vários tipos de clientes relacionados acima.

Os Produtos QlikView
Os produtos QlikView incluem:
• Desktop — para criar um aplicativo QlikView totalmente funcional
• Clients — para o Usuário Final
• Server — para Implantação de aplicativos QlikView
• Publisher — para Distribuição de aplicativos QlikView

5
QV_Developer_I_Course.book Page 6 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | O AMBIENTE DO QLIKVIEW

QlikView Desktop
O QlikView gerencia informações da mesma forma que o cérebro humano.
Assim como o cérebro humano, o QlikView faz conexões associativas com
as informações que estão sendo processadas. Você – e não a base de dados –
decide quais perguntas devem ser feitas. Basta clicar no item sobre o qual
deseja obter mais informações. Frequentemente, os sistemas convencionais
de pesquisa de informações requerem uma abordagem de cima para baixo,
enquanto o QlikView permite iniciar com quaisquer dados,
independentemente de sua localização na estrutura de dados.
Muitas vezes, a recuperação de dados em sistemas convencionais é uma
tarefa complexa que requer conhecimento abrangente da estrutura das bases
de dados e da sintaxe da linguagem de consulta. Normalmente, o usuário
fica limitado a rotinas de pesquisa predefinidas. O QlikView revoluciona
esse quadro, possibilitando a livre seleção dos dados mostrados na tela com
um clique do mouse.
O QlikView é flexível. Você é quem decide como o programa será usado. O
QlikView ajuda a obter uma visão geral unificada e coerente dos dados em
diferentes fontes de dados. O QlikView pode ser usado com praticamente
qualquer base e/ou fonte de dados.
Com o QlikView, é possível
• criar uma interface do usuário final flexível para um warehouse de
informações
• obter instantâneos das relações de dados
• criar apresentações com base nos dados
• criar tabelas e gráficos dinâmicos
• executar análises estatísticas
• vincular descrições e multimídia aos dados
• construir seus próprios sistemas especializados
• criar novas tabelas e mesclar informações de diversas fontes
• construir seu próprio sistema de inteligência de negócios
Alguns exemplos de aplicações QlikView em uso no momento
compreendem sistemas financeiros, análise de vendas, administração de
recursos humanos, análise de mercado, suporte ao cliente, administração de
projetos, controle de produção, inventários de estoque e compras. Você
pode até mesclar os diferentes aplicativos para obter visões gerais
informativas totalmente novas.
Um documento QlikView não é por si só uma base de dados, apesar de cada
arquivo Qlikview conter seu próprio repositório de dados que é atualizado
cada vez que o script é executado.

6
QV_Developer_I_Course.book Page 7 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | O AMBIENTE DO QLIKVIEW

O conteúdo de um arquivo QlikView típico é mostrado a seguir:

Figura 1. A estrutura de um arquivo QVW e sua relação com fontes de dados externas.

Nós trabalharemos em como criar um arquivo QlikView desde o início,


com um enfoque quase integral sobre o script e usando alguns recursos
de exibição de dados para assegurar que os dados sejam interpretados
corretamente.

7
QV_Developer_I_Course.book Page 8 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 9 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | A METODOLOGIA DE DESENVOLVIMENTO DO QLIKVIEW

3 A METODOLOGIA DE DESENVOLVIMENTO DO QLIKVIEW

Objetivos
• Compreender a importância de Importar/Exportar Documento/
Pasta XML
• Compreender a importância de usar uma abordagem sistemática para
desenvolver aplicativos QlikView
• Saber quando usar o SAFE

Importar/Exportar Layouts de Pasta e Documento como XML


O QlikView pode exportar e importar documentos ou pastas (excluindo os
dados) QlikView como xml. Esse recurso pode ser usado para facilitar o uso
de software de controle de versão de terceiros com arquivos qvw,
eliminando a necessidade de verificar conjuntos de dados muito grandes.

Plano de Projeto do QWT (Qlik Wholesale Trade)


O Plano de Projeto de BI (Business Intelligence) do QWT foi incluído neste
curso como um exemplo de um plano de projeto que você pode receber no
seu ambiente de trabalho normal. Sua finalidade não é tornar-se um plano
totalmente configurado com gráficos de tempo, responsabilidades etc. Ele
foi criado a fim de fornecer um objetivo geral para alguns dos exercícios que
serão realizados durante o curso. O plano de projeto será usado como um
guia para o desenvolvimento do script de carga requerido para o documento
QlikView resultante. Nós consultaremos o documento do plano de projeto
durante todo o curso, então é recomendável mantê-lo aberto no seu
computador para que possa ser acessado facilmente.
O plano de projeto está disponível no material do curso com o nome
QWT BusinessIntelligencePlan.pdf.

Nota: o plano de projeto é usado como referência durante todo o curso.

Revisão do Plano de Projeto


Se você abrir o documento Plano de Projeto de BI do QWT, verá que ele
inclui as seguintes seções:
Medidas Principais: aqui, você encontrará algumas das expressões que serão
necessárias na criação do documento QlikView. Alguns desses cálculos serão
usados no script de carga, e outros serão usados em objetos de pasta, como
gráficos, tabelas dinâmicas, caixas de texto etc.

9
QV_Developer_I_Course.book Page 10 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | A METODOLOGIA DE DESENVOLVIMENTO DO QLIKVIEW

KPIs (Key Performance Indicators): esta seção inclui KPIs de nível superior
que podem ser exibidos em uma perspectiva de painéis no documento
QlikView.
Dimensões Principais: esta seção inclui uma lista de algumas das principais
dimensões que serão usadas em todo o aplicativo.
Tendências: fornece uma lista dos campos de dimensão de tempo
importantes que serão necessários para analisar tendências ao longo
do tempo.
Filtros de Seleção Principais: inclui uma lista dos campos requeridos no
documento QlikView para a seleção e filtragem de dados.
Segurança: contém os requisitos de acesso seguro do documento QlikView.
Descrições de Dados de Origem: fornece os locais de dados de origem e
descrições em nível de campo de cada uma das fontes de dados.
Cada uma dessas seções também pode incluir uma ou mais Regras de
Negócios para ajudar o desenvolvedor do aplicativo a compreender e
disponibilizar os recursos e a funcionalidade apropriados para os usuários
deste documento QlikView.

Metodologia SAFE
Este plano de projeto consiste no tipo de artefato de projeto produzido
usando a metodologia de projeto SAFE do QlikView. Essa metodologia
inclui um processo inteiro de funções e responsabilidades, fases do projeto,
listas de verificação e etapas, sendo usado em campo pelos consultores dos
Serviços Profissionais QlikView.
As Fases do Projeto do SAFE incluem:
• Definir
• Preparar
• Desenvolver
• Distribuir
• Fechar
É fácil seguir o processo SAFE. As fases vão do início à conclusão do projeto
e abordam todas as principais tarefas envolvidas. Esse processo descreve o
fluxo normal e as tarefas que ocorrem em um projeto padrão. A
metodologia SAFE completa é usada para projetos do QlikView que
atendem a pelo menos um dos seguintes critérios:
• Mais de 100 Usuários do QlikView
• Mais de 6 pessoas envolvidas no projeto
• O QlikView será implantado em mais de um local
• O tempo do projeto é maior que 4 semanas

10
QV_Developer_I_Course.book Page 11 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | A METODOLOGIA DE DESENVOLVIMENTO DO QLIKVIEW

Evidentemente, quando requerido, é possível usar partes do SAFE, até


mesmo em projetos menores, sem necessariamente usar o processo inteiro.
O QlikView oferece treinamento na Metodologia SAFE ministrado por
instrutor e sob demanda. A principal vantagem de uso do SAFE é medido
em termos de economia de tempo e aceitação do usuário. Existe uma
tendência de iteração nos projetos de desenvolvimento do QlikView, de
forma que é benéfico ter um plano sistemático.

11
QV_Developer_I_Course.book Page 12 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 13 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | IMPLANTAÇÃO

4 IMPLANTAÇÃO

Objetivos
• Examinar as opções de implantação do QlikView
• Compreender os benefícios funcionais e comerciais de cada uma delas
• Discutir a implantação com a classe (opcional)

O QlikView pode ser implantado em três configurações. São elas:


• QlikView Standalone
• QlikView Server
• QlikView Publisher

QlikView Standalone

Figura 2. A implantação QlikView Standalone pode consistir em uma única instância


do QlikView Desktop ou do QlikView Personal Edition. Essa configuração é usada nas
aulas de treinamento do QlikView Designer e Developer.

13
QV_Developer_I_Course.book Page 14 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | IMPLANTAÇÃO

QlikView Server

Figura 3. O cenário de implantação QlikView Server oferece flexibilidade para incluir


atualizações de dados no Ambiente do QlikView.

14
QV_Developer_I_Course.book Page 15 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | IMPLANTAÇÃO

QlikView Publisher

Figura 4. A implantação QlikView Publisher adiciona recursos de segurança,


distribuição de documentos e atualização a uma solução que engloba toda a empresa.

15
QV_Developer_I_Course.book Page 16 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 17 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

5 INTRODUÇÃO AOS DADOS E SCRIPTS

Objetivos
• Compreender as bases de dados relacionais e as estruturas de dados
• Examinar a base de dados QWT.mdb usada neste curso
• Trabalhar com o Editor de Scripts do QlikView

Caso você não tenha muita experiência anterior com bases de dados,
fornecemos uma breve introdução aos conceitos básicos das estruturas de
dados e das bases de dados. Essa introdução ajudará na criação de
documentos QlikView baseados nos seus próprios dados.

Bases de Dados Relacionais


Normalmente, os dados são armazenados em bases de dados relacionais,
como MySQL, Microsoft SQL Server, Microsoft Access, Oracle, DB2,
Sybase, Informix e Teradata.
Uma base de dados relacional é definida por diversas regras. Uma delas é
que a base de dados é estruturada de forma que as informações se
relacionam entre várias tabelas, e cada uma consiste em linhas e colunas.

Figura 5. Estrutura da base de dados relacional: Cada Tabela A: consiste em linhas de


dados organizadas pela Coluna B: e vinculadas pelos Campos chave C:.

Uma outra regra é que a base de dados deve oferecer suporte a uma
linguagem de consulta. A linguagem de consulta de base de dados mais
comumente usada é o SQL, usado para consultar, definir e manipular os
dados. Um dos comandos SQL de uso mais comum é o comando de
consulta ou SELECT. Os seguintes comandos de exemplo retornam linhas
de dados referentes aos valores selecionados e filtrados.

17
QV_Developer_I_Course.book Page 18 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

SELECT *
FROM Products
WHERE ProductID = 1004005
SELECT ProductName, CategoryID, QuantityPerUnit,
Unit-Price
FROM Products
WHERE ProductID = 1004005 OR
ProductID = 1005006
Figura 6. Exemplos de consulta de uma base de dados relacional

Outras Estruturas de Dados


É possível usar muitos outros tipos de dados no QlikView, incluindo
arquivos de texto delimitados por caracteres, planilhas do Microsoft Excel,
arquivos XML, tabelas HTML e arquivos QVD (QlikView Data).
O ideal é que a primeira linha de um arquivo de texto contenha informações
de cabeçalho que identifiquem os valores contidos nas linhas abaixo.
Normalmente, os campos ou valores no arquivo são separados por
caracteres, geralmente vírgulas, tabulações ou um ponto-e-vírgula. Portanto,
quando lido no QlikView, um arquivo de texto estruturado é equivalente a
uma tabela com colunas e linhas.
Customer ID,Customer,Address,City,Zip,Country
1002,Adder Inc.,"9, rue de la Poste",Montreal,,Canada
1004,Alf Jequitaine,Rue de Gaulle
13,Paris,75664,France
1010,Atlantic Marketing,Bahnhof Strasse 3,Berlin,749
33,Germany
1017,Barley Foods,2 Atlanta Road,Washington
D.C.,3582-2134,U.S.A.
1023,Bearings Bank Ltd.,"88, Chamberlain
Square",Manchester,,Great Britain
Figura 7. Exemplo de arquivo de texto delimitado por vírgulas

O QlikView interpreta os dados em arquivos do Excel padrão por meio do


formato biff (Binary Interchange File Format). Para ler um arquivo Excel no
QlikView, deve haver algum tipo de estrutura de tabela no arquivo Excel
(colunas e linhas diretas). O QlikView tem várias funções para interpretar o
arquivo do Excel no Assistente para Arquivos de Tabelas a fim de obter os
dados corretos a partir do arquivo da tabela.

18
QV_Developer_I_Course.book Page 19 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

IDCliente Cliente Endereço Cidade CEP País


1002 Adder Inc. 9, rue de la Poste Montreal Canadá
1004 Alf Jequitaine Rue de Gaulle 13 Paris 75664 França
1010 Atlantic Marketing Bahnhof Strasse 3 Berlim 749 33 Alemanha
1017 Barley Foods 2 Atlanta Road Washington 35822 EUA
D.C.
1023 Bearings Bank Ltd. 88, Chamberlain Manchester Grã-
Square Bretanha
1027 Captain Cook's Surfing Westkapelseweg 5 Arnhem Países
School Baixos
1057 Elektrolumen Bergmansgatan 7 Malmoe Suécia
Figura 8. Arquivo de dados do Excel

O QlikView tem um Assistente de Arquivo XML que analisará um arquivo


XML e poderá gerar vários comandos load, um para cada tabela
encontrada.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <TableBox>
- <_empty_>
<Cliente_x0020_ID>1002</Cliente_x0020_ID>
<Cliente>Adder Inc.</Cliente>
<País>Canadá</País>
<Endereço>9, rue de la Poste</Endereço>
<Cidade>Montreal</Cidade>
</_empty_>
- <_empty_>
<Cliente_x0020_ID>1004</Cliente_x0020_ID>
<Cliente>Alf Jequitaine</Cliente>
<País>França</País>
<Endereço>Rue de Gaulle 13</Endereço>
<Cidade>Paris</Cidade>
</_empty_>
</TableBox>
Figura 9. Arquivo de dados XML

19
QV_Developer_I_Course.book Page 20 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

Um arquivo QVD contém uma tabela de dados exportada do QlikView.


O QVD é um formato QlikView nativo e pode ser gravado e lido apenas
pelo QlikView. O formato de arquivo é otimizado para agilizar a leitura
de dados de um script do QlikView, mas também é bastante compacto.
Normalmente, a leitura de dados de um arquivo QVD é de 10 a 100 vezes
mais rápida do que a leitura de outras fontes de dados.

Comparando Estruturas de Bases de Dados às Estruturas de Dados


do QlikView

Figura 10. Estrutura da tabela da base de dados relacional

O exemplo acima mostra uma estrutura de dados extraída da base de dados


do Access com a qual trabalharemos no curso. A figura mostra oito tabelas
que têm relacionamentos definidos ou estão associadas por meio de
campos(-chave) comuns. O QlikView permite ao desenvolvedor definir
implicitamente os relacionamentos ou junções entre tabelas, mesmo que os
campos não tenham o mesmo nome ou tipo na origem.
No entanto, o QlikView define automaticamente relacionamentos ou
associações entre tabelas por meio de campos com nomes semelhantes.
Nesse exemplo, todos os campos chave têm exatamente o mesmo nome em
suas respectivas tabelas. Claro que, em uma base de dados, nem sempre isso
acontece, de forma que também aprenderemos no curso métodos básicos de
criação das associações corretas entre tabelas no QlikView. Outra coisa que
aprenderemos é como evitar associações indesejadas entre tabelas no
QlikView com base em campos com nomes semelhantes. (Por exemplo, você
não desejaria vincular o campo Endereço de uma tabela Fornecedor com o
campo Endereço da tabela Cliente.)

20
QV_Developer_I_Course.book Page 21 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

A ilustração a seguir é um exemplo de um esquema de estrutura de dados


que pode ser visto no QlikView. O campo EmployeeID vincula as tabelas
Employee, Sales-Persons e Employee_Mail à tabela Orders. Se você seguir
as linhas, verá os campos que vinculam toda a estrutura. Se dois registros
em tabelas diferentes tiverem o mesmo nome em qualquer dos campos
vinculados, eles serão associados.

Figura 11. Um exemplo de estrutura de dados do QlikView

Estruturas de Dados no QlikView


Cada campo de uma tabela de dados carregada no QlikView se torna um
campo na estrutura de dados associativa do QlikView. Os campos que
aparecem em mais de uma tabela e têm nomes idênticos serão associados e
identificados como Campos chave. Cada campo pode ser apresentado na
forma de lista no documento QlikView. Quando você faz uma seleção em
uma lista (clicar em um ou mais valores), o QlikView apresenta
imediatamente as conexões lógicas baseadas na estrutura de dados interna e
são identificados os valores associados com a sua seleção. A figura a seguir

21
QV_Developer_I_Course.book Page 22 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

ilustra com o QlikView exibe valores de campos associados quando um


valor OrderDate específico é selecionado.

Figura 12. Associações de dados do QlikView

Arquivos de Fonte de Dados


Na primeira parte do curso, carregaremos dados de acordo com o
documento do nosso plano de projeto. Os dados principais virão de uma
base de dados do Access denominada QWT.mdb
As fontes de dados são conectadas logicamente por campos comuns
(também conhecidos como campos chave). No caso das tabelas que contêm
informações sobre os funcionários e os pedidos da empresa, existem os
campos EmployeeID e EmpID em comum. Contudo, um dos campos
precisa ser renomeado para que o QlikView os associe no nosso aplicativo.
Também temos o campo SupplierID, que é um campo comum da base de
dados QWT e da tabela que contém dados dos fornecedores (que se
encontra em um arquivo XML). Você também pode observar que existem
campos com nomes idênticos em tabelas que não queremos associar, como
Address nas tabelas Customers e Suppliers. Esses campos também deverão
ser renomeados para evitar uma associação não intencional do QlikView.

A Fonte de Dados QWT Principal


De acordo com o nosso plano de projeto, a base de dados QWT.mdb
contém as tabelas Customers, Divisions, Shippers, Shipments, Products,
Categories, Orders e Order Details. Essas tabelas serão carregadas mas,
primeiro, precisamos criar uma conexão com a base de dados. É possível
conectar-se a uma base de dados por meio de uma conexão ODBC ou OLE
DB. Em geral, se houver uma conexão OLE DB disponível, ela deverá ser
usada. Neste material de treinamento, será usada uma conexão OLE DB
com a base de dados do Access.

22
QV_Developer_I_Course.book Page 23 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

Os Arquivos de Dados QWT Secundários


Além da base de dados principal, nosso plano de projeto também exige a
extração de dados das seguintes fontes de dados:

Arquivos Excel
• Budget.xls
• EmpOff.xls

Arquivos XML
• Suppliers.xml

Nota: esses arquivos são fornecidos para fins de referência juntamente com o plano
de projeto e não devem ser usados nos exercícios dos capítulos formais do curso.

Introdução aos Scripts


Para carregar dados no QlikView, o desenvolvedor cria instruções para a
recuperação e o tratamento de dados. Essas instruções são gravadas em um
script de carga criado e mantido no QlikView.
O script pode especificar instruções de como o QlikView deve interpretar
diferentes conjuntos de dados. O QlikView pode carregar e interpretar os
seguintes tipos de dados:
• O resultado de uma consulta de base de dados feita pelo SQL via OLE
DB/ODBC.
• Qualquer tipo de arquivo de texto delimitado por caracteres, como
arquivos separados por vírgulas.
• Arquivos com formato de posição do valor de campo fixo.
• Arquivos Excel em formato BIFF padrão.
• Tabelas XML
• Tabelas HTML
• Arquivos QVD (QlikView Data)
• Arquivos do QlikView criados anteriormente (também chamados de
Carga binária)
• Arquivos Dif (formato de exportação comum do AS/400).
• Fontes de dados personalizadas (por exemplo, serviços da Web) através
de uma interface .dll

23
QV_Developer_I_Course.book Page 24 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

24
QV_Developer_I_Course.book Page 25 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Introdução ao Editor de Scripts


Vamos examinar a caixa de diálogo Editar Script, que pode ser usada para
gerar, inserir e editar comandos de script de carga do QlikView.
Tarefa:
1 Acione o QlikView
2 Os exercícios do curso podem ser feitos de forma independente, abrindo
os arquivos relevantes nas pastas do capítulo
(c:\QlikViewTraining\DeveloperI\QVDeveloperI_Chapter05.qvw, por
exemplo), ou podem ser feitos sequencialmente usando o arquivo
QVDeveloperI_Student.qvw no diretório
c:\QlikViewTraining\DeveloperI. Se você optar pela abordagem
sequencial, basta navegar até a pasta do capítulo relevante para obter os
arquivos complementares e as fontes de dados.
3 Crie um novo documento selecionando o comando Novo no menu
Arquivo ou usando o botão da barra de ferramentas .
4 Nomeie e salve o documento QlikView em um local fácil de lembrar;
o ideal é usar a pasta do capítulo desta seção do curso.
5 Escolha Editar Script no menu ou no botão da barra de ferramentas.
A caixa de diálogo a seguir aparecerá na tela. Como você pode ver, existem
diversos comandos na forma de comandos de menu, botões da barra de
ferramentas e botões em caixas de diálogo. A janela de edição na qual seu
script será localizado ocupa a maior parte da caixa de diálogo.

DICA: para obter uma descrição completa de todas as caixas de diálogo


e configurações atuais disponíveis na caixa de diálogo Editar Script, con-
sulte o documento ReferenceManual.pdf. Normalmente, esse documento
de referência é instalado durante a instalação padrão do QlikView e colo-
cado em C:\Arquivos de Programas\QlikView\Documentation

25
QV_Developer_I_Course.book Page 26 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

Figura 13. Caixa de diálogo Editar Script

Barra de Ferramentas Editar Script


A barra de ferramentas contém os seguintes controles:
Recarregar
Executa o script, fecha a caixa de diálogo Editar Script e abre
a página Propriedades da Pasta: Campos.
Depurar
Inicia a execução do script no Depurador. O depurador
procura erros no script. É possível monitorar cada comando de
script e examinar os valores das variáveis durante a execução
do script.
Salvar Todo o Documento
Salva o documento .qvw ativo em um arquivo. Os dados,
o script e o layout são salvos.

26
QV_Developer_I_Course.book Page 27 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

Imprimir Aba
Permite imprimir o conteúdo da aba ativa no momento.
Recortar
Recorta o texto do script selecionado e o armazena na Área de
Transferência.
Copiar
Copia o texto do script selecionado.
Colar
Cola o texto do script armazenado na Área de Transferência.
Pesquisar
Pesquisa no script os caracteres de texto especificados, somente na
aba atual.
Incluir Nova Aba
Inclui uma nova aba de script. O script é executado aba por aba, da
esquerda para a direita.
Visualizador de Tabelas
Exibe o visualizador de tabelas gráficas dos dados atuais.
Também existem outros comandos úteis nas cinco listas dropdown
do menu na parte superior da caixa de diálogo.

Comandos do Menu Editar Script


No menu ARQUIVO, você encontrará a opção para exportar o script como
um arquivo de script (com a extensão .qvs) ou imprimir os comandos de
script. Se for necessário trabalhar com um script oculto, ele poderá ser
exposto nesse menu.
O menu EDITAR compreende todos os comandos necessários para editar o
conteúdo do painel de edição de texto. Além dos comandos para selecionar,
copiar, recordar e colar texto, você encontrará as funções Inserir Arquivo,
usada para inserir um arquivo de script, e Localizar/Substituir, que permite
pesquisar caracteres específicos de texto. Esse menu também pode ser usado
para comentar partes do script.
Da mesma forma que em outros aplicativos padrão do Windows, vários
desses comandos podem ser executados por meio de atalhos de teclado
(por exemplo, CTRL+A selecionará todo o texto).
O menu ABA contém os comandos necessários para gerenciar as abas
do script.

27
QV_Developer_I_Course.book Page 28 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

O menu CONFIGURAÇÃO inclui o comando Configurar, que abre a aba


Fonte da caixa de diálogo Preferências do Usuário, na qual você pode
definir o tipo e a cor da fonte dos diversos tipos de texto do script.
Os comandos do menu AJUDA abrem os arquivos da Ajuda do QlikView.
(Para obter mais informações sobre a caixa de diálogo Editar Script,
consulte a Ajuda imediatamente.)

Área Comandos
A área Comandos mostra uma caixa para cada comando na aba de script
ativa. A caixa descreve os recursos mais importantes do comando e fornece
uma forma mais fácil de navegar pelo script.

Figura 14. A seção Comandos da caixa de diálogo Editar Script.

Painel de Ferramentas da caixa Editar Script


O Painel de Ferramentas tem quatro páginas com abas que contêm
funções para a geração de scripts: Dados, Dados Personalizados,
Funções e Configuração.

Aba Dados
Na Aba Dados, existem três seções de agrupamento que fornecem o
controle e a funcionalidade para trazer dados para o documento QlikView.
Cada um desses três agrupamentos são definidos detalhadamente a seguir.

Figura 15. A aba Dados

28
QV_Developer_I_Course.book Page 29 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

Agrupamento de base de dados


Os comandos do grupo Base de Dados são usados para criar uma conexão
com uma base de dados e selecionar campos de uma fonte de dados. Se
estiver usando um DBMS (Database Management System) comercial,
poderá usar o ODBC ou o OLE DB como interface entre o QlikView e a
base de dados.
OLE DB (Object Linking and Embedding Database)
Selecione esta alternativa para acessar bases
de dados através do OLE DB.
ODBC (Open Database Connectivity) Selecione esta
alternativa se desejar acessar bases de dados
através de um driver ODBC.
Conectar… Use este botão para abrir a caixa de diálogo
Propriedades de vinculação de dados e
selecionar uma fonte de dados OLE DB ou
ODBC, e gerar o comando connect
apropriado no script de carga.
Selecionar… Depois de ter estabelecido a conexão de
dados, clique nesse botão para abrir a caixa
de diálogo Criar Comando Select. Em
seguida, você poderá especificar campos e
tabelas a partir da fonte de dados escolhida,
e gerar o comando SELECT apropriado no
script de carga.

Agrupamento Dados de Arquivos


Os comandos no grupo Dados de Arquivos são usados para gerar os
comandos de script Load para ler dados de arquivos.
Caminhos Relativos Habilite esta opção se o local dos dados for
relativo a ou estiver no mesmo caminho do
diretório de trabalho atual. Caso contrário,
será usado como padrão o local absoluto ou
o caminho alternativo para comandos
gerados no script.
Usar FTP Marque esta caixa de seleção para poder
selecionar arquivos de um servidor de
arquivos FTP ao solicitar Arquivos de
Tabela, Arquivos do QlikView ou comandos
de script Include.

29
QV_Developer_I_Course.book Page 30 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

Arquivos de Tabela… Aciona a caixa de diálogo Abrir Arquivos


Locais, que lista vários formatos de arquivo
de texto, incluindo arquivos Microsoft Excel
(.xls) e QVD (.qvd). Selecionar um ou vários
arquivos e pressionar OK gerará um ou
vários comandos LOAD de acordo com as
opções selecionadas no assistente.
Arquivo QlikView… Clique nesse botão para abrir a caixa de
diálogo Abrir Arquivo QlikView, que lista os
arquivos QlikView (*.qvw). Ao selecionar
um arquivo e pressionar OK, será gerado um
comando binary. É permitido apenas um
comando binary em um script de carga do
QlikView, e ele deve ser o primeiro comando
no script de carga.
Arquivos Web… Abre a caixa de diálogo Assistente para
Arquivos de Tabelas: Fonte para inserir um
URL como fonte de sua tabela de dados.
Dados do Campo… Abre o Assistente de Arquivo na página
Fonte, na qual é possível carregar o
conteúdo de um arquivo já carregado.

Agrupamento Dados Inline


Os comandos nesse agrupamento de opções são usados para gerar os
comandos de script para criar dados inline no script.
Assistente Inline… Este botão abre a caixa de diálogo
Assistente para Dados Inline para ajudar
na criação de um comando Load Inline
usando um controle do tipo planilha.
Acesso do Usuário… Abre a caixa de diálogo Assistente de
Tabelas de Restrição de Acesso para
ajudar a criar um comando Load Inline
especial para ser usado em um acesso de
seção (segurança do aplicativo).

30
QV_Developer_I_Course.book Page 31 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

Aba Dados Personalizados


O QlikView oferece uma interface que permite programar interfaces
personalizadas para ler vários tipos de fontes de dados. O caso típico é de
dados disponíveis através de Serviços da Web ou de aplicativos de software
‘desenvolvidos internamente’ específicos do setor. Esse plug-in é
programado de acordo com especificações como fonte aberta e compilado
como um dll. (O código de modelo será fornecido sob pedido do QlikTech.)
O arquivo dll é então colocado no mesmo diretório que QV.EXE e
aparecerá na caixa dropdown para seleção.

Figura 16. A aba Dados Personalizados

Conectar… Abre uma caixa de diálogo para conectar-se


à fonte de dados personalizados. Essa caixa
de diálogo pode parecer diferente para cada
conjunto de dados personalizados
dependendo da fonte de dados usada.
Selecionar… Permite selecionar campos da fonte de dados
personalizados. Essa caixa de diálogo
também pode parecer diferente com cada
fonte de dados usada.

31
QV_Developer_I_Course.book Page 32 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

Aba Funções
Os comandos nessa aba são usados para gerar as funções do QlikView a
serem usadas nos comandos de script. Segue uma descrição de uso de cada
recurso nessa aba.

Figura 17. A aba Funções

Nome da Função: Lista as categorias nas quais as funções estão


agrupadas, como Data e Hora, Caractere
etc. Selecione uma categoria na lista para ver
as funções correspondentes na lista
dropdown Nome da Função abaixo.
Nome da Função: Contém uma lista de funções de script
padrão do QlikView. A lista pode ser
reduzida selecionando primeiro uma
categoria na lista Categoria da Função
acima.
Colar: Clique nesse botão depois de selecionar a
função desejada. A função será inserida na
posição atual do cursor no script, na janela
da caixa de diálogo do script.

32
QV_Developer_I_Course.book Page 33 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

Aba Configuração
A aba Configuração contém dois agrupamentos, Privilégios do Script e
Configuração, que são usados para conceder determinados direitos e
configurações no script de carga.

Figura 18. A guia Configuração

Agrupamento Privilégios do Script


Permite ao script Abrir Bases de Dados em modo de Leitura e Gravação
e/ou Pode Executar Programas Externos. Como essas opções podem ter
consequências graves, o QlikView acrescentou uma proteção. Se o seu
script contiver algum desses elementos e você não tiver habilitado essas
configurações, os comandos correspondentes falharão. A configuração
padrão do QlikView é não permitir o Modo de gravação e não Executar
programas externos.
Depois de habilitar o uso de um ou dos dois recursos, será solicitado que
o usuário aprove o script da primeira vez que ele for executado em um
computador. Essa verificação pode ser substituída pelo switch de linha
de comando / nosecurity ou através de uma configuração na página
Segurança das Preferências do Usuário.

Aviso! Tenha bastante cuidado ao usar qualquer dessas opções. Em geral, não é
possível desfazer a alteração da fonte de dados ou a execução de programas
inseguros, e os danos podem ser irreversíveis.

33
QV_Developer_I_Course.book Page 34 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INTRODUÇÃO AOS DADOS E SCRIPTS

Agrupamento Configuração
A opção Encriptar as Credenciais de Conexão do Usuário embaralha o
usuário e a senha da base de dados nos comandos connect do seu script.
É recomendável usar esse recurso, que deve ser desabilitado somente na rara
situação de ser necessário ver erros de script no login da base de dados ou
em situações semelhantes.

DICA: não é necessário que os comandos de script de carga sejam criados e


armazenados no documento QlikView, mas deve haver uma referência a eles, caso
sejam armazenados em um arquivo externo. Isso é feito usando a função Include
disponível no editor de scripts.

34
QV_Developer_I_Course.book Page 35 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONECTANDO FONTES DE DADOS ODBC/OLEDB

6 CONECTANDO FONTES DE DADOS ODBC/OLEDB

Objetivos
• Compreender a sintaxe comum
• Saber a diferença entre Connect, Select, Load
• Escolher ODBC ou OLEDB
• Criar um comando Connect funcional (Exercício)

Este capítulo introduz a capacidade de conectar-se a fontes de dados


externas através de conexões ODBC ou OLEDB. É necessário ter uma
conexão para que determinados tipos de dados possam ser carregados no
QlikView com o script de carga. Essa conexão é criada no Editor de Scripts
do QlikView.

Sintaxe
Nesta seção, abordaremos os comandos mais comuns (CONNECT, SELECT,
LOAD) no script para identificar e carregar dados no QlikView. Cada um
desses comandos pode ser gerado usando assistentes. Isso será praticado nas
seções seguintes; porém, primeiro, vamos examinar alguns exemplos desses
comandos, como e onde eles podem ser usados em um script de carga do
QlikView.
Também veremos algumas das opções disponíveis para renomear um
campo, o que é muito importante ao trabalhar com o QlikView. Para obter
detalhes completos e atualizados sobre a sintaxe dos comandos de script,
sempre consulte os Manuais de Referência do QlikView ou o arquivo
da Ajuda.
Comando Connect
O comando connect é usado para estabelecer uma conexão com uma base
de dados através de uma interface ODBC ou OLE DB.
Quando essa conexão for estabelecida, ela será usada até que o comando
connect seja definido novamente. É possível definir vários comandos
connect em um script de carga do QlikView, mas, em qualquer momento,
apenas uma conexão de base de dados pode ser aberta.
Se o comando connect for gerado pelo assistente fornecido, qualquer ID de
usuário e qualquer senha fornecidos serão gerados com a sintaxe xuserid is
/ xpassword is embaralhada.

35
QV_Developer_I_Course.book Page 36 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONECTANDO FONTES DE DADOS ODBC/OLEDB

Habilite esta funcionalidade selecionando Encriptar as Credenciais de Conexão do


Usuário na guia Geral da caixa de diálogo Preferências do Usuário, que se
encontra no menu Configuração….)

Se ODBC estiver antes de connect, a interface ODBC será usada; caso


contrário, OLE DB será usado por padrão.
Quatro exemplos de comandos connect:
ODBC connect to [SQLDATA;database=SQL1] (UserId is
sa, Password is admin);
ODBC CONNECT TO [MS Access
Database;DBQ=data\sampledata.mdb ];
ODBC connect to
[COSQL01;DATABASE=SALESDATA;Trusted_Connection=Yes];
CONNECT TO[Provider=Microsoft.Jet.OLEDB.4.0;User
ID=Admin; Data Source=Datasources\QWT.mdb];
A fonte de dados especificada por esse último comando connect é usada por
todos os comandos SELECT subsequentes, até que seja encontrado um novo
comando connect.

Comando Select
O comando SQL SELECT é usado para identificar os campos e as tabelas
que devem ser carregados da conexão da base de dados atual.
Um exemplo de dois comandos SELECT:
SQL SELECT * FROM FACILITIES;
SQL SELECT DISTINCT
I.AddressID,
Name,
Address,
PostalCode
FROM [Invoice] I, [Address] A
WHERE I.InvoiceType is not null and
I.InvoiceDate >= '2008-01-01' and
I.AddressID = A.AddressID;
É possível usar qualquer comando SELECT válido, mas lembre-se de que os
drivers ODBC podem impor limitações em relação à sintaxe aceitável par
uma determinada conexão de base de dados.

36
QV_Developer_I_Course.book Page 37 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONECTANDO FONTES DE DADOS ODBC/OLEDB

Limitações de ODBC:
Segue uma listagem parcial das limitações impostas pelos drivers ODBC:
• Não é possível usar funções do QlikView nos comandos SELECT.
• Podem ocorrer divergências em relação à Sintaxe SQL. Como o
comando SELECT é interpretado pelo driver ODBC selecionado,
provavelmente a sintaxe vai variar de acordo com cada conexão ODBC
exclusiva. Por exemplo, às vezes, o driver ODBC não aceita alguns tipos
de sinais de aspas. Segue um outro exemplo que usa o operador as.
Às vezes, as não é permitido, ou seja, o nomedoalias deve seguir
imediatamente após o nomedocampo.
Às vezes, as será compulsório, se for usado um nomedoalias.
Às vezes, distinct, as, where, group by, order by ou union não são
suportados.
• Os nomes de campos e de tabelas deverão ser colocados entre aspas ou
colchetes, se contiverem espaços ou caracteres especiais.
• Os tipos de sinais de aspas podem variar no script de acordo com a
conexão ODBC. Quando o script é gerado automaticamente pelo
QlikView, os sinais de aspas utilizados são os preferidos pelo driver
ODBC, conforme especificado na definição da fonte de dados no
comando connect.

Vantagem da Junção por Union


Um benefício de usar o comando SELECT é a capacidade de concatenar
vários comandos em um usando um operador union (se suportado por uma
conexão ODBC específica):
comandoselect union comandoselect
Comando Load
O comando load carrega campos de um arquivo ASCII digitado, dos dados
definidos no script, de uma tabela de entrada carregada anteriormente, de
um campo carregado anteriormente, do resultado de um comando select
seguinte ou gerando dados automaticamente.

37
QV_Developer_I_Course.book Page 38 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONECTANDO FONTES DE DADOS ODBC/OLEDB

Um exemplo de comando Load:


Load [ distinct ] *fieldlist
[( from file [ format-spec ] | from_field field
[format-spec] |
inline [ format-spec ] data |
resident table-label |
autogenerate size)]
[ where criterion | while criterion ]
[ group by fieldlist ]
[ order by field [sortorder] {, field [sortorder]} ]
Onde Distinct é um predicado usado somente quando deve ser carregado o
primeiro dos registros duplicados.
*fieldlist::= ( * | field ) { , field } )
Uma lista dos campos a serem selecionados. O " * " é usado para selecionar
todos os campos da tabela.

38
QV_Developer_I_Course.book Page 39 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Criando uma Conexão com a Base


de Dados
Tarefa:
1 Inicie o QlikView, caso ele ainda não esteja ativo.
2 Selecione Novo no menu Arquivo ou use o botão apropriado na barra de
ferramentas para criar um novo documento QlikView.
3 Selecione Propriedades do Documento no menu Configuração e abra
a aba Geral da caixa de diálogo. Verifique se Gerar Arquivo de Log está
marcado. Assim, será gerado um arquivo de log de execução do script
cada vez que o script de carga for executado.
Ou, como alternativa, você também pode marcar a opção Sempre Usar
Arquivos de Log para Novos Documentos, que se encontra na caixa de
diálogo Preferências do Usuário, na aba Desenho. Então, essa opção
será selecionada automaticamente no futuro.
4 Feche as Propriedades do Documento e Vá para as Preferências do
Usuário no menu Configuração. Na aba Salvar, verifique se Salvar
Antes de Recarregar está marcado. Assim, o QlikView sempre salvará
todos os seus documentos antes de recarregar o documento, de forma
que você não perderá nenhuma alteração feita ao script.
5 Selecione Salvar no menu Arquivo ou use o botão Salvar associado da
barra de ferramentas para salvar um documento. Verifique se você está
na pasta do capítulo e salve seu arquivo com um nome fácil de lembrar.

DICA: normalmente, é recomendável salvar um novo documento antes de editar o


script, de forma que seja possível gerar os caminhos relativos corretos. Isso é
requerido para a portabilidade do documento QlikView.

6 Selecione Editar Script no menu Arquivo ou na barra de ferramentas.


Agora, você criou um novo arquivo de script e, como pode ver, ele já
contém algumas linhas de script. São as variáveis de formato, que são
geradas automaticamente pelo QlikView. As variáveis se baseiam nas
configurações regionais do seu sistema operacional em relação a data,
moeda, hora etc.
7 Selecione OLE DB no grupo Base de Dados da aba Dados e clique em
Conectar para abrir a caixa de diálogo Conectar à Fonte dos Dados.

39
QV_Developer_I_Course.book Page 40 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCISE

Isso abre uma caixa de diálogo na qual você pode escolher dentre vários
provedores OLE DB que estão instalados no seu computador. Como
estamos trabalhando com uma base de dados do Access, é necessário
selecionar o driver que funciona com esse provedor de base de dados.

Figura 19. A caixa de diálogo Propriedades de vinculação de dados.

8 Selecione o Microsoft Jet 4.0 OLE DB Provider para se conectar à base


de dados do Access.
9 Clique em Próximo para chegar à página de diálogo na qual podemos
selecionar a base de dados à qual nos conectaremos.

40
QV_Developer_I_Course.book Page 41 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

10 Clique no ícone Pesquisar e navegue até o caminho da base de


dados QWT.

Figura 20. Selecionar a base de dados

A base de dados QWT não tem um nome de usuário e uma senha, de


forma que podemos utilizar o padrão.
11 Clique em Conexão de Teste para verificar se o QlikView se conecta
à base de dados e depois em OK para fechar a caixa de diálogo
Propriedades de vinculação de dados.
O Provedor OLE DB Microsoft Jet 4.0 gera o seguinte código para a
conexão com a base de dados:
CONNECT TO
[Provider=Microsoft.Jet.OLEDB.4.0;UserID=Admin; Data
Source=C:\QlikView\Training\Developer1\Chapter06\Dat
a sources\QWT.mdb;Mode=Share Deny

41
QV_Developer_I_Course.book Page 42 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCISE

None;ExtendedProperties=""; Jet OLEDB:System


database="";Jet OLEDB:Registry Path="";Jet
OLEDB:Database Password="";Jet OLEDB:Engine
Type=5;Jet OLEDB :Database Locking Mode=1;Jet
OLEDB:Global Partial Bulk Ops= 2;Jet OLEDB:Global
Bulk Transactions=1;Jet OLEDB:New Data base
Password="";Jet OLEDB:Create System
Database=False;Jet OLEDB:Encrypt Database=False;Jet
OLEDB:Don't Copy Locale on Compact=False;Jet
OLEDB:Compact Without Replica Repair=False;Jet
OLEDB:SFP=False];

Nota: o caminho mostrado na sequência de conexão pode ser diferente do mostrado


acima. Isso depende do local da base de dados QWT.

Devido às propriedades da base de dados, qualquer parte da sequência após


o comando da Fonte de Dados pode ser alterada ou eliminada. A seguir,
você pode ver o que é necessário para a conexão com a base de dados QWT
para o QlikView:
CONNECT TO [Provider=Microsoft.Jet.OLEDB.4.0;User
ID=Admin;Data Source=Datasources\QWT.mdb];
Os comandos necessários na nossa conexão OLE DB são Provider, User ID e
Datasources. Isso pode variar de acordo com a base de dados e os diferentes
drivers OLE DB.
Como você pode ver, podemos usar um caminho relativo da base de dados
em vez de um caminho absoluto. Isso é feito removendo a parte do caminho
referente à pasta na qual salvamos o documento QlikView. A parte do
caminho removida do exemplo acima é:
C:\QlikView\Training\DeveloperI\Chapter06\
Nesse caso, nossa base de dados foi armazenada em uma pasta abaixo, na
qual reside o nosso documento QlikView.

42
QV_Developer_I_Course.book Page 43 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CRIANDO O SCRIPT

7 CRIANDO O SCRIPT

Objetivos
• Comentar o script para referência futura
• Carregar dados com o Editor de Scripts do QlikView
• Acessar o Depurador

Neste capítulo, começaremos a carregar dados no QlikView. Isso é feito


criando um script que define os dados que serão carregados. O script que
escreveremos nesta parte do curso carrega dados de uma base de dados do
Access. Os campos serão carregados usando comandos SELECT. Será usada
a sintaxe SQL padrão. Nos conectaremos à base de dados usando uma
conexão OLE DB.

Geração do Script
A vantagem de usar o editor de scripts do QlikView é que vários dos
comandos de script são gerados automaticamente ao selecionar os campos
que você deseja carregar nos assistentes de arquivo. Muitas vezes, é
necessário fazer algumas alterações manualmente, por exemplo, para
atribuir novos nomes de campos. O editor de scripts também pode indicar
erros óbvios por meio da codificação por cores; por exemplo, parênteses
sem correspondência em uma função.

Lendo Tabelas no QlikView


Depois de criar a conexão OLE DB, é necessário ler os dados das tabelas
da base de dados no QlikView. No entanto, antes de fazer isso, criaremos
alguns comentários no script para nos ajudar a compreender o script, caso
não trabalhemos com ele por algum tempo ou se outra pessoa precisar editá-
lo. Um comentário cria uma parte do script que não é lida ao carregar dados
no QlikView. No Editor de Scripts, as linhas que foram comentadas
ficarão verdes.

43
QV_Developer_I_Course.book Page 44 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CRIANDO O SCRIPT

A figura a seguir mostra um exemplo de comentários incluídos depois da


sequência de conexão para descrever a base de dados que está sendo usada.

Figura 21. Incluindo comentários ao script de carga

O QlikView permite três tipos de comentários diferentes:


• REM antes de um comando indica um comentário desse comando, até
seu final;
• // indica um comentário de todo o texto seguinte, em uma única linha.
• /* … */ indica o comentário de todo o texto entre os delimitadores.

Aviso! Não use o comentário // para uma função Include, pois apenas a linha inicial
no arquivo Include será comentada.

No exercício a seguir, você pode incluir qualquer tipo de comentário


desejado. A sugestão acima usou o texto do documento do plano de projeto
da descrição de dados da tabela Customers. (Foi necessário definir a
formatação para alinhar as colunas na tabela de layout do registro.)

44
QV_Developer_I_Course.book Page 45 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Carregando Dados


Tarefa:
1 Começaremos incluindo a tabela Customers no script.
2 Clique no botão SELECT na caixa de diálogo Editar Script e selecione a
tabela Customers nas Tabelas de Bases de Dados.

Figura 22. A caixa de diálogo Criar Comando Select

A caixa de diálogo Criar Comando Select tem várias opções. Na seção


superior, você encontra informações sobre a base de dados ativa.
A seção do meio contém informações referentes a Tabelas, Visões,
Sinônimos, Tabelas do Sistema e Alias da base de dados. Em uma base
de dados grande, é recomendável desmarcar tudo, exceto o que você
realmente deseja ler no QlikView. Normalmente, você vai desejar
trabalhar com Tabelas e, às vezes, com Visões, mas talvez o restante
seja desnecessário.
Você pode ver todas as tabelas disponíveis na janela Tabelas de Bases
de Dados. Quando uma tabela é selecionada, seus campos se encontram
na tabela da janela Campos. Você tem a opção de exibir os campos em

45
QV_Developer_I_Course.book Page 46 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Ordem Alfabética ou na Ordem Original, ou seja, a ordem em que eles


são colocados na tabela.
Existem várias formas de exibir a tabela lida no momento no QlikView
na parte inferior da tela. Na aba Script, você pode ver a sintaxe da
forma como ela aparecerá no script. Você pode selecionar como os
campos serão colocados no script, em uma Coluna, em uma Linha ou
Estruturados com quebras de linha. Também é possível ler a tabela com
uma Carga Anterior. A vantagem da carga anterior é que você pode
trabalhar com a sintaxe do QlikView, em vez da sintaxe SQL.
3 Certifique-se de marcar Carga Anterior, de forma que possamos usar
a sintaxe do QlikView no script.
4 Clique em OK para fechar a caixa de diálogo Criar Comando Select.
O seguinte script foi criado:
LOAD Address,
City,
CompanyName,
ContactName,
Country,
CustomerID,
DivisionID,
Fax,
Phone,
PostalCode,
StateProvince;
SQL SELECT *
FROM Customers;
5 Faça um comentário antes da tabela para facilitar sua localização.
Exemplo: // ************** Customers table **************
6 Atribua um rótulo à tabela digitando o nome Clientes na linha acima do
comando LOAD e colocando dois-pontos no final (:).
As primeiras linhas do script devem agora ter a seguinte aparência:
//************** Customers table **************
Clientes:
LOAD Address,

7 Clique no ícone Salvar na caixa de diálogo Editar Script. O


documento QlikView inteiro será salvo, incluindo o script de carga.

46
QV_Developer_I_Course.book Page 47 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

8 Clique no ícone Recarregar na caixa de diálogo Editar Script para


recarregar o script. A seguinte caixa de diálogo aparecerá após a
execução do script.

Figura 23. A caixa de diálogo Propriedades da Pasta [Principal].

Nessa caixa de diálogo são mostrados todos os campos de todas as


tabelas carregadas no aplicativo QlikView. Assim, você pode selecionar
TODOS os campos ou selecionar apenas aqueles que serão usados no
seu documento.
9 Clique em OK e abra o Editor de Scripts novamente. Continuaremos a
ler tabelas no QlikView, começando pela tabela Shippers.
10 Verifique se o cursor está posicionado depois do comando LOAD da
Tabela Customers. Deixe pelo menos o espaço de uma ou duas linhas
separando-a da próxima tabela carregada.
11 Clique em Selecionar para abrir a caixa de diálogo Criar Comando
de Script.

47
QV_Developer_I_Course.book Page 48 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

12 Selecione a tabela Shippers e clique em OK para fechar a caixa de


diálogo. Digite um comentário para a tabela Shippers e atribua a ela o
Rótulo Shippers.
Como podemos ver, a tabela Shippers tem um nome de campo em
comum com a tabela Customers. O campo CompanyName existe nas
duas tabelas. Esse campo não deve ser um campo chave entre essas duas
tabelas. É necessário renomear esse campo em uma das tabelas para
evitar uma conexão entre elas. Coloque o cursor imediatamente após
CompanyName na tabela Shippers e renomeie esse campo para
Shippers usando AS. O script deve ter a aparência a seguir.
// *************** Shippers table ***************
Shippers:
LOAD CompanyName AS Shippers,
ShipperID;
SQL SELECT *
FROM Shippers;
13 Salve o documento e Recarregue o script.

48
QV_Developer_I_Course.book Page 49 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Carregando Dados Adicionais


Neste exercício, traremos as tabelas adicionais necessárias da base de dados
QWT.mdb. Por enquanto, desconsidere a conexão ou as associações entre as
tabelas, pois elas serão incluídas posteriormente no curso.

Tarefa:
1 Carregue os campos da tabela Products no script. Carregue todos os
campos, exceto UnitPrice, pois esse campo será carregado
posteriormente de outra tabela. Faça um comentário sobre a tabela e a
rotule como Products.
2 Carregue os campos da tabela Categories no script. Faça um
comentário sobre a tabela e a rotule como Categories.
3 Carregue os campos da tabela Divisions no script. Faça um comentário
sobre a tabela e a rotule como Divisions.
Além das tabelas Customers e Shippers ilustradas nas páginas
anteriores, seu script deve ter a seguinte aparência, quando concluído:
//************* Products table *************
Products:
LOAD CategoryID,
ProductID,
ProductName,
QuantityPerUnit,
SupplierID,
UnitCost,
// UnitPrice,
UnitsInStock,
UnitsOnOrder;
SQL SELECT *
FROM Products;
//**************** Categories table ****************
Categories:
LOAD CategoryID,
CategoryName,
Description;
SQL SELECT *
FROM Categories;

49
QV_Developer_I_Course.book Page 50 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

//**************** Divisions table ****************


Divisions:
LOAD DivisionID,
DivisionName,
SQL SELECT *
FROM Divisions;

50
QV_Developer_I_Course.book Page 51 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CRIANDO O SCRIPT

Depuração de Scripts
Às vezes, pode ser difícil localizar erros ao fazer alterações em scripts.
Assim, o QlikView contém um depurador de execução de scripts para ajudá-
lo a identificar erros no seu script.
A execução do script no depurador facilita bastante a localização de erros.
Além disso, ele pode economizar um tempo considerável. No depurador, é
possível estudar cada comando e verificar os valores das variáveis durante a
execução do script.
O script é mostrado na janela na metade superior da caixa de diálogo. Um
cursor amarelo mostra o andamento da execução. É possível inserir pontos
de interrupção clicando no número de uma linha e removê-los clicando
novamente. Todos os pontos de interrupção podem ser removidos clicando
no botão Limpar. Quando um novo ponto de interrupção é encontrado, a
execução é parada até ser dado o comando para prosseguir.
O comando de script atual é mostrado na janela no meio da caixa de
diálogo.
Os códigos de status e as mensagens de erros são mostrados na janela
inferior esquerda. Essas informações são, basicamente, as mesmas
mostradas na janela Progresso da Execução do Script quando o script é
executado sem o depurador.
A janela inferior direita mostra todas as variáveis e seus respectivos valores.
Os valores que foram alterados são mostrados em vermelho.
O script pode ser executado em três modos diferentes:

Executar Este é o modo de execução normal do script. O script é executado até o


final ou até encontrar um ponto de interrupção.
Animar O script é executado conforme descrito acima, mas com uma pequena
pausa após cada comando. Assim, é possível seguir a execução com mais
atenção.
Incremento O script é executado um comando de cada vez.
Para executar o script inteiro, use um dos seguintes métodos:
Selecione Carga Limitada e digite um número na janela abaixo. Esse é o
número máximo de registros aceitos para cada comando LOAD e SELECT.
Essa é uma maneira muito prática de limitar o tempo de execução quando
um script é executado com dados dinâmicos.
Clique em Parar Aqui para encerrar a recarga atual. Os dados já carregados
serão retidos no QlikView.

51
QV_Developer_I_Course.book Page 52 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CRIANDO O SCRIPT

Clique em Cancelar para parar a execução e descartar os dados carregados.

Figura 24. A caixa de diálogo Depurador.

Agora, vamos tentar executar nosso script no depurador.

52
QV_Developer_I_Course.book Page 53 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Usando o Depurador de Script


Tarefa:
1 Abra a caixa de diálogo Editar Script no menu ou na barra de
ferramentas.
2 Clique no ícone Depurar na barra de ferramentas para abrir a
caixa de diálogo Depurador.
3 Insira pontos de interrupção antes de SQL SELECT nas tabelas Clientes,
Remetentes e antes de LOAD na tabela Produtos, clicando no número da
linha na janela de script.
4 Os pontos de interrupção serão vistos como pontos vermelhos.
5 Veja o que acontece quando você clica no botão Animar.
A execução do script nos vários modos disponíveis no depurador tem
um efeito semelhante a clicar em Executar no script.
6 Quando o script tiver sido carregado, clique em Fechar para abrir a
caixa de diálogo Selecionar Campos.
7 Abra o depurador novamente e execute o script com uma Carga
Limitada de 10 registros.
Essa ferramenta pode ser útil para identificar erros e validar alterações, além
de ser uma forma de criar aplicativos de modelo com um pequeno número
de registros inseridos.

53
QV_Developer_I_Course.book Page 54 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CRIANDO O SCRIPT

O Arquivo de Log de Execução do Script


No início do curso, nós definimos a seleção Gerar Arquivo de Log nas
Propriedades do Documento. Agora, examinaremos o arquivo que é
gerado durante a execução do script.
O arquivo de log terá o mesmo nome que seu documento QlikView, mas
com “.qvw“ anexado e uma extensão de arquivo .log (por exemplo,
QVE_Course.qvw.log). O arquivo estará localizado no mesmo diretório que
o documento QlikView que está sendo recarregado.
Em geral, o arquivo de log conterá todos os comandos de script executados,
sem a linha ou os comentários entre parênteses (os comandos REM são
mostrados). As informações a seguir também são incluídas.
• Registro de data/hora de início da execução
• Registro de data/hora de conclusão da execução
• O número de campos e o nome de cada campo identificado em LOAD ou
SELECT, juntamente com o número de registros incluídos nesse LOAD
ou SELECT.
• O número da linha do script.
• A versão do QlikView que está executando o script
• Todos os erros de execução do script que possam ter ocorrido
• Todas as chaves sintéticas criadas serão listadas no final do arquivo
de log.

54
QV_Developer_I_Course.book Page 55 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Crédito Extra Opcional


Tarefa:
1 Verifique se você consegue localizar o arquivo de log no seu aplicativo e
abra-o com o Bloco de Notas ou uma ferramenta semelhante.

55
QV_Developer_I_Course.book Page 56 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 57 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | ESTRUTURANDO O SCRIPT

8 ESTRUTURANDO O SCRIPT

Objetivos
• Compreender o uso das Abas para organizar o script de carga
• Criar uma aba

Até o momento, várias tabelas foram carregadas. Frequentemente, são


usadas várias tabelas ao criar um aplicativo QlikView e, às vezes, você
deseja manipular as tabelas existentes. Para facilitar o trabalho com o script,
podemos dividi-lo em abas diferentes. Neste capítulo, trabalharemos com
as abas para obter uma forma clara e fácil de acompanhar a estrutura
do script.

Criando Abas no Script


Para estruturar o script do QlikView e localizar facilmente as diferentes
tabelas, vamos criar diversas guias no script. As tabelas lidas até o momento
seriam consideradas tabelas de dimensões. Elas contêm informações que
devem ser examinadas por tempo ou outros valores, e ser selecionadas.
Vamos criar uma aba no script chamada Dimensions e colocar nela nossas
tabelas de dimensões.

57
QV_Developer_I_Course.book Page 58 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 59 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Estruturando o Script


Tarefa:
1 Abra o arquivo QlikView na pasta do capítulo.
2 Abra o script usando o ícone Editar Script.

3 Clique no botão da barra de ferramentas Incluir Nova Aba ou vá


para o Menu Aba e clique em Incluir Aba.
4 Nomeie a Aba Dimensions.

Figura 25. A Caixa de Diálogo Renomear Aba

5 Vá para a aba Principal e selecione todas as tabelas carregadas até o


momento. Deixe os comandos Set e o comando Connect de lado por
enquanto.
6 Recorte as tabelas e vá para a aba Dimensions.
7 Cole as tabelas na aba Dimensions.
8 Clique em Salvar para salvar o documento.
Agora, o script deve conter duas abas, a aba Principal, com dados
relevantes para todo o aplicativo, e a aba Dimensions, com as tabelas de
dimensões que serão usadas no aplicativo.

Figura 26. Várias abas na caixa de diálogo Editar Script

Nós continuaremos com a leitura das tabelas de fatos no QlikView. Muitas


vezes, a tabela ou as tabelas de fatos contêm dados que você deseja analisar.
Normalmente, elas são as tabelas de conexão com as tabelas de dimensões.
Neste treinamento, existem duas tabelas de fatos, Orders e Order Details.
Vamos carregá-las em uma aba separada do script.

59
QV_Developer_I_Course.book Page 60 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 61 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Pedidos e Detalhes do Pedido


Tarefa:
1 No Editor de Scripts, crie uma nova Aba e nomeie-a como Orders.
2 Clique em SELECIONAR novamente e carregue a tabela Orders.
3 Edite o script manualmente para usar o campo OrderDate como
mostrado a seguir para gerar novos campos para o ano, o mês e o dia.
//*************** Orders table ***************
Orders:
LOAD CustomerID,
EmployeeID,
Freight,
OrderDate,
Year(OrderDate) AS Year,
Month(OrderDate) AS Month,
Day(OrderDate) AS Day,
OrderID,
ShipperID;
SQL SELECT *
FROM Orders;
Ao usar um comando load anterior, podemos usar as funções de data do
QlikView, incluindo a formatação do mês. (A diferença é que o mês é
representado como um número ao usar o comando SELECT e como
uma combinação de texto e número ao usar o comando LOAD.)

Nota: os caracteres de texto usados para representar os meses dependem das


configurações regionais do seu sistema operacional (conforme visto nos comandos
do script inicial). Se as suas configurações estiverem em inglês, os meses serão
mostrados em inglês.

De acordo com o plano do projeto, na seção Tendências, será necessário


fornecer a análise por Mês, MêsAno, Trimestre e Ano. O script acima
fornecerá o Ano, o Mês e o Dia do mês. Ele será expandido
posteriormente para adicionar MêsAno e Trimestre.
4 Vamos selecionar e carregar a tabela OrderDetails na tabela Orders.
Aqui, criaremos um novo campo LineSalesAmount, que é a primeira
Medida Principal, identificada no plano de projeto na seção

61
QV_Developer_I_Course.book Page 62 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCISE

Medidas Principais. LineSalesAmount é o resultado de um cálculo


baseado em PUnitPrice*Quantity)*(1-Discount). O script de carga tem
a seguinte aparência:
//*************** Order Details table
***************
OrderDetails:
LOAD Discount,
LineNo,
OrderID,
ProductID,
Quantity,
UnitPrice,
UnitPrice * Quantity * (1 - Discount)
AS
LineSalesAmount;
SQL SELECT * FROM [Order Details];
5 Salve o documento e Recarregue o script.
O script deve teve ter a aparência a seguir. Observe que as diferentes
abas do script são marcadas com ///$tab. Essa é a forma como o
QlikView marca as abas diferentes quando você exporta o script para
um arquivo de script.
///$tab Principal
SET ThousandSep=',';
SET DecimalSep='.';
SET MoneyThousandSep=',';
SET MoneyDecimalSep='.';
SET MoneyFormat='$#,##0.00;($#,##0.00)';
SET TimeFormat='h:mm:ss TT';
SET DateFormat='M/D/AAAA';
SET TimestampFormat='M/D/AAAA h:mm:ss[.fff] TT';
SET MonthNames='Jan;Fev;Mar;Abr;Mai;Jun;Jul;
Ago;Set;Out;Nov;Dez';
SET DayNames='Seg;Ter;Qua;Qui;Sex;Sáb;Dom';
//Este é o Editor de Scripts

CONNECT TO [Provider=Microsoft.Jet.OLEDB.4.0;User
ID=Admin;Data Source=Datasources\QWT.mdb];

62
QV_Developer_I_Course.book Page 63 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

///$tab Dimensions
//*************** Customers table **************
Customers:
LOAD Address,
City,
CompanyName,
ContactName,
Country,
CustomerID,
DivisionID,
Fax,
Phone,
PostalCode,
StateProvince;
SQL SELECT *
FROM Customers;
//*************** Shippers table **************
Shippers:
LOAD CompanyName as Shippers,
ShipperID;
SQL SELECT *
FROM Shippers;
//*************** Products table **************
Products:
LOAD CategoryID,
ProductID,
ProductName,
QuantityPerUnit,
SupplierID,
UnitCost,
//UnitPrice,
UnitsInStock,
UnitsOnOrder;
SQL SELECT *
FROM Products;
//*************** Categories table **************
Categories:
LOAD CategoryID,
CategoryName,
Description;

63
QV_Developer_I_Course.book Page 64 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCISE

SQL SELECT *
FROM Categories;
//*************** Divisions table **************
Divisions:
LOAD DivisionID,
DivisionName,
SQL SELECT *
FROM Divisions;
///$tab Orders
//*************** Orders table **************
Orders:
LOAD CustomerID,
EmployeeID,
Freight,
OrderDate,
year(OrderDate) AS Year,
month(OrderDate) AS Month,
day(OrderDate) AS Day,
OrderID,
ShipperID;
SQL SELECT *
FROM Orders;
//************** Order Details table **************
OrderDetails:
LOAD Discount,
LineNo,
OrderID,
ProductID,
Quantity,
UnitPrice,
UnitPrice * Quantity * (1 – Discount)
AS
LineSalesAmount;
SQL SELECT *
FROM [Order Details];

64
QV_Developer_I_Course.book Page 65 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | TRANSFORMAÇÃO DE DADOS BÁSICA

9 TRANSFORMAÇÃO DE DADOS BÁSICA

Objetivos
• Compreender o uso avançado do editor de scripts
• Renomear campos
• Usar Funções transformadoras no script
• Revisar os dados de origem

Este capítulo apresenta algumas das ferramentas mais importantes do editor


de scripts do QlikView. É raro ter dados de origem perfeitos. Um dos vários
pontos fortes do QlikView são seus sofisticados recursos de extrair,
transformar e carregar (ETL) para transformar e, em muitos caros, melhorar
os dados para análise.
Agora, tentaremos compreender os recursos do editor de scripts, começando
pelo comando load e pela renomeação de campos. Em seguida, mostraremos
algumas expressões de script básicas, além de uma visão geral dos arquivos
de fonte de dados usados no curso.

Comando Load
O comando LOAD pode obter dados usando vários métodos diferentes.
Segue uma listagem parcial dos tipos de dados que podem ser carregados no
QlikView:
• Carregados de uma tabela da base de dados
• Carregados diretamente de um arquivo de texto, Excel, qvd, xml etc.
• Carregado de um comando select ou load subsequente. O comando
select ou load subsequente deve estar imediatamente após esse
comando load.
• Carregados de uma tabela carregada anteriormente (residente)
• Carregados diretamente de dados no script de carga usando Inline load
• Carregados de dados gerados

Dica: uma vantagem do comando LOAD sobre o comando SELECT é a capacidade


de usar todas as funções de script do QlikView.

Da mesma forma que com outros comandos, os nomes de campos e de


tabelas devem estar entre aspas simples ou colchetes, se contiverem espaços
ou caracteres especiais.

65
QV_Developer_I_Course.book Page 66 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | TRANSFORMAÇÃO DE DADOS BÁSICA

Cinco comandos LOAD de exemplo:


Load * from 'c:\arquivosdousuário\dados2.txt' (ansi,
txt,
delimiter is '\t', rótulos incluídos);
Load A, B, if(C>0,'+','-') as X, weekday(D) as Y;
Select A,B,C,D from Tabela1;
Load A, B, A*B+D as E
Resident tab1;
Load * Inline
[IDCat, Categoria
0,Regular
1,Ocasional
2,Permanente];
Load RecNo() as A, rand() as B
Autogenerate(10000);

Renomeando um Campo
É possível renomear um ou mais campos no script de carga. Também é
possível denominar os campos que não têm um nome nos dados de origem.
Existem várias formas de fazer isso em um script.

Comando AS
Renomear usando as em um comando LOAD, ou seja, você renomeia um
campo específico nesse comando específico. Se estiver usando o Assistente
para Arquivos de Tabelas para criar um comando LOAD, você poderá
clicar em qualquer nome de campo na área Rótulo e inserir um novo nome.
O comando LOAD gerado incluirá a sintaxe as automaticamente.
Exemplo de as:
Load Capital as [Capital nacional],
Ps as País,
Pop as População
From País.csv (ansi, txt, delimiter is ',' ,rótulos
incluídos);

Comando Alias
Renomear usando o comando alias, ou seja, você renomeia todas as
ocorrências desses campos com os nomes especificados no script. Segue a
diretriz de sintaxe:
Alias <nomedocampo> as <novo nomedocampo>, <nomedocampo> as
<novo nomedocampo>,…

66
QV_Developer_I_Course.book Page 67 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | TRANSFORMAÇÃO DE DADOS BÁSICA

Exemplo de uso do comando alias:


Alias IdProd as IDProduto, Ms as Mês, NomeC as
Cliente;

Comando Rename Field


Renomear um ou mais campos existentes usando o comando Rename Field.
Opcionalmente, esse comando pode usar uma tabela de mapeamento que
armazena os dados de conversão de nomeantigo em novonome. As tabelas
de mapeamento serão discutidas posteriormente neste curso.
A sintaxe do comando rename field é a seguinte:
rename field[s] (using nomedomapa | nomeantigo to novonome {,
nomeantigo to novonome} )
nomedomapa é o nome de uma tabela de mapeamento carregada
anteriormente, que contém um ou mais pares de nomes de campos antigos e
novos
nomeantigo é o nome antigo do campo e
novonome é o novo nome do campo.

Nota: as duas formas, rename field e rename fields, são permitidas e não têm
nenhuma diferença de efeito.

Exemplo de uso do comando rename field:


Rename field XAZ0007 to Vendas;
MapadeCampos:
Mapping select nomesantigos, novosnomes from
dicionáriodedados;
Rename fields using MapadeCampos;

Expressões de Script
Os scripts do QlikView incluem um conjunto abrangente de funções e
ferramentas para a transformação de dados. Consulte o Manual de
Referência do QlikView para obter uma listagem completa e a explicação
dessas funções. De forma geral, elas podem ser agrupadas nas seguintes
categorias:
• Operadores
• Funções de agregação
• Outros

67
QV_Developer_I_Course.book Page 68 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | TRANSFORMAÇÃO DE DADOS BÁSICA

Nesta seção, examinaremos algumas das funções de transformação mais


básicas para lidar com problemas de dados comuns.

Carregando um Arquivo XML


O acrônimo XML representa Extensible Markup Language. Trata-se de um
formato de texto simples e flexível. Originalmente, ele foi criado para
enfrentar os desafios da publicação eletrônica em grande escala.
Atualmente, o XML também é usado em diversas formas de
armazenamento de dados.

68
QV_Developer_I_Course.book Page 69 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Carregando um Arquivo de Texto em


Formato XML
Tarefa:
1 Abra a caixa de diálogo Editar Script no menu ou na barra de
ferramentas.
2 Posicione o cursor na parte inferior da aba Dimensão e inclua um
comentário na carga da tabela de dados Suppliers.
3 Clique no botão Arquivos de Tabela… para abrir a caixa de diálogo
Arquivos de Tabela: Abrir Arquivos Locais.
4 Localize o arquivo suppliers.xml na pasta DataSources e clique
em Abrir.
5 Pressione Próximo para ver como o QlikView interpreta o XML.
6 Selecione a aba Tabelas para ver as tabelas contidas no arquivo XML.
7 Verifique se a tabela Suppliers/_empty_ está selecionada. Ao examinar a
janela dos campos, a tabela deverá conter 29 linhas.

Figura 27. O Assistente de Arquivo XML

8 Clique em Terminar.
9 Verifique no seu trabalho se o script da tabela Suppliers tem a aparência
a seguir.
//*************** Suppliers ***************
Suppliers:
LOAD SupplierID,
CompanyName,
ContactName,
Address,
City,
PostalCode,
Country,

69
QV_Developer_I_Course.book Page 70 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Phone,
Fax
FROM Datasources\Suppliers.xml (XmlSimple, Table is
[Suppliers/_empty_]);

70
QV_Developer_I_Course.book Page 71 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | TRANSFORMAÇÃO DE DADOS BÁSICA

Renomeando Campos Usando o Comando Qualify


Lembre-se, o QlikView associa campos com o mesmo nome. Se as duas
tabelas tiverem vários campos em comum, o QlikView poderá criar chaves
complexas (também conhecidas como Chaves Sintéticas) para associar
as tabelas.
O arquivo Suppliers.xml tem vários campos em comum com a tabela
Customers na base de dados do Access. Esses campos não devem ser
associados entre si e alguns dos campos em Suppliers.xml devem ser
renomeados. O único campo comum deve ser SupplierID, que também se
encontra na tabela Products.
Em vez de renomear cada campo usando o comando AS ou outros, a
solução mais simples é colocar o nome da tabela antes do nome do campo
(como é comum observar na maioria dos utilitários de base de dados).
É fácil fazer isso usando um comando especial do QlikView que, ao
carregar os nomes de campos, qualifica todos eles com o nome da tabela.
Assim, os novos nomes de campos serão tablename.field name. Como
queremos renomear todos os campos, exceto SupplierID, usaremos o *
(caractere curinga).

71
QV_Developer_I_Course.book Page 72 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Comando Qualify


Tarefa:
1 Digite as seguintes linhas de código antes do comando LOAD da tabela
Fornecedores.
QUALIFY *;
UNQUALIFY SupplierID;

Dica: o comando qualify pode ser usado com todos os tipos de tabelas e ficará ativo
até ser cancelado por um comando Unqualify. Isso pode ser útil quando você tiver
várias tabelas com os mesmos nomes de campos.

Como SupplierID deverá ser conectado a outra tabela, ele não deve ter o
qualificador de tabela. Isso é especificado usando o comando
UNQUALIFY SupplierID.
2 Depois que a tabela Suppliers tiver sido carregada, deveremos incluir o
comando a seguir de forma que todos os campos carregados depois
desse não tenham o qualificador de tabela.
UNQUALIFY *;
3 Salve e Recarregue o documento.
4 Abra o Visualizador de Tabelas. Agora, você verá os resultados da
inclusão do nome da tabela ao nome do campo.

72
QV_Developer_I_Course.book Page 73 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Figura 28. A estrutura do arquivo do exercício até o momento, como


mostrado no Visualizador de Tabelas

73
QV_Developer_I_Course.book Page 74 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | TRANSFORMAÇÃO DE DADOS BÁSICA

Campos Chave
Lembre-se, os campos chave são aqueles que são comuns a uma ou mais
tabelas (campos associados). Quando um campo ocorre em mais de uma
tabela, pode não ficar claro para o QlikView qual das tabelas deve ser usada
para calcular a frequência dos dados.

Exemplo de Dificuldade
Suponha que tenhamos uma tabela chamada Orders com 200 registros
contendo números de pedidos (OrderID). Também temos uma tabela
chamada OrderDetails, que contém 1000 registros de números de pedidos.
Esses números também se encontram na primeira tabela.
As duas tabelas serão associadas através do campo comum OrderID. O
problema surge quando você deseja saber o número exato de ocorrências de
OrderID exclusivos. Seria 1000, 200 ou 1200? Com base nas informações
de que dispomos, sabemos que a resposta correta é 200 OrderID exclusivos,
mas nem sempre isso é claro para o QlikView.
Nesse caso, o QlikView vai procurar uma tabela principal. Ele pode escolher
a correta, mas, na maioria dos casos, o programa fará uma suposição.
Como as suposições podem levar a consequências graves, o QlikView foi
projetado de forma a não permitir determinadas operações quando houver
dúvidas sobre a tabela que será a tabela principal. Essas operações incluem,
por exemplo, o cálculo da frequência.

Como Isso Afeta Você?


Ao trabalhar com campos chave, você deve ter em mente as limitações a
seguir.
• Em alguns casos, não é possível obter informações de frequência em uma
lista que mostre campos chave. Por exemplo, você verá que a caixa de
verificação Mostrar Frequência está inativa para os campos
CustomerID e EmployeeID.
• Na maioria dos casos, não será possível usar funções para calcular a
frequência de campos chave em gráficos (Count etc.). Nessas expressões,
use um qualificador Distinct.
• Em geral, é recomendável evitar o uso de campos chave em listas e
expressões. Os campos chave devem ser usados para vincular tabelas e
não para exibir dados em um documento QlikView. Na próxima seção,
aprenderemos como você ainda pode usar os valores necessários no
documento, além de usar campos chave para a vinculação.

74
QV_Developer_I_Course.book Page 75 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | TRANSFORMAÇÃO DE DADOS BÁSICA

Dica: ao criar uma expressão, olhe acima da janela Editar. A mensagem de erro
Nomes de Campos Conflitantes: Nomedocampo indica que você usou um Campo
chave em uma expressão que não tem permissão para usar nesse tipo de cálculo.

Carregando um Campo Várias Vezes em uma Tabela


Existe uma solução relativamente simples para o problema dos campos
chave e do cálculo da frequência de dados. Você carrega novamente o
campo que deseja usar para calcular a frequência com outro nome.
O problema descrito acima pode então ser solucionado da seguinte forma:
LOAD …,
OrderID,
OrderID AS OrderIDCount
FROM Orders;
Agora você pode usar o novo campo (não associado) em uma lista que
mostra a frequência ou em um gráfico com funções para calcular a
frequência. O nome do novo campo pode ser facilmente escondido pelo uso
de outro rótulo, de forma que ele não confunda os usuários do documento.
Se você criar um campo calculado, presume-se que os dados sejam
exclusivos. Caso contrário, você deverá executar distinct count.
Essas solução funciona bem em aplicativos menores, mas se os aplicativos
tiverem muitos dados, ela poderá utilizar muita memória, pois você
executará count distinct nesses campos com frequência.

Usando um Contador de Registros em Campos Chave


Em vez de usar o campo chave uma segunda vez, podemos usar um
contador de registros na tabela na qual desejamos realizar o cálculo. Um
contador de registros é simplesmente o número 1 de cada linha na tabela
conectada ao campo de ID da tabela. Por exemplo, se quisermos contar o
número de Orders, criamos um contador de registros na tabela Orders e
usamos a soma do contador de registros em gráficos.
O contador de registros pode ser criado da seguinte forma:
LOAD …,
OrderID,
1 AS OrderRecordCounter,

FROM Orders;

75
QV_Developer_I_Course.book Page 76 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | TRANSFORMAÇÃO DE DADOS BÁSICA

Essa resolução do problema é mais eficiente quando se trabalha com


grandes quantidades de dados, pois a soma de um valor numérico demanda
muito menos que o uso de count com um valor.

Nota: cuidado ao criar Campos Count e Record Counters para que o novo campo
seja criado na tabela correta.

Isto Está Certo?


Ao criar um gráfico no QlikView, é importante verificar se ele realmente
mostra o que você deseja mostrar. Sempre escolha as expressões adequadas
a cada caso. O QlikView possui diversas expressões. Segue um resumo
dessas expressões e aquilo que elas mostram.
Vendedor Artigo NúmeroCliente Quantidade
Carlos A 10 100
Jane A 101 200
Olga B 10 250
Carlos B 111 350
Expressão Resultado
Total Count(Vendedor) 4
Total Count(Distinct Vendedor) 3
Total Count(Artigo) 4
Total Count(Distinct Artigo) 2
Count(Quantidade) 4
Sum(Quantidade) 900

76
QV_Developer_I_Course.book Page 77 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Transformação de Dados Básica


Tarefa:
1 Modifique o script no documento QlikView de forma a incluir um
campo chamado ProductIDRecordCounter, baseado no campo
ProductID. O novo campo será usado para produzir a Medida Principal
necessária, Total Products Sold, conforme especificado no plano de
projeto. Pense com cuidado na tabela na qual o campo
ProductIDRecordCounter deve ser criado antes de sua criação.
2 Modifique o script no documento QlikView de forma a incluir um
campo chamado OrderIDCounter. O novo campo será usado para
calcular o número total de Pedidos. Crie o campo do contador de
registros na tabela correta.
3 Crie um novo objeto gráfico e escolha o tipo de gráfico tabela dinâmica.
4 Use CompanyName, ProductName e Month como dimensões.
5 A expressão deve calcular o número distinto de produtos vendidos e
deve ser rotulada como [Total Products Sold]. Habilite Mostrar
Subtotais por CompanyName e Month. Essa opção se encontra na aba
Apresentação.
6 Inclua uma nova expressão para o número de Pedidos realizados. Use o
campo OrderIDCounter para esse cálculo. Rotule essa expressão como
[Number of Orders].
7 Classifique as dimensões CompanyName e ProductName com a mesma
expressão que [Number of Orders], na ordem Decrescente.

Figura 29. A tabela dinâmica resultante

77
QV_Developer_I_Course.book Page 78 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | TRANSFORMAÇÃO DE DADOS BÁSICA

Funções de Hora: Criando um Calendário


Às vezes, ao trabalhar com datas, é melhor manter os campos de data fora
das tabelas de fatos e criá-los em uma tabela separada. Por exemplo, talvez
você deseje ver todas as datas e não apenas as datas em que alguma coisa
aconteceu. Nesse caso, você pode obter a data inicial e a data final da tabela
de fatos, e usar essas datas para criar uma tabela de calendário. Nesta seção,
examinaremos como obter o maior e o menor valor de data da tabela
Pedidos. Colocaremos esses valores em variáveis que serão usadas para
criar uma tabela Calendário.
No exercício, usaremos as funções Year, Month e Day para extrair dados do
campo OrderDate e armazená-los em Campos separados que representam o
Ano, o Mês e o Dia do pedido. Esses campos, por sua vez, se tornarão a
base do calendário no aplicativo QlikView.

Obtendo a Maior e a Menor Data da Tabela Pedidos


Existem várias formas de obter o menor e o maior valor de um campo em
uma tabela. Neste capítulo, vamos trabalhar com uma função de registro
RowNo() do QlikView, que podemos usar em uma tabela ou, como nesse
caso, para criar uma variável. Ao usar funções de registro RowNo(), a
ordem de classificação da tabela sempre é importante. Portanto,
começaremos classificando a tabela Orders para que as datas fiquem na
ordem correta.

78
QV_Developer_I_Course.book Page 79 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Classificando Dados


Tarefa:
1 Abra a caixa de diálogo Editar Script e vá para a aba Pedidos.
2 Exceto pelo campo OrderDate, remova todos os campos Date da tabela
Orders utilizando comentários. O motivo para manter OrderDate é que
esse será o campo de conexão com a tabela Calendar.
3 Classifique a tabela Order digitando o seguinte no final do comando
SELECT, antes do ponto-e-vírgula.
ORDER BY OrderDate ASC;
4 O script deve ter a aparência a seguir depois que você incluir o comando
Order By.
//*************** Orders table ***************
Orders:
LOAD
CustomerID,
EmployeeID,
Freight,
OrderDate,
//Year(OrderDate) AS Year,
//Month(OrderDate) AS Month,
//Day(OrderDate) AS Day,
OrderID,
OrderID AS OrderIDCounter,
ShipperID;
SQL SELECT *
FROM Orders ORDER BY OrderDate ASC;
O comando ORDER BY define a ordem de classificação da tabela. Você
pode usar um ou mais campos do comando para especificar como a tabela
deve ser classificada. Os campos serão classificados na ordem mostrada,
sendo que o primeiro campo terá prioridade, se você tiver mais de um
campo. Os campos devem ser separados por vírgulas. Você também pode
decidir classificar os campos na ordem Crescente ou Decrescente
digitando Asc ou Desc depois do último campo.
Depois que a tabela for classificada, poderemos usar a função Peek para
obter a primeira e a última OrderDate da tabela Orders.

79
QV_Developer_I_Course.book Page 80 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | TRANSFORMAÇÃO DE DADOS BÁSICA

Criando Variáveis no Script


Podemos criar variáveis no script do QlikView para obter valores dinâmicos
que podem mudar ao longo do tempo. Nesse caso, criaremos uma variável
que contém a primeira data da tabela Orders e uma variável que contém a
última data da tabela Orders.

80
QV_Developer_I_Course.book Page 81 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Criando Variáveis


Tarefa:
1 Crie uma nova aba no script e a denomine Calendar.
2 Crie uma nova variável para a primeira data digitando o comando de
script a seguir.
LET varDataMín = Num(Peek('OrderDate', 0,
'Orders'));
Ao criar uma variável no QlikView, frequentemente é usado um
comando SET ou LET para definir a variável. O comando SET é usado
quando você deseja que uma variável contenha o valor de caractere ou
numérico à direita do sinal de Igual (=). O comando LET é usado quando
você precisa avaliar o que está à direita do sinal de Igual.
A sintaxe da função Peek é a seguinte:
Peek( ‘nomedocampo’ [ , linha [ , ‘nomedatabela’ ] ] ).
O nomedocampo é o campo do qual desejamos extrair um valor. Linha é
o número da linha do valor que desejamos obter. 0 representa a primeira
linha da tabela e -1 representa a última linha da tabela. Nomedatabela é
o nome da tabela na qual está o Nomedocampo.
No nosso script, desejamos localizar o valor em OrderDate na primeira
linha da tabela Orders para obter a primeira data. Isso é possível porque
classificamos a tabela por OrderDate anteriormente neste capítulo.
3 Crie uma segunda variável para a última data digitando o comando
a seguir.
LET varDataMáx = Num(Peek('OrderDate', -1,
'Orders'));
4 Crie uma terceira variável para hoje digitando o comando a seguir.
LET varToday = num(today());
5 Crie uma nova tabela digitando o script a seguir no Editor de Scripts.
//*************** Temporary Calendar ***************
TempCalendar:
LOAD
$(varDataMín) + rowno() - 1 AS Núm,
date($(varDataMín) + rowno() - 1) AS
TempDate
AUTOGENERATE
$(varDataMáx) - $(varDataMín) + 1;

81
QV_Developer_I_Course.book Page 82 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

O comando AUTOGENERATE cria a tabela na qual os números de


linhas criadas dependem do número de dias entre as datas mínima
e máxima.
6 Salve e Recarregue o script.

82
QV_Developer_I_Course.book Page 83 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | TRANSFORMAÇÃO DE DADOS BÁSICA

O Calendário Mestre
Depois de criar todas as datas necessárias, podemos começar a criar uma
tabela Calendário Mestre, na qual criaremos todos os campos de data
necessários. Anteriormente, criamos Ano, Mês e Dia na tabela Orders.
Vamos criar esses campos novamente, além de alguns outros campos de data
que podem ser úteis no layout.

83
QV_Developer_I_Course.book Page 84 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 85 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Criando o Calendário Mestre


Tarefa:
1 Abra o editor de scripts novamente.
2 Crie uma tabela MasterCalendar que faz referência ao script mostrado
a seguir.
//*************** Master Calendar ***************
Master Calendar:
LOAD TempDate AS OrderDate,
Week(TempDate) AS Week,
Year(TempDate) AS Year,
Month(TempDate) AS Month,
Day(TempDate) AS Day,
Weekday(TempDate) AS WeekDay,
'Q' & ceil(month(TempDate) / 3) AS Quarter
Date(monthstart(TempDate), 'MMM-YYYY') AS
MonthYear,
Week(TempDate)&'-'&Year(TempDate) AS WeekYear,
inyeartodate(TempDate, $(varToday), 0) * -1 AS
CurYTDFlag,
inyeartodate(TempDate, $(varToday), -1) * -1 AS
LastYTDFlag
RESIDENT TempCalendar
ORDER BY TempDate ASC;
Observe que tivemos de renomear o campo TempDate como OrderDate
para obter uma conexão com a tabela Orders. A maioria dos campos é
criada por funções de data que não precisam de mais explicações, mas nós
criamos dois campos indicadores que devem ser melhor explicados. Os
campos indicadores são criados usando a função inyeartodate. A sintaxe
dessa função é a seguinte:
inyeartodate(data, database , deslocamento [, primeiro_mês_de_= 1] )
A função inyeartodate é uma função booleana que retorna -1 ou 0. Será
retornado -1 se o comando for avaliado como verdadeiro e será retornado 0
se o comando for falso. A primeira parte da função é a data que deve ser
avaliada. A segunda parte, deslocamentoano, é o ano que você deseja
avaliar. Se ela for omitida, será utilizado o ano atual. Ao especificar o
primeiromês entre 1 e 12 (1, se omitido), o início do ano pode avançar para
o primeiro dia de qualquer mês. Ao especificar a datadehoje, é possível
mover o dia usado como limite superior do período.

85
QV_Developer_I_Course.book Page 86 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Ao criar os campos indicadores CurYTDFlag e LastYTDFlag, criamos


campos que podem ser usados em expressões quando desejamos ver apenas
os resultados do ano atual e do mesmo período no último ano.
Antes de recarregar o script, é necessário remover a tabela TempCalendar
usada para criar as datas. Isso pode ser feito usando o comando DROP
TABLE como a seguir.
DROP TABLE TempCalendar;
O comando DROP TABLE remove totalmente a tabela da base de dados do
QlikView.
3 Inclua o comando DROP TABLE no final do script na aba Calendar.

86
QV_Developer_I_Course.book Page 87 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | O MODELO DE DADOS BÁSICO E O VISUALIZADOR DE TABELAS

10 O MODELO DE DADOS BÁSICO E O VISUALIZADOR


DE TABELAS

Objetivos
• Usar o Visualizador de Tabelas para analisar e compreender a
estrutura interna do documento QlikView
• Examinar os recursos que serão usados posteriormente para verificar
a integridade dos dados
• Compreender como é possível usar o Visualizador de Tabelas para
depurar problemas

Neste capítulo, aprenderemos sobre o Visualizador de Tabelas. Veremos


como é possível usá-lo para analisar e compreender a estrutura interna do
documento QlikView. Também serão apresentadas várias formas de
monitorar e analisar a estrutura dos dados do QlikView. Essas ferramentas e
técnicas serão úteis quando criarmos o script de carga e a estrutura do
documento, e serão fundamentais quando tentarmos verificar a integridade
de um documento ou depurar um comportamento incorreto.

O Visualizador de Tabelas
O Visualizador de Tabelas oferece uma maneira fácil de exibir a estrutura
lógica das tabelas disponíveis e as conexões entre elas em um documento
QlikView. Para abrir o Visualizador de Tabelas, selecione Arquivo…

Visualizador de Tabelas (ou CTRL+T) (ou o botão da ferramenta na


barra de ferramentas de desenho. Será aberta uma janela que exibe todas as
tabelas carregadas e seus campos chave de conexão. Você pode reorganizar
seus componentes clicando e arrastando ou clicando em Layout

87
QV_Developer_I_Course.book Page 88 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | O MODELO DE DADOS BÁSICO E O VISUALIZADOR DE TABELAS

Automático. Ao concluir, certifique-se de clicar em OK e não no “X” no


canto superior direito da janela para salvar seu layout.

Figura 30. O Visualizador de Tabelas mostrando um exemplo

O Visualizador de Tabelas fornece uma visão gráfica das tabelas e das


conexões entre elas. Você pode reorganizar as tabelas de forma que seja
mais fácil acompanhar a estrutura. Também é possível alternar entre a Visão
das Tabelas Internas do QlikView, ou seja, como as tabelas estão
conectadas no QlikView, e uma Visão das Tabelas Fonte que mostra as
conexões originais entre as tabelas quando lidas no QlikView.

Figura 31. Alternando entre visões de tabelas

88
QV_Developer_I_Course.book Page 89 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Compreendendo o Visualizador de Tabelas


Tarefa:
1 Abra o Visualizador de Tabelas no menu Arquivo ou use o atalho
CTRL+T.
2 Reorganize manualmente as tabelas ou clique no botão da ferramenta
, de forma a poder ver as conexões entre elas.
3 Coloque o cursor sobre o cabeçalho da tabela Orders.
Quando você colocar o cursor sobre uma tabela, aparecerá uma bolha
com estatísticas da tabela. Como é possível ver na figura a seguir, são
obtidas informações sobre o número de Linhas, Campos e Chaves na
tabela. Essa bolha informativa permanecerá por aproximadamente
30 segundos ou até você mover o mouse sobre outra área.

Figura 32. Informações da tabela

4 Coloque o cursor sobre ShipperID na tabela Shippers. Ao colocar o


cursor sobre um campo em uma tabela, você obtém informações sobre
ele. A Densidade da informação informa a porcentagem de linhas no
campo que realmente contêm informações. A Proporção de subcon-
junto está disponível apenas para campos chave e mostra a porcentagem
de valores do total no campo chave que vem de todas as tabelas.

Figura 33. Visualizador de Tabelas, Visualização mostrando campos e


dados da tabela Divisões

89
QV_Developer_I_Course.book Page 90 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

5 Clique com o botão direito do mouse na tabela Divisões e escolha


Visualizar

Campos do Sistema

Durante o processo de carregamento, são gerados os seguintes campos


especiais com informações sobre a estrutura de dados interna do QlikView,
ou seja, eles contêm metadados sobre a base de dados AQL (Associative
Query Logic). Eles são chamados campos do sistema e agora podemos ver
como é possível usá-los ao trabalhar com o QlikView.
• $Field Mostra os nomes de todos os campos carregados
• $Table Mostra os nomes de todas as tabelas carregadas
• $Rows Mostra o número de linhas nas tabelas
• $Fields Mostra o número de campos nas várias tabelas
• $FieldsNo Mostra as posições dos campos nas tabelas
(número da coluna)
• $Info Mostra os nomes das tabelas de informações
carregadas

90
QV_Developer_I_Course.book Page 91 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: A Aba Sistema


Ao desenvolver um documento, uma pasta do sistema é bastante útil para
mostrar como as tabelas lógicas no documento se relacionam. É
recomendável criar a pasta do sistema no primeiro passo após o
carregamento dos dados.

Tarefa:

1 Crie uma nova pasta clicando no botão Incluir Pasta na barra de


ferramentas de desenho ou selecionando Incluir Pasta no menu Layout.
2 Clique com o botão direito do mouse na nova pasta e selecione
Propriedades. Digite o Título da pasta como Sistema na aba Geral.
3 Na aba Campos, marque a caixa Mostrar Campos do Sistema e
selecione todos os campos com o sinal de dólar, $, na frente.
4 Clique no botão Incluir e em OK.
5 Organize os campos na pasta e clique com o botão direito do mouse na
lista $Field; em seguida, selecione Propriedades, Geral, Mostrar
Frequência para ver quantas vezes os diversos campos ocorrem na
estrutura de dados interna.
6 Na aba Classificar, você pode classificá-los de acordo com a frequência
decrescente para colocar os campos que ocorrem com mais frequência
na parte superior da lista.
7 Repita esses passos para a lista $Table.

Usando Campos do Sistema


Se você selecionar CustomerID em $Field, verá as tabelas nas quais o
campo aparece, juntamente com outras informações de campos do sistema.

Figura 34. O resultado da seleção de CustomerID na lista $Field

91
QV_Developer_I_Course.book Page 92 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | O MODELO DE DADOS BÁSICO E O VISUALIZADOR DE TABELAS

A Tabela do Sistema
É possível criar tabelas de vários tipos no QlikView com tipos de dados
bastante diferentes, então, por que não usar a mesma técnica para investigar
os relacionamentos entre as tabelas da nossa base de dados?
A tabela do sistema é uma tabela dinâmica que ilustra o relacionamento e as
conexões entre tabelas e campos na base de dados interna do QlikView.
Continuaremos criando essa tabela na nossa pasta do sistema. Quando mais
complicada for a estrutura de dados, maior será o uso da tabela.

92
QV_Developer_I_Course.book Page 93 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Compreendendo a Tabela do Sistema


Tarefa:
1 No aplicativo QlikView, confirme se você está na pasta Sistema.
2 Clique com o botão direito do mouse na pasta e selecione novo objeto de
pasta, Tabela do Sistema. Será criada uma tabela dinâmica com as
dimensões $Field e $Table. A expressão no gráfico será Only($Field).
As duas dimensões são classificadas de acordo com a ordem de
carregamento.

Figura 35. A Tabela do Sistema, exemplo

93
QV_Developer_I_Course.book Page 94 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | O MODELO DE DADOS BÁSICO E O VISUALIZADOR DE TABELAS

Propriedades do Documento: página Tabelas


Esta página de diálogo fornece ainda uma outra forma de examinar a
estrutura de dados. Todas as tabelas e todos os campos incluídos no
documento QlikView são listados, juntamente com estatísticas de cada
entidade.
Clique no botão Exportar Estrutura para exportar vários arquivos de texto
delimitados por tabulação com essas informações. Esses arquivos poderão
então ser importados novamente no QlikView, nesse documento ou em
outro documento, para análises adicionais.

Figura 36. Página Propriedades do Documento - Tabelas.

94
QV_Developer_I_Course.book Page 95 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | ADICIONANDO DADOS DE TEXTO

11 ADICIONANDO DADOS DE TEXTO

Objetivos
• Examinar as fontes de dados de planilhas do Excel
• Usar o Assistente de Arquivo para carregar dados no QlikView
• Transformar (renomear um campo) dados com o Assistente de
Arquivo

Neste capítulo, usaremos o Assistente de Arquivo para criar comandos


LOAD do QlikView. As fontes de dados consistem em duas planilhas do
Excel. Esses arquivos contêm dados sobre funcionários e escritórios.
Também há um arquivo XML com informações sobre fornecedores.
Vamos começar examinando as fontes de dados.

Funcionários
Vamos obter os dados dos funcionários do arquivo Excel EmpOff.xls e
na planilha Employee (na pasta C:\QlikViewTraining\DeveloperI\
Chapter11\DataSources). Primeiro, abriremos o arquivo no Excel para
examinar seu conteúdo.

Figura 37. A Tabela Funcionários

A chave desta tabela é o campo EmpID, que será renomeado porque


queremos vincular essa tabela a outra tabela no QlikView e, para isso,
os nomes dos campos devem ser exatamente iguais.

95
QV_Developer_I_Course.book Page 96 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | ADICIONANDO DADOS DE TEXTO

Escritórios
Os dados dos escritórios da empresa também serão obtidos do arquivo
Excel EmpOff.xls, mas da planilha Office, que é a segunda planilha do
arquivo Excel EmpOff.xls.

Figura 38. A tabela Escritório

A chave desta tabela é Office, e os valores nesse campo serão associados


com os valores no campo Office da tabela Employee.

Geração de scripts usando o Assistente de Arquivo


Agora, vamos continuar com a geração do script de carga incluindo
comandos LOAD do QlikView para as duas planilhas que acabamos
de estudar.

96
QV_Developer_I_Course.book Page 97 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício
Tarefa:
Para criar esses comandos, usaremos o Assistente de Arquivo na caixa
de diálogo Editar Script.
1 Acione o QlikView e salve uma cópia de trabalho do arquivo
QVDeveloperI_Chapter11.qvw no diretório de trabalho deste capítulo
(C:\QlikViewTraining\DeveloperI\Chapter11).
2 Abra a caixa de diálogo Editar Script no menu ou na barra de
ferramentas.
3 Inclua uma nova aba e nomeie-a como Dados do Arquivo.
4 Vá para o agrupamento Dados de Arquivos na parte inferior da aba
Dados.
5 Verifique se a caixa de seleção Caminhos Relativos está marcada.
6 Clique no botão Arquivos de Tabela… para abrir a caixa de diálogo
Abrir Arquivos Locais.
7 Localize o arquivo EmpOff.xml na pasta DataSources e clique em Abrir.
8 Verifique se as configurações padrão do Assistente de Arquivo estão
corretas. Elas devem ser as seguintes:
Tipo: Arquivos Excel (xls)
Tabela: Employee$
Opções | Rótulos: Rótulos Incluídos
Segue uma ilustração para comparação com as suas configurações.

Figura 39. O Assistente de Arquivo

97
QV_Developer_I_Course.book Page 98 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCISE

9 Clique no nome do campo EmpID e altere o nome para EmployeeID.


10 Pressione ENTER para inserir a alteração.
11 Clique em Terminar para retornar à caixa de diálogo Editar Script e
exibir o novo comando LOAD gerado para os dados de Funcionário.
12 Agora, inclua seus comentários nessa carga de dados e rotule a tabela
como Employee. Você também pode excluir o comando Directory;
gerado devido à especificação de Caminhos Relativos. Esses comandos
não serão necessários no nosso script.
13 Além do trabalho que concluímos até o momento, precisamos de um
campo [Employee Hire Year]. Inclua esse campo agora, usando a função
Year no campo [Hire Date]. Chame o novo campo de HireYear.
14 Os comandos de script deverão ter a seguinte aparência:
//*************** Employees table
***************
Employees:
LOAD
EmpID AS EmployeeID,
[Last Name],
[First Name],
Title,
[Hire Date],
Year([Hire Date]) AS HireYear,
Office,
Extension,
[Reports To],
[Year Salary]
FROM Datasources\EmpOff.xls (biff, embedded
labels, table is [Employee$]);

Nota: os nomes de campos que contêm espaços devem estar entre


colchetes (também é possível usar sinais de aspas " "), por exemplo,
[Último Nome].

98
QV_Developer_I_Course.book Page 99 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

15 Agora, siga o mesmo procedimento para os dados de Office. Essa tabela


está localizada na segunda planilha do arquivo Excel EmpOff.xls. Ao
abrir o Assistente de Arquivo, certifique-se de selecionar a planilha do
Excel Office$ na caixa rotulada como Tabela na primeira página do
assistente.

Figura 40. Selecionando outra planilha em um arquivo Excel.

16 Inclua um comentário de tabela e rotule o comando LOAD como


Escritórios. Agora, o comando a seguir deve estar incluído no seu script.
//*************** Offices table
***************
Offices:
LOAD Office,
OfficeAddress,
OfficePostalCode,
OfficeCity,
OfficeStateProvince,
OfficePhone,
OfficeFax,
OfficeCountry
FROM Datasources\EmpOff.xls (biff, embedded
labels, table
is [Office$]);
17 Salve e Recarregue o documento.

99
QV_Developer_I_Course.book Page 100 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | ADICIONANDO DADOS DE TEXTO

18 Abra o Visualizador de Tabelas e observe os links nos campos Office


e EmployeeID.
19 Na aba Principal do layout, inclua Listas para OrderID, EmployeeID e
Office. Faça as seleções e observe que as tabelas são vinculadas.

100
QV_Developer_I_Course.book Page 101 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | GERANDO DADOS NO SCRIPT DO QLIKVIEW

12 GERANDO DADOS NO SCRIPT DO QLIKVIEW

Objetivos
• Usar Resident Load
• Criar dados a partir de outros dados, usando load inline e
autogenerate
• Carregar dados usando scripts externos com Include

Neste capítulo, examinaremos alguns métodos diferentes de criação de


dados diretamente no script do QlikView. Veremos como podemos usar
tabelas lidas no QlikView anteriormente no script e também como podemos
gerar dados diretamente no QlikView.
No exemplo deste capítulo, uma das Dimensões Principais é Sales Person.
Como não há nenhum campo para Sales Person incluído nos nossos dados
de origem, será necessário gerar esse campo no QlikView durante o
carregamento dos dados. Neste capítulo, trabalharemos com cargas
residentes e condicionais, além de apresentar o conceito de criação de várias
tabelas lógicas no QlikView com base em uma única tabela de dados de
origem.

Carga Residente
Nesta seção, aprenderemos como criar uma nova tabela lógica no QlikView
com base em uma tabela carregada anteriormente (residente). Na verdade,
Sales Person é um valor concatenado de Primeiro Nome e Último Nome na
tabela Employees. Começaremos criando esse campo na tabela Employees,
pois não estamos interessados apenas no nome ou sobrenome de nossos
funcionários.

Avançado – Usando Pedidos para determinar Vendedor.


Acabamos de usar um método bastante simples que nos permitiu amostrar
os valores de campo necessários para o campo SalesPerson. Esse método é
perfeitamente adequado, mas o que acontecerá se obtivermos Funcionários
que estão envolvidos com vendas e que tenham um Título que não começa
com Vendas? Para contornar esse problema, podemos ter o mesmo
resultado usando uma solução mais elegante.

101
QV_Developer_I_Course.book Page 102 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | GERANDO DADOS NO SCRIPT DO QLIKVIEW

Podemos começar observando que todos os vendedores estão incluídos nos


nossos dados de vendas. Depois, eles devem estar no campo EmployeeID
da tabela Orders. Comecemos criando um novo campo EmployeeSalesID
no script no qual a tabela Orders está sendo carregada. Ao fazer referência
a esse campo posteriormente no script, podemos assegurar que todos os
funcionários a quem tenham sido creditadas vendas serão listados no
campo SalesPerson.

Criando dados usando Load Inline e Autogenerate


Agora, podemos trabalhar nos dois outros campos de dimensão de tempo
necessários no documento QlikView. Precisamos incluir Trimestre e
MêsAno. Usaremos uma técnica bastante simples para gerar Trimestre, que
introduzirá os conceitos das tabelas Load Inline e autogenerate. Para
MêsAno, apresentaremos algumas funções de data do QlikView adicionais,
além de mostrar como especificar formatos de data.

Tabelas inline
Em alguns casos, pode ser vantajoso inserir os dados de tabela diretamente
no script. Isso é feito com a ajuda do chamado comando load inline.

Tabelas autogenerate
Uma outra forma de gerar dados no QlikView é usando a cláusula
AUTOGENERATE no comando LOAD. A especificação de
AUTOGENERATE em um comando LOAD gerará automaticamente um
número de registros específico. Somente constantes e funções sem
parâmetros são permitidas em AUTOGENERATE LOAD. As funções recno()
ou rowno() são usadas com frequência para fornecer um número exclusivo
para cada linha.

Include
É possível incluir em um script referências a arquivos que contêm, elas
próprias, o script ou partes de um script. Nesta seção, aprenderemos como
incluir ou fazer referência a um arquivo de script externo já existente no
comando load. Isso pode ser feito com facilidade usando o comando
include, sem precisar duplicar diretamente o script existente no nosso
próprio script.
Primeiro, vamos examinar o que vai ser incluído no script.
Usando o Bloco de Notas ou uma ferramenta semelhante, abra o arquivo de
texto email.txt localizado no diretório Datasources da pasta
C:\QlikViewTraining\DeveloperI\Chapter12

102
QV_Developer_I_Course.book Page 103 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | GERANDO DADOS NO SCRIPT DO QLIKVIEW

Esse arquivo contém o script a seguir.


Rem *** creates e-mail address;
LOAD
EmpID as EmployeeID,
IF((ord("First Name") >= 65 AND ord("First Name") <=
90), chr(ord("First Name")+32),
IF((Left("First Name",1)='Ä' OR Left("First
Name",1)='ä'), chr(97),
IF((Left("First Name",1)='Å' OR Left("First
Name",1)='å'), chr(97),
IF((Left("First Name",1)='Ö' OR Left("First
Name",1)='ö'), chr(111),Left("First Name",1)))))&
IF((ord("Last Name") >= 65 AND ord("Last Name") <=
90), chr(ord("Last Name")+32),
IF((Left("Last Name",1)='Ä' OR Left("First
Name",1)='ä'), chr(97),
IF((Left("Last Name",1)='Å' OR Left("First
Name",1)='å'), chr(97),
IF((Left("Last Name",1)='Ö' OR Left("First
Name",1)='ö'), chr(111), Left("Last Name",1)))))&
IF((ord(Right("Last Name",1)) >= 65 AND
ord(Right("Last Name",1)) <= 90), chr(Right("Last
Name",1))+32,
IF((Right("Last Name",1)='Ä' OR Left("First
Name",1)='ä'), chr(97),
IF((Right("Last Name",1)='Å' OR Left("First
Name",1)='å'), chr(97),
IF((Right("Last Name",1)='Ö' OR Left("First
Name",1)='ö'), chr(111), Right("Last Name",1)))))&
'@'&
IF(Office=1,'stockholm.se',
IF(Office=2,'lund.se',
IF(Office=3,'paris.fr',
IF(Office=4,'nice.fr','seattle.com')))) as "e-mail"
FROM datasources\empoff.xls(ansi, biff, embedded
labels, table is [Employee$]);
Esse é um exemplo de um comando load complexo, que se baseia
principalmente em comandos if aninhados. Nesse caso, queremos criar
endereços de e-mail a partir das informações contidas na nossa base de
dados. É necessário satisfazer várias condições, o que leva a um comando
LOAD complexo que gera uma nova tabela lógica com dois campos.

103
QV_Developer_I_Course.book Page 104 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | GERANDO DADOS NO SCRIPT DO QLIKVIEW

EmployeeID e o novo campo e-mail serão carregados, sendo que o primeiro


fornece a associação com o restante da estrutura.
O comando LOAD cria uma assinatura que consiste na primeira letra do
primeiro nome, e a primeira e a última letra do último nome. Ele também
assegura que não haja letras maiúsculas na assinatura, somente letras
minúsculas. Letras estrangeiras (suecas), como å, Å, ä, Ä, ö e Ö também são
removidas. Após a assinatura, é anexado @, seguido do endereço do
servidor apropriado. Esse é determinado pelo escritório no qual o
funcionário trabalha.

104
QV_Developer_I_Course.book Page 105 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício
Tarefa:
1 Acione o QlikView e salve uma cópia de trabalho do arquivo QlikView
QVDeveloperI_Chapter12.qvw no diretório de trabalho deste capítulo
(C:\QlikViewTraining\DeveloperI\Chapter12).
2 Abra a caixa de diálogo Editar Script.
3 Localize a tabela Employees na aba Dados do Arquivo e substitua os
campos First Name e Last Name pela seguinte linha:
[First Name]&' '&[Last Name] AS Name,
4 Inclua uma nova aba no script e nomeie-a como Sales Person.
Agora, vamos incluir outra tabela carregada no script mas, em vez de
usar um assistente para criar o código, copiaremos o código existente e o
modificaremos. Primeiro, localize a tabela Employees carregada na aba
do script Dados do Arquivo. Copie (realce e pressione CTRL+C ou use
Editar… Copiar) todas as linhas desse comando. Então, volte para a aba
Sales Person e Cole (CTRL+V ou use Editar… Colar). Você deve ter
agora uma duplicata da tabela Employee carregada na nova aba. Edite o
comando LOAD da seguinte forma:
5 Altere o nome da tabela para Sales Person.
6 Altere o nome EmpID para usar o nome do campo do QlikView
EmployeeID (não vamos mais ler os dados de origem, mas os dados já
carregados e o campo renomeado na tabela Employees).
7 Remova a operação de concatenação de First Name e Last Name do
campo Name e use o campo SalesPerson.
8 Remova os campos [Hire Date], HireYear, Office, Extension, [Reports
To] e [Year Salary] do comando LOAD.
9 Remova a vírgula do campo Title (agora ele é o último campo nesta
carga) e o renomeie como SalesTitle.
10 Remova a especificação FROM, pois esta carga não será lida de um
arquivo em disco.
11 Inclua uma especificação RESIDENT que aponte para a tabela residente
da qual desejamos carregar, no mesmo local que o FROM anterior.
O script deverá ter a seguinte aparência:
//************** SalesPersons table
**************
SalesPersons:
LOAD
EmployeeID,

105
QV_Developer_I_Course.book Page 106 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCISE

Name AS SalesPerson,
Title AS SalesTitle
RESIDENT Employees;
Agora, queremos limitar a carga de todos os registros de dados de
Funcionário àqueles que podemos identificar como vendedores. Para
fazer isso, é necessário alterar novamente o código do script. Primeiro,
remova o ponto-e-vírgula (;) localizado após Resident Employee. Em
seguida, inclua a condição where após a linha Resident, da seguinte
forma:
WHERE Título LIKE 'Sales*' or Título='President';
12 O operador LIKE funciona com o curinga (*) e pesquisa o campo e
localiza todos os valores que começam com Vendas.
13 Salve e Recarregue o documento. Inclua listas para Name, Title e
SalesTitle na pasta Principal. Selecione Todos no campo SalesTitle e
observe que apenas alguns dos valores de Name e Title são mostrados
como valores possíveis (em branco). Para que um valor da tabela
Employees original seja incluído na nova tabela lógica SalesPersons,
ele deve atender a pelo menos uma das condições definidas. A primeira
condição é que o valor no campo Title deve começar com Vendas. A
segunda condição é que o campo Title seja igual a President.
14 Salve o documento.

Tarefa:
1 Inclua a linha do script a seguir no comando LOAD da tabela Pedidos,
imediatamente após o carregamento do campo EmployeeID.
EmployeeID as EmployeeSalesID,
2 Em seguida, comente a condição WHERE no comando LOAD da tabela
SalesPerson e crie uma nova condição WHERE para usar a função
exists do QlikView.
Vendedores:
LOAD EmployeeID,
Name AS SalesPerson,
Title AS SalesTitle
RESIDENT Employees
//WHERE Title LIKE 'Sales*' or Title='President';
WHERE exists(EmployeeSalesID, EmployeeID);
A condição na cláusula Where assegura que os dados carregados tenham
valores correspondentes no campo EmployeeSalesID. Conforme
indicado pelo nome, a função exists pode ser usada para verificar se um

106
QV_Developer_I_Course.book Page 107 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

valor de campo específico existe em um campo especificado dos dados


carregados até o momento. Cuidado com a ordem dos comandos no
script, pois o campo de referência deve ser preenchido antes de verificar
os valores. Nesse exemplo, a tabela Orders deve ser carregada antes da
tabela Sales_Person para que essa condição funcione corretamente.
3 Salve e feche a caixa de diálogo Editar Script.
4 Para verificar a funcionalidade do script, inclua uma lista OrderID,
clique com o botão direito do mouse e escolha Selecionar Todos. Os
valores associados das outras listas devem ficar facilmente aparentes
do que sabemos sobre esses dados.

Tarefa:
1 Retorne ao arquivo com o qual você está trabalhando neste capítulo.
2 Abra a caixa de diálogo Editar Script no menu ou na barra de
ferramentas.
3 Posicione o cursor perto da parte superior, após o comando Connect da
aba Principal. Inclua um comentário denominado Trimestres Definidos
para carregar os dados de Trimestre.
4 Inclua o seguinte comando no script:
Quarters:
LOAD* INLINE [
Month, Quarter
1,Q1
2,Q1
3,Q1
4,Q2
5,Q2
6,Q2
7,Q3
8,Q3
9,Q3
10,Q4
11,Q4
12,Q4];
Observe que um load inline contém os nomes de campos e os dados
entre colchetes ([]). Veja também que os nomes de campos estão
localizados na primeira linha e os valores de dados são separados por
vírgulas. A tabela digitada no script associa meses numéricos ao
trimestre correspondente. Quando o script é executado, um novo campo
(Quarter) é gerado.
5 Remova o comentário da coluna Quarter da tabela Calendário Mestre

107
QV_Developer_I_Course.book Page 108 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCISE

6 Salve e Recarregue o documento.


7 Inclua o novo campo Quarter na pasta Principal do documento
QlikView e selecione um valor para ver os pedidos associados e outros
dados relacionados.

Figura 41. Lista Trimestres

DICA: as tabelas inline também podem ser geradas com o Assistente Inline
que é aberto por um botão no grupo Dados Inline do editor de scripts.

Tarefa:
1 Retorne ao arquivo com o qual você está trabalhando neste capítulo.
2 Abra a caixa de diálogo Editar Script no menu ou na barra de
ferramentas.
3 Posicione o cursor na parte inferior da aba Principal.
4 Selecione Incluir no comando de menu Editar.
5 Pesquise o arquivo email.txt localizado no diretório Datasources e
clique em Abrir. A linha a seguir será incluída no script.
$(Include=datasources\email.txt)
Observe que não há um ponto-e-vírgula depois do comando, mas pode
haver um ou mais pontos-e-vírgulas no arquivo de texto incluído.
6 Salve e Recarregue o script.
7 Inclua uma nova pasta ao layout e nomeie-a como Employees. Inclua o
novo campo e-mail como uma lista.

Nota: qualquer parte ou mesmo o script inteiro pode estar localizado em um


Include file externo. Também pode haver vários Include files em um script.

108
QV_Developer_I_Course.book Page 109 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONSIDERAÇÕES SOBRE SCRIPTS

13 CONSIDERAÇÕES SOBRE SCRIPTS

Objetivos
• Criar uma Chave Sintética
• Compreender as Referências Circulares
• Definir Tabelas Parcialmente Desconectadas
• Saber porque essas condições devem ser evitadas

Ao ler dados no QlikView, às vezes encontramos estruturas de dados


complexas que não podem ser entendidas diretamente e que podem ter um
desempenho menos eficiente. Quando isso ocorre, você precisa saber como
contornar o problema. Neste capítulo, veremos alguns dos problemas
comuns do QlikView e apresentaremos um método para resolvê-los.

109
QV_Developer_I_Course.book Page 110 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Lendo a Tabela Remessas


Agora, vamos incluir o script de carga para trazer a tabela de remessas.

Tarefa:
1 Vá para o Editor de Scripts e para a parte inferior da aba Dimensions.
2 Clique em Selecionar para ir para a caixa de diálogo Criar Comando
Select. Selecione a tabela Shipments e leia todos os campos do
documento QlikView com preceding load.
3 Salve e Recarregue o documento.
4 Abra o Visualizador de Tabelas e estruture as tabelas de forma que seja
fácil acompanhar as conexões.
Como você pode ver no Visualizador de Tabelas e na figura a seguir, a
estrutura mudou bastante desde a última vez que examinamos a estrutura
das tabelas. Em vez de ter duas tabelas de fatos em Orders e OrderDetails,
agora temos uma Tabela $Syn 3 que se conecta às tabelas de fatos e
dimensões.

Figura 42. O Visualizador de Tabelas depois do carregamento da


tabela Remessas.

110
QV_Developer_I_Course.book Page 111 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONSIDERAÇÕES SOBRE SCRIPTS

Tabelas de Chaves Sintéticas


Não recomendável ter várias chaves comuns em várias tabelas em uma
estrutura de dados do QlikView. Isso pode fazer o QlikView usar chaves
complexas (também conhecidas como chaves sintéticas) para gerar as
conexões na estrutura de dados. Em geral, as chaves sintéticas utilizam
muitos recursos e podem tornar os cálculos lentos e, em situações extremas,
sobrecarregar o aplicativo. Elas também dificultam a compreensão e a
manutenção do documento. Existem casos em que não é possível evitar as
chaves sintéticas (por exemplo, em tabelas de Correspondência de Intervalo)
mas, em geral, as chaves sintéticas devem ser sempre eliminadas, quando
possível.
Quando carregamos a tabela Shipments, havia vários campos comuns à
tabela OrderDetails e à tabela Shipments e, por isso, o QlikView criou um
novo campo, $Syn 1. Além disso, havia vários campos comuns à tabela
Orders e à tabela Shipments, o que fez o QlikView gerar campos $Syn 2 e
$Syn 3. Não é raro obter uma estrutura de dados semelhante a essa no
QlikView; porém, devido aos motivos citados, você sempre deve tentar
evitar esse tipo de estrutura. Existem várias maneiras de eliminar as chaves
sintéticas no QlikView, e é importante conhecer a estrutura de dados e as
fontes de dados para criar a solução correta.
Existe um relacionamento de um para um entre as tabelas OrderDetails e
Shipments. Também podemos ver que o campo ProductID obtém os valores
diretamente da Tabela OrderDetails. Por isso, podemos remover o campo
ProductID da tabela Shipments. Para obter uma chave exclusiva entre as
tabelas OrderDetails e Shipments, podemos criar uma chave composta dos
campos comuns restantes ProductID e LineNo.

111
QV_Developer_I_Course.book Page 112 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Chaves Sintéticas


Tarefa:
1 Vá para o Editor de Scripts.
2 Localize a tabela Remessas.
3 Faça um comentário do campo ProductID.
4 Crie um campo composto de OrderID e LineNo usando “&” para
concatenar os campos. Também coloque um separador entre os campos.
Nomeie o campo chave como OrderLineKey.
5 Use a função autonumber para obter um número em vez de texto para o
campo chave. Isso é especialmente útil ao trabalhar com tabelas grandes,
pois os valores numéricos ocupam menos memória que os valores de
texto.
Comente os campos OrderID e LineNo. Isso é necessário para evitar a
chave sintética e ter apenas um campo de conexão (OrderLineKey) entre
as tabelas Shipments e OrderDetails.
O script deve ter a seguinte aparência:
//*************** Shipments table
***************
Shipments:
LOAD CustomerID,
EmployeeID,
//LineNo,
//OrderID,
autonumber(OrderID &'-'& LineNo) as
OrderLineKey,
//ProductID,
ShipmentDate,
ShipperID;
SQL SELECT *
FROM Shipments;
6 Crie a mesma OrderLineKey na tabela OrderDetails.
autonumber(OrderID &'-'& LineNo) as OrderLineKey
7 Salve e Recarregue o script.

112
QV_Developer_I_Course.book Page 113 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

8 O QlikView avisa que foram encontradas referências circulares ou loops


na estrutura de tabelas. Clique em OK.

Figura 43. Aviso sobre referências circulares

Ao trabalhar com estruturas de dados complexas que contêm muitas


tabelas, é possível ter situações em que a interpretação dos dados é incerta.
O QlikView foi desenvolvido de forma a lidar com as estruturas mais
complexas e interpretá-las corretamente, mas há algumas limitações. É
importante estar ciente dessas limitações e saber como solucionar o
problema dos loops quando eles surgirem.
Retornaremos em breve à geração do script, mas primeiro vamos examinar
os loops e suas consequências.

113
QV_Developer_I_Course.book Page 114 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONSIDERAÇÕES SOBRE SCRIPTS

Referências Circulares
Considere o exemplo a seguir, que consiste em uma estrutura de dados
simples com três tabelas:

Como você pode ver, é possível andar em círculos. Nesse exemplo, é fácil
detectar uma referência circular, mas isso pode ser mais difícil em estruturas
complexas.
As estruturas de dados desse tipo devem ser evitadas, pois elas podem causar
ambiguidades na interpretação dos dados.
Infelizmente, as referências circulares são bastante comuns e não é raro
encontrá-las. Às vezes, elas são causadas por um desenho de base de dados
deficiente, mas em alguns casos são inevitáveis.
Em algumas situações, um campo (ou uma tabela) pode ter várias funções;
por exemplo, uma empresa pode ser fornecedor e cliente. O campo (ou a
tabela) deverá então ser carregado no QlikView duas vezes com nomes
diferentes.
O QlikView resolve o problema de referências circulares definindo uma
tabela parcialmente desconectada. Se o QlikView encontrar um loop ao
executar o script de carga, uma caixa de diálogo de aviso será mostrada e
uma ou mais tabelas serão definidas como parcialmente desconectadas. O
QlikView tentará tornar a tabela mais longa parcialmente desconectada.
Muitas vezes, essa é uma tabela de transações. Se desejar sair do padrão do
QlikView, você poderá definir a tabela a ser parcialmente desconectada
usando um comando loosen table no script. Também é possível alterar
interativamente a configuração de tabelas parcialmente desconectadas após
a execução do script na aba Tabelas das Propriedades do Documento.
Você também pode determinar as tabelas da sua estrutura que são definidas
para serem parcialmente desconectadas usando o utilitário Visualizador de
Tabelas. As tabelas parcialmente desconectadas mostram linhas pontilhadas
como conectores.

114
QV_Developer_I_Course.book Page 115 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONSIDERAÇÕES SOBRE SCRIPTS

Para evitar referências circulares e tabelas parcialmente desconectada,


renomeie os campos que causam os loops ou às vezes você terá de unir
várias tabelas em uma para resolver a referência circular.

Causas das Referências Circulares


Muitas vezes, as estruturas circulares resultam de campos chave não
planejados na carga de dados. Recebemos no nosso documento QlikView
um aviso sobre referências circulares porque ocorreram vários campos com
nomes idênticos em tabelas diferentes.

115
QV_Developer_I_Course.book Page 116 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 117 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Referências Circulares


Tarefa:
1 Abra o Visualizador de Tabelas e organize as tabelas de forma que seja
fácil visualizá-las.
Como pode ser visto claramente no exemplo a seguir, temos uma referên-
cia circular entre as tabelas Orders, Shipments e OrderDetails. Suas
tabelas podem ter uma aparência um pouco diferente. Nesse caso, é fácil
observar que as conexões entre as tabelas formam um círculo. Também
podemos ver que a tabela OrderDetails ficou parcialmente desconectada.
As tabelas parcialmente desconectadas serão explicadas posteriormente
neste capítulo.

Figura 44. Referências circulares conforme mostradas no Visualizador


de Tabelas

117
QV_Developer_I_Course.book Page 118 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Em modelos de dados mais complexos, talvez a localização da referência


circular não seja óbvia somente com a observação do visualizador de
tabelas.
Execute os passos a seguir para determinar a referência circular:
1 Vá para a pasta do sistema, clique com o botão direito do mouse na lista
$Table e selecione Propriedades.
2 Selecione Mostrar Frequência na aba Geral e classifique pela frequência.
É possível ver a frequência nas listas $Field e $Table. Agora, vamos
selecionar todas aquelas que têm uma frequência maior que 1 em $Field
e depois faremos o mesmo para $Table.
3 Remova todos os valores em $Field que têm a frequência 1 e, em
seguida, faça o mesmo em $Table. Continue até que não seja mais
possível remover valores com a frequência 1.
Se não for possível obter a frequência 1 para todas as tabelas restantes
possíveis na lista $Table, teremos uma referência circular em algum
ponto do aplicativo.

Figura 45. Todos os valores possíveis têm uma frequência maior que 1

118
QV_Developer_I_Course.book Page 119 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Se agora examinarmos melhor todos os valores possíveis na lista $Field,


poderemos ver que algum desses campos provavelmente não estão
conectados. Os campos CustomerID, EmployeeID, OrderID e
ShipperID são relevantes.
4 Selecione OrderID na lista $Field.
5 Verifique as tabelas nas quais o campo OrderID ocorre.
Para remover a referência circular, é necessário estudar as fontes de
dados novamente. Volte para o nosso plano de Business Intelligence.
Nas regras, podemos ver que todos os campos comuns entre as tabelas
Shipments e Orders se originam na tabela Orders; assim, no documento
QlikView, é seguro simplesmente comentar ou remover esses campos da
tabela Shipments. Isso pode ser feito devido à estrutura dos nossos
dados. Se nem todos os valores estivessem na tabela Orders, seria
necessário obter uma outra solução para o problema com a referência
circular.
6 Vá para o Editor de Scripts e localize a tabela Shipments.
7 Comente os campos CustomerID, EmployeeID, ProductID e
ShipperID. Verifique se as vírgulas e os pontos-e-vírgulas estão corretos.
Quando esse passo for concluído, a parte da tabela Shipments no script
deve ter uma aparência semelhante ao exemplo a seguir:
//*************** Shipments table
***************
LOAD //CustomerID,
//EmployeeID,
//LineNo,
//OrderID,
//ProductID,
autonumber(OrderID & '-' & LineNo) as
OrderLineKey,
ShipmentDate;
//ShipperID;
SQL SELECT *
FROM Shipments;
8 Salve o documento e Recarregue o script.
9 Abra o Visualizador de Tabelas e observe o resultado. A referência
circular deve ter desaparecido e não deve haver chaves sintéticas.

119
QV_Developer_I_Course.book Page 120 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | CONSIDERAÇÕES SOBRE SCRIPTS

Verificar os Números
Um aspecto importante do desenvolvimento de aplicativos QlikView,
mesmo neste estágio inicial, é a necessidade de confirmar se os dados que
estão sendo carregados no QlikView estão corretos.
Isso não precisa ser complicado ou intrincado. Muitos desenvolvedores
usariam uma combinação de listas e caixas de estatísticas, juntamente com
números dos dados originais, para assegurar que o aplicativo QlikView
esteja funcionando corretamente.
Por exemplo, talvez você esteja trabalhando em um aplicativo de Análise de
Vendas e precise verificar os números das vendas por região e por data para
certificar-se de que o script de carga e o calendário estejam funcionando
corretamente no aplicativo QlikView.
Nesse exemplo, você pode criar uma aba no QlikView e incluir listas para as
regiões, datas e produtos de vendas, além de incluir uma caixa de estatísticas
com a soma do valor de vendas.
Em seguida, você pode fazer seleções e confirmar os números com o
original.
Para cada grande mudança de desenho, é necessário desenvolver um meio de
confirmar se os números e os dados ainda estão corretos.

120
QV_Developer_I_Course.book Page 121 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Verificar os Números


Tarefa:
1 Caso ele ainda não esteja aberto, inicie o aplicativo QlikView com o
qual você está trabalhando neste capítulo.
2 Abra o arquivo SummaryReport.xls (um arquivo Excel que se encontra
no diretório do capítulo)
3 No arquivo QlikView, alterne para a pasta Principal.
4 Adicione listas para DivisionName, Year e CategoryName.
5 Inclua uma caixa de estatísticas com a soma dos números de vendas.
(Dica: use o campo LineSalesAmount.)
6 Faça as Seleções de Year, Division e CategoryName, e compare os
resultados de vendas com o Relatório Resumido do Excel. Clique em um
mês e em uma região, e compare os resultados do QlikView com os
resultados no Relatório Resumido do Excel. Verifique duas vezes se os
números são coerentes em um nível superior.
7 Para crédito adicional, crie uma tabela dinâmica (objeto gráfico)
usando as mesmas dimensões das listas acima (DivisionName, Year
e CategoryName) e a expressão para vendas usada na Caixa de Estatís-
ticas (Sum(LineSalesAmount). Também será necessário definir a caixa de
verificação Mostrar Subtotais para as dimensões Year e DivisionName.

Figura 46. Como deve ser a aparência da tabela dinâmica de créditos adicionais.

121
QV_Developer_I_Course.book Page 122 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 123 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | ARQUIVOS QVD (ARQUIVOS DE DADOS QLIKVIEW)

14 ARQUIVOS QVD (ARQUIVOS DE DADOS QLIKVIEW)

Objetivos
• Definir arquivos QVD
• Explicar porque os arquivos QVD são tão importantes
• Criar um arquivo QVD manualmente
• Gerar um arquivo QVD automaticamente

Um dos recursos mais importantes da criação de scripts no QlikView é a


utilização dos arquivos QVD (Arquivos de Dados QlikView). Um arquivo
QVD contém uma tabela de dados exportada do QlikView. O QVD é um
formato QlikView nativo e pode ser gravado e lido apenas pelo QlikView. O
formato de arquivo é otimizado para agilizar a leitura de dados de um script
do QlikView, mas também é bastante compacto. Normalmente, a leitura de
dados de um arquivo QVD é de 10 a 100 vezes mais rápida do que a leitura
de outras fontes de dados.

Formato de Arquivo QVD


Um arquivo QVD contém exatamente uma tabela. Em termos conceituais,
ele é muito semelhante a qualquer arquivo de digitado (como csv, dif, biff ou
fix). Um arquivo QVD consiste em três partes:
• Um cabeçalho XML composto de modo apropriado (com o conjunto de
caracteres UTF-8) que descreve os campos da tabela, o layout das
informações subsequentes e alguns outros metadados.
• Tabelas de símbolos em um formato com bytes.
• Dados da tabela em um formato com bits.

Utilização de Arquivos QVD


Os arquivos QVD podem ser usados para vários fins. É possível identificar
pelo menos quatro usos principais. Em muitos casos, dois ou mais deles
poderão ser aplicados ao mesmo tempo.
• Aumentando a Velocidade de Carga - Se forem armazenados em buffer
partes de dados de entrada de arquivos QVD que não mudam ou que
mudam lentamente, a execução do script poderá ser consideravelmente
mais rápida para conjuntos grandes de dados. Assim, para conjuntos
grandes de dados, será mais fácil atender aos limites da janela de tempo
de recarga. No desenvolvimento de aplicativos, muitas vezes é necessário
executar o script repetidamente. O uso de buffers de QVD nessas
situações pode reduzir significativamente os tempos de espera repetidos,
mesmo que o conjunto de dados não seja grande.

123
QV_Developer_I_Course.book Page 124 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | ARQUIVOS QVD (ARQUIVOS DE DADOS QLIKVIEW)

• Diminuindo a Carga nos Servidores de Base de Dados - Se forem


armazenados em buffer partes de dados de entrada de arquivos QVD
que não mudam ou que mudam lentamente, o volume de dados lidos de
fontes de dados externas pode ser reduzido de forma considerável. Isso
reduz a carga nas bases de dados externas e o tráfego na rede. Quando
vários scripts do QlikView compartilham os mesmos dados, basta
carregá-los uma vez da base de dados de origem. Os outros aplicativos
podem utilizar os dados de um arquivo QVD.
• Consolidando Dados de Vários Aplicativos QlikView - É possível
consolidar dados de vários aplicativos QlikView com a ajuda de
arquivos QVD. Com o comando de script Binary, você pode apenas
carregar dados de um único aplicativo QlikView para outro. Com os
arquivos QVD, um script do QlikView pode combinar dados de
qualquer número de aplicativos QlikView. Isso aumenta as
possibilidades, por exemplo, para aplicativos que consolidam dados
semelhantes de unidades de negócios diferentes etc.
• Carga Incremental - Em muitos casos comuns, a funcionalidade QVD
pode ser usada para facilitar a carga incremental, isto é, carregar apenas
os novos registros de uma base de dados crescente.

Criando Arquivos QVD


Os arquivos QVD podem ser criados de três maneiras. Neste curso, vamos
explorar os dois primeiros métodos.
• Criados e nomeados explicitamente a partir do script por meio do
comando STORE. Basta indicar no script que uma tabela lida
anteriormente ou parte de uma tabela residente deve ser exportada para
um arquivo nomeado explicitamente em um local de sua escolha.
• Criados e mantidos automaticamente a partir do script. Ao preceder um
comando LOAD ou SELECT com o prefixo BUFFER, o QlikView criará
automaticamente um arquivo QVD que, se determinadas condições
forem atendidas, será usado no lugar da fonte de dados original ao
recarregar dados posteriormente. O arquivo QVD terá um nome oculto
baseado em um hash do comando LOAD/SELECT e normalmente reside
na pasta Dados de aplicativos do Windows.
• Criados e nomeados explicitamente a partir do layout ou através de
Automação. Dados exportados do layout do QlikView por meio de
comandos da GUI ou macros de Automação. Na GUI, você encontrará
o QVD como um dos formatos de exportação possíveis no comando
EXPORTAR..., localizado no menu objeto da maioria dos objetos
de pasta.

124
QV_Developer_I_Course.book Page 125 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | ARQUIVOS QVD (ARQUIVOS DE DADOS QLIKVIEW)

Criação Manual de um Arquivo QVD no Script


Criaremos agora um arquivo QVD no script de carga usando o comando
store. Esse comando criará um arquivo QVD nomeado explicitamente.
A sintaxe do comando store é a seguinte:
store [(*|<lista_de_campos>) from] <tabela> into
<nome_do_arquivo>;
A leitura do script acima pode ser definida como:
<tabela> é uma tabela de script rotulada residente. <nome_do_arquivo> é
interpretado de forma semelhante aos nomes em comandos load, ou seja, os
comandos directory se aplicam. Os campos da <lista de campos> podem ser
renomeados usando o operador AS.

125
QV_Developer_I_Course.book Page 126 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Criação Manual do QVD


Tarefa:
1 Abra a caixa de diálogo Editar Script no menu ou na barra de
ferramentas.
2 Localize o comando load da tabela Customers na guia Dimensions
3 Após o comando LOAD da tabela Customers, inclua o comando STORE
da seguinte forma:
STORE Customers into datasources/customers.qvd;
4 Clique em OK e depois salve o arquivo. Recarregue o script.
Você não verá nenhuma alteração na pasta Sistema no seu aplicativo.
Não existem novas tabelas ou novos campos lógicos. O comando
STORE que você acabou de incluir não afeta seu documento QlikView
atual, além de executar um comando de script adicional. No entanto,
quando esse comando tiver sido executado, existirá um novo arquivo de
dados que poderá ser lido por esse documento QlikView ou por
qualquer documento QlikView com acesso à pasta na qual o arquivo
customers.qvd foi colocado. Para testar isso, vamos substituir
temporariamente o comando select de Customers por um novo
comando load do arquivo customers.qvd que acabamos de criar.
5 Abra novamente a caixa de diálogo Editar Script no menu ou na barra
de ferramentas.
6 Comente o comando SELECT de Customers e o comando STORE que
acabamos de incluir.

126
QV_Developer_I_Course.book Page 127 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

7 Agora, inclua um novo comando LOAD de Arquivos de Tabela usando o


Assistente para Arquivos de Tabelas. Localize o arquivo
customers.qvd na pasta Datasources e abra-o

8 Observe que o Tipo está indicado corretamente como QVD. Selecione


Terminar para fechar a caixa de diálogo.
9 Você pode remover o comando Directory e incluir o rótulo de tabela
Customers no novo comando LOAD. Agora, o script deve ter a seguinte
aparência:
Customers:
LOAD Address,
City,
CompanyName,
ContactName,
Country,
CustomerID,
Fax,
Phone,
PostalCode,

127
QV_Developer_I_Course.book Page 128 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

StateProvince
FROM Datasources\Customers.qvd (qvd);
10 Clique em OK e depois salve o arquivo. Recarregue o script.
Novamente, você não perceberá mudanças na pasta Sistema no seu
aplicativo, pois não alteramos nenhuma tabela, apenas o local e o tipo de
onde os dados são lidos. Em um ambiente normal, provavelmente você
também veria uma grande diferença no tempo que leva para a leitura da
tabela Customers, pois um arquivo QVD é lido no QlikView muito rápido.
Claro, o inconveniente dessa técnica é que quando os dados da base de
dados Clientes mudarem, ela não será lida no documento QlikView. Isso
será tratado na próxima seção.

128
QV_Developer_I_Course.book Page 129 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | ARQUIVOS QVD (ARQUIVOS DE DADOS QLIKVIEW)

Criação Automática de um Arquivo QVD no Script


Os arquivos QVD também podem ser criados e mantidos automaticamente
usando o prefixo buffer. Esse prefixo pode ser usado com a maioria dos
comandos load e select no script. Ele indica que um arquivo QVD será
usado para armazenar em cache/buffer o resultado do comando. Existem
algumas limitações; a mais evidente é que deve haver um comando de
arquivo load ou select na “base”. O nome do arquivo QVD é um nome
calculado (um hash hexadecimal de 160 bits de comandos e outras
informações distintivas) e geralmente é armazenado na pasta DATA:
C:\Document and Settings\%usuário%\Configurações Locais\Dados de
Aplicativos\QlikTech\QlikView\Buffers

DICA: para determinar e/ou alterar onde o QlikView colocará os arquivos QVD de
buffer, além dos outros locais de pasta padrão, você pode verificar em
Configuração... Preferências do Usuário... Pastas

A sintaxe do prefixo pode ser:


buffer [(opção [,opção])] load …
ou
buffer [(opção [,opção])] select …
onde a opção é uma das seguintes:
• incremental - permite a leitura apenas de parte de um arquivo
subjacente. O tamanho anterior do arquivo é armazenado no cabeçalho
XML do arquivo QVD. Isso é especialmente útil em arquivos de log.
Todos os registros carregados anteriormente são lidos no arquivo QVD,
ao passo que os novos registros subsequentes são lidos na fonte original
e, por fim, é criado um arquivo QVD atualizado.
• stale (after) valor [ (days | hours) ] - geralmente usada com fontes de BD
em que não há nenhuma data/hora simples nos dados originais. Em vez
disso, é especificado quanto tempo o instantâneo QVD pode ter antes de
ser substituído por uma leitura atualizada do arquivo ou da base de
dados de origem.
Agora vamos revisar os dados da tabela Customers carregados para usar o
método automático de geração do arquivo QVD. De acordo com nosso
plano de projeto, os dados de Clientes são atualizados semanalmente; assim,
precisamos ler os dados atualizados apenas a cada sete dias. Portanto,
vamos alterar o script para incluir o prefixo buffer do QVD correto ao
comando SELECT de Customers original.

129
QV_Developer_I_Course.book Page 130 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Criação Automática do QVD


Tarefa:
1 Abra novamente a caixa de diálogo Editar Script no menu ou na barra
de ferramentas.
2 Comente o comando LOAD da tabela Customers do QVD incluído na
seção anterior e desfaça o comentário do comando LOAD de Customers
original.
3 Agora, inclua o prefixo buffer (stale after 7 days) no comando LOAD de
Customers. O script deverá ter a seguinte aparência:
Customers:
BUFFER (Stale After 7 days) LOAD
Address,
City,
CompanyName,
ContactName,
Country,
CustomerID,
DivisionID,
applymap ('Divisions_Map', DivisionID) AS
Division,
Fax,
Phone,
PostalCode,
StateProvince;
SQL SELECT * FROM Customers;
4 Clique em OK e depois salve o arquivo. Recarregue o script
Ao usar o prefixo buffer em comandos load ou select, nenhum comando
explícito para leitura é necessário. O QlikView determinará como usar os
dados do arquivo QVD ou como obter dados por meio de comando load ou
select original.
Independentemente do método QVD usado, quando nenhuma
transformação for aplicada nos campos lidos (além da renomeação de
campos), será usado o modo de leitura super-rápido (otimizado). Você pode
determinar o modo qvd usado examinando a caixa de diálogo Progresso da
Execução do Script.

130
QV_Developer_I_Course.book Page 131 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | ARQUIVOS QVD (ARQUIVOS DE DADOS QLIKVIEW)

Funções de Script do Arquivo QVD


Existem várias funções de script para o acesso aos dados localizados no
cabeçalho XML de um arquivo QVD. Essas funções estão descritas na seção
Funções de Arquivo do Manual de Referência do QlikView. Segue uma
amostra das novas funções disponíveis:
QvdCreateTime( nomedoarquivo) - Retorna a data/hora do cabeçalho XML
de um arquivo QVD, se houver ( caso contrário, NULL).
QvdNoOfRecords( nomedoarquivo) - Retorna o número de registros atuais
em um arquivo QVD.
QvdNoOfFields( nomedoarquivo ) - Retorna o número de campos em um
arquivo QVD.
QvdFieldName( nomedoarquivo ) - Retorna o nome do número do campo
número_do_campo, se existir em um arquivo QVD (caso contrário, NULL).
QvdTableName( nomedoarquivo ) - Retorna o nome da tabela contida em
um arquivo QVD.

131
QV_Developer_I_Course.book Page 132 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 133 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | RELATANDO ERROS NO QLIKVIEW

15 RELATANDO ERROS NO QLIKVIEW

Objetivos
• Saber como relatar um erro

Se você descobrir um erro no QlikView, é importante relatar esse


comportamento à QlikTech ou a um Parceiro certificado da empresa.
Também é essencial fornecer o máximo de informações detalhadas possível
para descrever o erro e, possivelmente, permitir aos desenvolvedores da
QlikTech reproduzir o comportamento. Existem várias coisas que podem ser
feitas para tornar o relatório de erros um processo eficiente e útil.
Forneça uma descrição clara do problema, incluindo as ações típicas que
levam ao erro, juntamente com as mensagens de erro exibidas.
Se for possível fornecer um documento QlikView de amostra que possa ser
usado para demonstrar o erro, isso será bastante útil para resolver o
problema.
Se o erro ocorrer durante um recarregamento, inclua o arquivo de log do
QlikView com o relatório de erros. O arquivo de log é descrito na seção
anterior deste curso.
Sempre crie uma pasta Sistema nos seus documentos QlikView para ajudar a
determinar a integridade da sua estrutura de dados. Essa pasta pode ser
facilmente “oculta” dos usuários em um aplicativo de produção usando a
configuração Mostrar Pasta na página Geral da caixa de diálogo
Propriedades da Pasta.
Todos os relatórios de erros devem incluir a Informação Técnica do
Documento. Esses dados contêm informações valiosas sobre o computador
com o problema, a versão do QlikView em execução e as configurações no
documento QlikView. Eles estão disponíveis no item do menu Ajuda ou
pressionando CTRL+SHIFT+Q. Use o botão Copiar para a Área de
Transferência para copiar essas informações e colá-las no seu E-mail ou em
um documento de texto.

133
QV_Developer_I_Course.book Page 134 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | RELATANDO ERROS NO QLIKVIEW

Visite a QlikCommunity para obter mais informações sobre relatórios


de erros.

Figura 47. Informação Técnica do Documento.

134
QV_Developer_I_Course.book Page 135 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INFORMAÇÕES ADICIONAIS

16 INFORMAÇÕES ADICIONAIS

Objetivos
• Saber onde encontrar material de referência
• Compreender os tipos de dados
• Revisar a importância do Tempo

Material de Referência
Existem vários Materiais de referência do QlikView disponíveis. Vários deles
já foram mencionados neste curso. É importante se familiarizar com essas
ferramentas durante o desenvolvimento de suas habilidades para criar
documentos QlikView eficientes e efetivos.
• Manual de Referência do QlikView: normalmente, os documentos do
Manual de Referência são instalados no seu computador durante o
processo de instalação do QlikView. Eles incluem um Guia Tutorial para
usuários novos, juntamente com guias de referência detalhados para o
desenvolvimento de scripts e de layout. Você também pode contatar o
representante da QlikTech ou do Parceiro certificado do QlikView sobre
como solicitar manuais impressos.
• Subsistema de Ajuda do QlikView: o subsistema de Ajuda está
disponível diretamente na maioria das caixas de diálogo e dos menus.
Ele inclui um conteúdo geral, um índice das informações disponíveis e
um recurso completo de pesquisa de texto. Se chamado em uma caixa de
diálogo, serão abertas informações específicas do contexto.
• Documentos de Exemplo do QlikView: esses documentos de amostra
podem ser uma fonte de informações valiosa que demonstra métodos
validados para o desenvolvimento de documentos QlikView. Pode ser
bastante útil pesquisar esses documentos para obter ideias do que pode
ser realizado com o QlikView.
• Material de Treinamento do QlikView: este documento do curso,
juntamente com outros documentos de cursos oferecidos pela QlikTech,
pode ser usado com um guia de referência valioso a ser consultado
depois da conclusão do treinamento.

Tipos de dados no QlikView


O QlikView pode tratar caracteres de texto, números, datas, horas, datas/
horas e moedas. Eles podem ser classificados, mostrados em vários formatos
e usados em cálculos. Isso significa que datas, horas e datas/horas podem ser
adicionadas e subtraídas. Este capítulo é fornecido como histórico e
informações de referência de como o QlikView trata os tipos de dados.

135
QV_Developer_I_Course.book Page 136 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INFORMAÇÕES ADICIONAIS

Armazenamento de dados no QlikView


Para entender como o QlikView interpreta os dados e formata os números,
primeiro é necessário saber como os dados são armazenados internamente
no programa. Todos os dados carregados no QlikView são armazenados de
duas formas: como caracteres de texto e como números.
Os caracteres de texto sempre são usados. Isso é mostrado nas listas e em
outros objetos de pasta. Na formatação de dados em listas (formatação
numérica), apenas os caracteres de texto são afetados.
Os números são usados somente quando os dados podem ser interpretados
como um número válido. É possível usar todas as formas de cálculos
numéricos e de classificação.
Se vários dados com o mesmo valor numérico forem carregados no mesmo
campo, eles serão tratados como várias ocorrências do mesmo valor e os
primeiros caracteres de texto encontrados serão atribuídos a eles. Se os
números 1.0, 1 e 1.000 forem carregados nessa ordem, eles receberão o
valor numérico 1, e os caracteres de texto originais 1.0.

Dados com informações sobre o tipo de dados


1 Os campos que contêm números com um tipo de dados definido em uma
base de dados carregada via ODBC serão tratados pelo QlikView de
acordo com os respectivos tipos de dados.
O QlikView lembrará o formato original dos campos, mesmo que ele seja
alterado em uma das caixas de diálogo de formato numérico. Sempre é
possível restaurar o formato original clicando no botão Padrão de Entrada
na página Número da caixa de diálogo Propriedades do Documento.
O QlikView usa os seguintes formatos padrão para cada tipo de número:
• Números inteiros de ponto flutuante: formato padrão para números
• Moeda: formato padrão para moedas
• Hora, data, data/hora: padrão ISO
As configurações padrão para números e moedas são definidos pelas
variáveis, que são interpretadas no script ou através das configurações do
sistema operacional (Painel de Controle).

Dados sem informações sobre o tipo de dados


O tratamento de dados sem informações específicas de formatação (por
exemplo, dados de arquivos de texto ou dados ODBC com um formato
geral) é mais complicado. O resultado depende de pelo menos seis fatores.
• O formato dos dados na base de dados
• As configurações do sistema operacional referentes a números, hora,
data etc. (Painel de Controle).
• O uso de variáveis para a interpretação no script

136
QV_Developer_I_Course.book Page 137 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INFORMAÇÕES ADICIONAIS

• O uso de funções de interpretação no script


• O uso de funções de formatação no script
• O uso de caixas de diálogo de formato numérico no documento
O QlikView tenta interpretar os dados de entrada como números, datas,
horas etc. Quando as configurações do sistema padrão forem usadas, o
QlikView interpretará e formatará os dados automaticamente. Assim, o
usuário não precisa alterar o script nem as configurações no QlikView.
Existe uma forma simples de verificar se o QlikView interpretou os dados
corretamente: em geral, os dados numéricos são alinhados à direita em
listas, enquanto os caracteres de texto são alinhados à esquerda.
A rotina padrão envolve a execução do processo a seguir até que um
formato adequado seja encontrado. (O formato padrão inclui, por exemplo,
o separador decimal, a ordem de anos, meses e dias etc. do sistema
operacional, ou seja, no Painel de Controle ou, em alguns casos, definidos
pelas variáveis especiais de interpretação no script.)
O QlikView interpreta os dados como:
• um número, de acordo com o formato padrão para números
• uma data, de acordo com o formato padrão para datas
• uma data/hora, de acordo com o formato padrão para data e hora
• uma hora, de acordo com o formato padrão para hora
• uma data, de acordo com o seguinte formato: aaaa-MM-dd;
• uma data/hora, de acordo com o seguinte formato: aaaa-MM-dd hh:mm
[:ss[.fff]]
• uma hora, de acordo com o seguinte formato: hh:mm [:ss[.fff]]
• moedas, de acordo com o formato padrão para moedas
• um número com '.' como separador decimal e ',' como separador de
milhar, desde que nem o separador decimal, nem o separador de milhar
sejam definidos como ','
• um número com ',' como separador decimal e '.' como separador de
milhar, desde que nem o separador decimal, nem o separador de milhar
sejam definidos como '.'
• um caractere de texto. Esse teste final nunca falha: se for possível
carregar os dados, sempre será possível interpretá-los como caracteres de
texto.
Podem ocorrer problemas de interpretação quando os dados forem
carregados a partir de arquivos de texto. Um separador decimal ou um
separador de milhar incorreto pode fazer o QlikView interpretar os números
de forma incorreta. A primeira coisa a fazer é verificar se as variáveis de
interpretação numérica no script estão definidas corretamente e se as
configurações do sistema no Painel de Controle estão corretas.

137
QV_Developer_I_Course.book Page 138 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INFORMAÇÕES ADICIONAIS

Quando o QlikView tiver interpretado os dados como uma data ou hora,


será possível alterar o formato de data e hora na caixa de diálogo
Propriedades do objeto de pasta (na aba Número). A formatação de
anulação é feita no nível de documento, em Propriedades do Documento:
aba Número.
Como não há um formato predefinido para os dados, obviamente um
registro pode conter valores com formatos diferentes em um único campo.
Por exemplo, é possível encontrar datas, inteiros e texto válidos em um
campo. Esses dados não serão formatados, mas serão mostrados em listas
em seu formato original.
Quando a caixa de diálogo de formato numérico for aberta pela primeira
vez, o formato será Geral. Depois que você alterar o formato, será
impossível para o QlikView reverter o formato original desses valores de
campo; ou seja, se a caixa Manter Formato após Recarga estiver marcada
quando o script for executado.
Portanto, o botão Padrão de Entrada não estará ativado para esse tipo de
campo depois que o formato numérico for alterado.

Datas e horas
O QlikView armazena datas, horas e datas/horas como um número de série
de data para data. O número de série de data é utilizado para datas, horas e
datas/horas, e para cálculos aritméticos com base em unidades de data e
hora. Dessa forma, as datas e horas podem ser adicionadas e subtraídas, os
intervalos podem ser comparados etc.
Os números usados para data e hora são os valores do número de dias
decorridos desde 30 de dezembro de 1899. Assim, o QlikView é compatível
com o sistema de datas 1900 usado pelo Microsoft Excel para Windows,
pelo Lotus 1-2-3 e por outros programas, entre 1 de março de 1900 e 28 de
fevereiro de 2100. Fora desse intervalo de tempo, o QlikView usa o mesmo
sistema de datas extrapolado com a ajuda do calendário gregoriano, que
atualmente é um padrão no mundo ocidental.
O número de série de data para horas é um número entre 0 e 1. O número
de série de data 0,00000 corresponde a 00:00:00, enquanto 0,99999
corresponde a 23:59:59. Números gerais mostram a data e a hora: o número
de série de data 2,5 corresponde a 1 de janeiro de 1900, 12:00 horas.
Os dados são exibidos de acordo com o formato dos caracteres de texto. Por
padrão, será usada a configuração feita no Painel de Controle. Também é
possível definir o formato de data e hora usando as variáveis interpretadas
pelo script ou com a ajuda de uma função de formatação. Além disso,
também é possível reformatar os dados na caixa de diálogo Propriedades
dos objetos de pasta.

138
QV_Developer_I_Course.book Page 139 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | INFORMAÇÕES ADICIONAIS

Exemplo:
1997-08-06 é armazenado como 35648
09:00 é armazenado como 0,375
1997-08-06 09:00 é armazenado como 35648,375 ou vice-versa
35648 no formato numérico 'D/M/AA' é mostrado como 6/8/97
0,375 no formato numérico 'hh.mm' é mostrado como 09.00
Como mencionado anteriormente, o QlikView segue um determinado
procedimento para a interpretação de datas, horas e outros tipos de dados.
No entanto, o resultado será afetado por diversos fatores.

139
QV_Developer_I_Course.book Page 140 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 141 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

17 APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA


DESENVOLVEDORES

Objetivos
• Compreender a importância do desenho correto da interface do
usuário
• Lembrar dos recursos que estão disponíveis para ajudar
• Examinar os exemplos disponíveis imediatamente

Desenho Fácil de Utilizar


Obviamente, um desenho fácil de utilizar é direcionado ao usuário. Assim, é
essencial para o seu sucesso fazer uma pesquisa adequada com seu cliente
comercial para determinar fatores críticos de sucesso. Como muitos
desenvolvedores do QlikView enfocam os dados, este capítulo fornece
apenas uma breve visão geral dos conceitos básicos de layout. Este tópico
completo é abordado no curso Designer do QlikView.
Tendo isso em mente, a chave do sucesso não é só entender as informações
que seus usuários precisam, mas representar verdadeiramente e do modo
mais preciso possível como eles as usarão.
Agora que você chegou até aqui, é preciso lembrar-se de escolher uma
abordagem e se ater a ela. A simplicidade e a consistência são essenciais.
As considerações a seguir podem ajudar no seu desenho:
• Facilidade de encontrar o que está procurando: organize o aplicativo
QlikView para suporte de sua função. Resista à tentação de incluir
objetos apenas porque é possível e porque eles são legais (isso pode ser
difícil!)
• Objetos repetidos (botões Limpar, caixas de seleção atuais, caixas de
estatísticas, navegação) na mesma posição em todas as folhas
• Layout limpo nos gráficos. Em geral, quanto mais simples, melhor.
• Dimensões da hierarquia colocadas na ordem
• Opções de cor para daltônicos
Lembre-se também de que é muito fácil alterar as coisas no QlikView;
portanto, se tiver dificuldades, geralmente será melhor criar algo, mesmo
que você não siga todas as regras para fazê-lo, e corrigi-lo posteriormente.
Se estiver interessado nos recursos de desenho e informação, considere fazer
um treinamento adicional do QlikView nessa área.
Lembre-se também de acessar o link Baixar exemplos do QlikView e o
Centro de Aprendizagem para obter exemplos e downloads adicionais.

141
QV_Developer_I_Course.book Page 142 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

Mais uma vez, esses recursos estão disponíveis na Página Inicial quando
você aciona o QlikView, como mostrado abaixo.

Comportamento Natural do Ser Humano


As nossas percepções e a forma como se desenha para elas estão além do
escopo deste curso. Resumindo, existem impactos definidos que devem ser
considerados ao desenhar aplicativos, incluindo:
• Percepção Visual
• Posicionamento
• Cores
• Tamanhos
• Logotipos e Imagens
• Fontes
• Bordas
Ao examinar cada uma dessas áreas, poderemos discutir como criar
aplicativos QlikView, sobre os objetos que escolhemos, onde os colocaremos
na tela, bem como as cores e fontes que serão apresentadas no produto
finalizado. Este tópico é abordado detalhadamente no curso Designer I do
QlikView.

142
QV_Developer_I_Course.book Page 143 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

Opções de Gráfico e Objeto no QlikView


É importante abordar as considerações sobre desenho ao escolher objetos do
QlikView para necessidades específicas. Esta seção foi desenvolvida como
um guia de referência para escolher o objeto ou gráfico correto para o tipo
de análise a ser feito.
Abordaremos os seguintes tipos de objeto do QlikView:

Gráficos
• Barra
• Linha
• Combinado
• Radar
• Mostrador
• Dispersão
• Grade
• Pizza
• Funil
• Bloco

Tabelas
• Simples
• Dinâmica

Figura 48. Seleção de Tipos de Gráfico no QlikView, incluindo tabelas dinâmicas


e simples

Para cada tipo de gráfico, listaremos o tipo de análise usado e algumas


medidas de exemplo, começando com os Gráficos de barras.

143
QV_Developer_I_Course.book Page 144 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

Gráficos de Barras

Uso mais indicado: comparações de medidas semelhantes


Exemplos:
• Real vs. Orçado – Dinheiro com Dinheiro, Quantidade com
Quantidade
• Valor ao Longo do Tempo — Tempo com Tempo
• N Principais – Valores Categorizados (representantes de vendas,
clientes etc.)
Evite: comparações com unidades diferentes ($ e Qde)

Gráfico de Linhas

Uso mais indicado: medida para seguir movimento ou comparações


entre itens
Exemplos:
• Tendências de Desempenho – quantidade de movimentos ao longo
do tempo
• Comparações de Duas Dimensões – Comparações Anuais ao Longo
dos Meses

144
QV_Developer_I_Course.book Page 145 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

Gráfico Combinado
Uso mais indicado: comparações de várias medidas
Exemplos:
• Duas medidas – Valor Monetário e Quantidade ou Valor e
Porcentagem
• Dois Eixos – Diferentes medidas nos eixos esquerdo e direito
• Dois ou Mais Eixos – Dividir os eixos horizontalmente

Gráfico de Radar

Uso mais indicado: comparações de grupos de alto nível


Exemplos:
• Uma ou Duas Medidas – Vendas e Lucro
Evite: uma dimensão com muitos valores

145
QV_Developer_I_Course.book Page 146 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

Gráfico de Mostrador

Uso mais indicado: proporção de medidas


Exemplos:
• Porcentagens – Margem, Cota Atingida, Acumulado no Ano vs.
Acumulado no Ano Anterior
Evite: valores reais

Gráfico de Dispersão

Uso mais indicado: medidas que atuam como dimensões (gráfico 3D)

146
QV_Developer_I_Course.book Page 147 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

Exemplos:
• Gráfico de Medida em 3D – Valores, Quantidade e Número de
Clientes
• Gráfico de Mapa – Veja as vendas em um mapa geográfico

Gráfico de Grade

Uso mais indicado: duas ou três dimensões com uma medida


Exemplos:
• Medidas dimensionais com vários cruzamentos
• Valores por região e produto, ao longo do tempo

147
QV_Developer_I_Course.book Page 148 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

Gráfico de Pizza

Uso mais indicado: medidas de distribuição visual


Exemplos:
• O que contribui de que modo, com o todo – Vendas Regionais
• Análise Positiva/Negativa

Gráfico de Funil

Uso mais indicado: dimensão que contém uma linha de tempo de expiração
Exemplos:
• De quanto tempo é o elemento mais antigo?
• Oportunidades de Venda
• Inventário de Produtos por Expiração

148
QV_Developer_I_Course.book Page 149 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

Gráfico de Blocos

Uso mais indicado: medidas de distribuição em várias dimensões


Exemplos:
• O que contribui de que modo com o todo e em cada segmento
• Contribuição de vendas por país

Tabela Simples

Uso mais indicado: uma dimensão com várias medidas


Exemplos:
• Visão Geral do KPI – Dimensão do grupo de ciclo com Vendas,
Quantidade, Margem
• Classificação em qualquer coluna (Sem agrupamento)

149
QV_Developer_I_Course.book Page 150 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

Tabela Dinâmica

Uso mais indicado: várias dimensões com uma ou mais medidas


Exemplos:
• Agrupamento de dimensões— Venda de produto por item
• Dimensão pela tabela — Venda anual por meses
• — Cálculo de variação usando before( )
Limitações:
• Sem repetição dos mesmos valores (agrupados)
• Sem classificação do usuário final por clique duplo

150
QV_Developer_I_Course.book Page 151 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

Orientação
Se fôssemos listar todas as diretrizes de desenho recomendadas, poderíamos
preencher facilmente algumas dúzias de páginas ou mais. Seguem algumas
das mais óbvias e importantes, conforme a opinião de Stephen Few e
Edward Tufte, entre outros.
1 Os dados devem ser de alta qualidade.
2 Inclua comparações.
3 O pensamento quantitativo resume-se a uma pergunta: compara-se
a quê?
4 Tentar mostrar, de todas as formas, a causa e o efeito.
5 Não separe evidências nos meios de produção acidentalmente.
6 O mundo é muito divergente, assim, a exibição deve ser altamente
dimensional.
7 A apresentação baseia-se na qualidade, relevância e integridade do
conteúdo e recai sobre elas.

151
QV_Developer_I_Course.book Page 152 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

As comparações são bastante eficazes na demonstração de relações.

8 O conteúdo relacionado deve estar vinculado.


9 A simplicidade é sempre melhor que o excesso de detalhes.
10 Qualquer gráfico fica mais legível com cores sólidas, não gradientes.
11 Em muitos casos, um gráfico de barras simples é melhor que um gráfico
de radar ou de pizza.
12 Preste atenção na escala.

P: Qual empresa apresenta o melhor desempenho? R: Nenhuma delas. Elas estão no


mesmo nível. As escalas, destacadas em cinza, são diferentes.

13 Evite usar elementos tridimensionais.


14 Cores simples e neutras são mais fáceis de serem visualizadas.
15 Se for usar várias cores, use-as de forma consistente.
16 Remova a redundância, dentro dos limites razoáveis.

152
QV_Developer_I_Course.book Page 153 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | APÊNDICE: CONCEITOS BÁSICOS DE LAYOUT PARA DESENVOLVEDORES

17 Os usuários nunca devem usar a rolagem para encontrar algo


importante.
18 Mantenha a exibição macro se ela for significativa, depois a divida em
blocos menores.
19 Revise e edite; remova, analise, revise e edite ainda mais!

Importar/Exportar Layouts de Pasta e Documento


O QlikView pode exportar e importar documentos ou pastas (excluindo os
dados) QlikView como xml. Esse recurso pode ser usado para facilitar o uso
de software de controle de versão de terceiros com arquivos qvw,
eliminando a necessidade de verificar conjuntos de dados muito grandes. Ele
também pode ser usado para ajudar no layout e no desenho de uma
interface do usuário consistente.
Os comandos Exportar e Importar estão disponíveis no menu Arquivo.

153
QV_Developer_I_Course.book Page 154 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 155 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Revisar Amostras


Tarefa: Revisar Amostras
1 Abra o QlikView.
2 Na pasta do capítulo, abra os arquivos de exemplo para examinar
desenhos diferentes. Role pelas abas diferentes para ver exemplos de
conceitos básicos de layout.
3 Se desejar, copie e cole!

155
QV_Developer_I_Course.book Page 156 Tuesday, July 20, 2010 10:09 AM
QV_Developer_I_Course.book Page 157 Tuesday, July 20, 2010 10:09 AM

QlikView Developer I | EXERCÍCIO

Exercício: Importar/Exportar Layouts de Crédito


Adicional
Tarefa: Exportar/Importar um Layout, xml
Uma forma de armazenar e reutilizar rapidamente os desenhos de
interface do usuário do documento QlikView é exportando/importando
o layout em formato xml. Isso também pode ser usado para o controle
de origem em grandes implantações do QlikView.
1 Navegue até a pasta do capítulo.
2 Abra um dos arquivos .QVW disponíveis.
3 Escolha uma aba no arquivo .QVW que você acabou de abrir e exporte
a imagem e o layout da pasta para um local que possa ser localizado
novamente. Isso é feito no menu Arquivo, Exportar. A imagem será um
registro útil do layout preenchido com dados.

4 Você também pode tentar exportar todo o Layout do Documento.


Certifique-se de lembrar o local no qual o .xml de saída é salvo.
5 Abra um novo documento QlikView.
6 Importe todo o layout ou apenas a pasta exportada nos passos acima.

157
QV_Developer_I_Course.book Page 158 Tuesday, July 20, 2010 10:09 AM

Você também pode gostar