Com o QlikView podemos carregar facilmente dados de qualquer banco de dados que possua um driver ODBC, arquivos texto, documentos do Excel entre outros, independente da fonte dos dados, a forma de carga não varia muito. Vamos começar com a fonte mais comum de dados, que é através de uma conexão ODBC com algum banco de dados, não vou entrar nos detalhes a respeito da configuração do driver ODBC tendo em vista que variam bastante de banco para banco, e também que geralmente a configuração da fonte ODBC fica a cargo da equipe técnica do cliente do cliente onde o projeto será desenvolvido, já que ele tem os dados de configuração, não cabe a um consultor QlikView esta obrigação. Caso você não tenha nenhum banco de dados instalado em seu computar e conseqüentemente nenhuma conexão ODBC, poderá simular o exemplo que darei utilizando uma planilha do Excel, exemplo este que também mostrarei neste artigo. O exemplo que irei mostrar será realizado com base em um banco de dados Firebird que possuo, trata-se de um sistema escolar, de onde carregarei algumas tabelas para demonstrar, como realizar a carga de uma fonte ODBC e também o vínculo entre as tabelas. Figura 1 - Editar Script Primeiro na barra de ferramentas do QlikView procure pelo ícone em destaque na Figura.1, ou CTRL+E para ativar a janela de script. Feito isso na parte inferior da tela que surge procure pelo botão “Conectar” em destaque na Figura.2 . Agora serão listadas todas as conexões ODBC configuradas em seu computador, caso haja (Figura.3). Figura 2 - Botão Conectar Figura 3 - Lista de Conexões ODBC Irei selecionar a opção Sappia, que é a conexão ODBC para meu banco de dados Firebird, automaticamente o QlikView irá gerar uma string de conexão: ODBC CONNECT TO Sappia (XUserId is xpto, XPassword is xpto); A partir desse momento passamos a ter acesso às tabelas desse banco de dados, e poderemos trazer para o QlikView estas informações para que possamos começar a trabalhar com elas. Através do botão “Selecionar” em destaque na Figura.4. Figura 4 - Selecionar Tabelas Agora é exibida uma tela (wizard) para nos auxiliar na preparação do script de carga das tabelas do banco de dados (Figura.5). Basta selecionar uma das tabelas do banco de dados e clicar no botão OK que automaticamente será criado o script de carga para a tabela selecionada. Observe que na Figura.5 o checkbox Carga Anterior marcando este checkbox antes da instrução de select será adicionado um LOAD com a lista dos campos da tabela, isso é bastante útil para iniciarmos a customização dos nomes dos campos, inclusive eliminando campos desnecessários ao negócio, campos que sejam só de controle interno do sistema, e não serão utilizados para nenhuma análise poderão ser suprimidos ao excluirmos estes do LOAD. Figura 5 - Wizard para criação do Select Claro que isso também poderia ser feito no próprio select, no entanto o QlikView não gera automaticamente select com o nome dos campos e teríamos que colocar todos na mão, logo é mais rápido e prático excluir os que não queremos do que adicionar todos os que precisamos. Então se você selecionou a sua tabela e clicou em OK suponho que terá um script parecido com o que demonstro abaixo (Figura.6), no meu caso acima do comando LOAD adicionei o nome da tabela “[Alunos]:”, também utilizei o “as” para dar um “apelido” mais amigável aos campos, e apliquei algumas funções de data ao campo [Data de Nascimento do Aluno] para extrair algumas informações que serão bastante úteis no momento de aplicar filtros. Figura 6 - Script de carga da tabela aluno Agora seguindo o mesmo procedimento utilizado para gerar o script de carga para a tabela aluno, iremos carregar a tabela “Raça”, que possui uma relação com a tabela “Alunos”, onde cada aluno pode ter pelo menos uma raça vinculada a ele, este script ser algo como apresentado na Figura.7. Figura 7 - Script de carga da tabela Raça Feito isso podemos realizar uma carga dos dados, clicando no botão recarregar . Após o processo de carga teremos algo como mostrado na Figura.8. Não vou entrar em detalhes de criação de objetos aqui, mas nesse momento os campos mostrados nas tabelas da Figura.8 estão todos disponíveis para a criação da objetos, sejam eles tabelas, gráficos, etc. Tanto como agrupadores quanto em expressões. Figura 8 - Tabelas carregadas A Figura.8 mostra também uma relação entre as duas tabelas, Alunos e Raça, isso se deve ao fato de em ambas as tabelas existirem dois campos de nome [Código da Raça], o QlikView associa os dois campos criando uma relação, sendo assim, selecionando um aluno na tabela [Alunos], nós saberemos qual a raça dele, assim como selecionando um raça na tabela [Raça], saberemos quais alunos pertencem aquela raça. Um das coisas que mais impressionam no QlikView é essa facilidade de relacionar dados, para quem conhece banco de dados, sabe que para criarmos uma relação entre tabelas é necessário um trabalho bem mais árduo, e se torna mais complexo ainda quando existe a necessidade de mudar o relacionamento, no QlikView mudamos os nomes dos campos no script (utilizando “as” se for o caso) recarregamos os dados e pronto. Agora vamos demonstrar como carregar dados de uma planilha do Excel, também relacionaremos os dados desta planilha aos dados carregados do banco de dados. A primeira coisa a fazer é criar uma planilha no Excel (Figura.9), nesta planilha relacionei as raças carregadas do banco de dados, e acrescentei uma coluna para definir as cotas para cada raça, agora iremos carregar esta planilha, e vincular a descrição da raça na planilha, com a da nossa tabela [Raça] que foi extraída do banco de dados. Logo teremos como saber a cota de cada aluno, alunos que tem direito a certa cota, entre outras análises. Figura 9 - Dados do Excel Criada a planilha, voltamos ao editor de script (Figura.1), na parte inferior desta tela encontraremos o botão “Arquivos de Tabela”. Ao clicar nele surgirá uma tela onde deveremos indicar a localização da nossa planilha. Devemos observar que o QlikView permite carregar além de arquivos do Excel, outros como txt, HTML, XML, entre outros. Localizado o arquivo da nossa planilha teremos a tela apresentada na Figura.10, não vou entrar em detalhes sobre essa tela, mas aqui podemos definir o nome da cada coluna, se o nome das colunas (rótulos) estão implícitos ou não, entre outros diversos recursos como transformação dos dados, os quais não são foco deste artigo, mas estão bem detalhados nas documentações do QlikView. Figura 10 - Manipulação de arquivos No nosso caso vamos clicar no botão “Finish” simplesmente, isso irá gerar um script como o demonstrado na Figura.11. Figura 11 - Script de carga da planilha Agora vamos recarregar os dados novamente, e após o término do processo teremos a seguinte relação de tabelas (Figura.12), aqui o simples fato das duas tabelas terem o campo Raça, faz com seja criada uma relação entre elas. A Figura.13 demonstra a relação raça x cota. Figura 12 - Tabelas carregadas O QlikView é muito poderoso e dinâmico, quando se trata de relacionar dados impressiona ainda mais, isso quer dizer que uma empresa que possua mais de um ERP ou vários sistemas trabalhando, além de sistemas legados, podemos relacionar os dados desses diversos sistemas com facilidade, na pior das hipóteses com o auxilio de uma tabela “De Para”,realizar cruzamentos de dados entre outras análises, enfim, o céu é o limite. Figura 13 - Filtro aplicado a lista Analisando uma lista de valores By Fábio Simões No SQL temos um recurso bastante interessante para analisar uma lista de valores, o “IN”, logo que comecei a utilizar o QlikView senti falta de um recurso semelhante no QlikView, uma breve pesquisada no help do QlikView e logo encontrei um conjunto de funções que não só oferecem um recurso equivalente ao IN como estendem as funcionalidades de tal recurso. A primeira função é a match(), esta é a mais próxima do IN em SQL, ela avalia o primeiro parâmetro que pode ser um campo ou uma variável, e retorna o índice das expressões listadas começando de 1 até N, caso o valor não seja encontrado nas expressões listadas o valor retornado será 0. É importante perceber que esta função é sensível a maiúsculas. match( [Código Alternativo],A333,B555,C888) No exemplo acima caso o código alternativo seja B555 o valor retornado pela função será 2, caso o valor para o código alternativo seja X100 ou c888 será retornado 0. A função mixmatch se diferencia da função match unicamente por não ser sensível a maiúsculas. mixmatch( [Código Alternativo],A333,B555,C888) Analisando o exemplo acima onde o código alternativo seja a333 o valor retornado será 1. A última função do conjunto é bastante interessante, oferece os mesmos recursos da mixmatch, pois também não é sensível a maiúsculas, e como recurso adicional permite a utilização de máscaras, inclusive em um campo “blob”, trabalhei muito tempo com banco de dados, e vez ou outra surgia à necessidade de pesquisar alguma coisa em um campo blob, e na maioria dos bancos de dados, não é possível utilizar um campo blob na clausula where. Uma breve pesquisada no Google a respeito de “pesquisas em campo blob” e muitas referências ao assunto serão retornadas. Felizmente no QlikView podemos utilizar a função wildmatch(), que serve não só para campos com textos mais extensos como também para os demais campos, inclusive numéricos. wildmatch([Observação],’NF0012*’,'PED55??1′) No exemplo acima serão retornados registros cujo campo [Observação] contenha valores como: “Requisição para a NF00128″ “Pedido PED55ty1 enviado ao setor de vendas” Sendo assim podemos usá-la em clausulas where, funções condicionas como IF, e também para atribuir um valor a uma variável se for o caso, em conjunto com outras funções como a peek() por exemplo. O uso desse conjunto de funções possibilita maior clareza no script, facilitando a manutenção e a compreensão das condições, então, bom proveito a todos.