16 de junho de 2012  //  44 Comentários  //  Categorias: QlikView, Tutoriais

Guia Completo: Set Analysis QlikView



Quando mais trabalho com QlikView, mas por ele fico fascinado! Neste tutorial quero compartilhar com vocês um guia de expressões, que corresponde a 90% das necessidades que encontramos na hora de produzir a “view” de um projeto.

Expressões Básicas

Exemplos Simples

1. Calcula a Soma das “Vendas” baseado nas seleções atuais

2. Conta os valores do campo “Cliente” baseado nas seleções atuais

3. Calcula a Soma das “Vendas” baseado em todos os valores, ou seja, ignora todas as seleções

4. Calcula a Soma das “Vendas” baseado no marcador com o ID “BM01”

5. Calcula a soma das “Vendas” para tudo o que a seleção atual excluir

6. Calcula a soma das “Vendas” baseado na seleção anterior

7. Calcula a soma das “Vendas” baseado nas próxima seleção

8. Calcula a soma da expressão “ItemQuandidade*ItemPreco” baseado nas seleções atuais

Usando Marcadores

9. Calcula a média das “Vendas” baseado no marcado do servidor com o ID “BM01”

10. Calcula a soma das “Vendas” baseado no marcado do documento com o ID “BM01”

11. Calcula a soma das “Vendas” baseado nas seleções atuais E no marcador do servidor com o ID “BM01”

12. Calcula a somas da “Vendas” baseado nas seleções atuais, EXCETO os registros pertencentes ao marcador do servidor com o ID “BM01”

ALL e TOTAL

Conheça os parâmetros utilizados para controlar seleções/dimensões de uma expressão. Veja meu tutorial: Entendendo ALL e TOTAL nas funções do QlikView

Expressões com Modificadores

Em alguns casos, necessitamos fixar uma seleção ou alterar as seleções atuais numa determinada expressão. Veja agora alguns exemplos:

Modificadores Básicos

13. Calcula a soma das “Vendas” descartando as seleções atuais mas fixa o campo “Regiao” para o valor desejado

14. Calcula a soma das “Vendas” baseado nas seleções atuais EXCLUINDO o campo “Regiao”

15. Calcula a soma das “Vendas” basado nas seleções atuais EXCLUINDO a categoria “Acessorios”

16. Calcula a soma das “Vendas” baseado nas seleções atuais, mas apenas considerando as vendas nos “Anos” de 1980 até 1989

17. Calcula a soma das “Vendas” baseado nas seleções atuais, mas apenas considerando os “Anos” 1900, 1910, 1920, etc

18. Calcula a soma das “Vendas” baseado nas seleções atuais, mas considerando apenas os anos maiores que “Min(Ano)” e menores que “Max(Ano)”, então se tivermos 2008, 2009 e 2010, apenas as “Vendas” de 2009 serão calculadas.

Usando Expressões Ad-Hoc

19. Calcula a soma das “Vendas” baseado nas seleções atuais, mas apenas do último “Ano”

20. Calcula a soma das “Vendas” baseado nas seleções atuais, para o ano anterior a seleção

Usando Expressões de Pesquisa

21. Calcula a soma das “Vendas” baseado nas seleções atuais, mas apenas para os anos anteriores a “Max(Ano)”

22. Calcula a soma das “Vendas” desconsiderando as seleções, para os anos maiores que 2009

23. Calcula a soma das “Vendas” baseado nas seleções atuais, mas para as cidades que contenham “io”: “Bertioga”, “Rio de Janeiro”, etc

Indirect Set Analysis

O que acontece quando precisamos realizar a soma das vendas apenas dos clientes que compraram sapato em 2010? Para isso precisamos de expressões indiretas. Saiba mais em: Criando expressões avançadas no QlikView

Termos de busca

Quer copiar esse post no seu site? Você pode!

Segundo a licença da Creative Commons 3.0 (CC BY SA 3.0) você pode copiar e distribuir esse conteúdo desde que faça menção ao autor original, para isso é só copiar esse código no final do artigo quando for publicá-lo em seu site:

<p>Artigo originalmente publicado em <em>16 de junho de 2012</em> por <strong><a href="http://pedroelsner.com/" title="Pedro Elsner, Profissional de TI - São Paulo">Pedro Elsner</a></strong>: <a href="http://pedroelsner.com/2012/06/guia-completo-set-analysis-qlikview/" title="Guia Completo: Set Analysis QlikView">Guia Completo: Set Analysis QlikView</a></p>
A não menção ao autor original da obra implicará em cópia e/ou distribuição ilegal de propriedade intelectual, o que é crime segundo a Lei n.º 9.610.
  • Sergio Bianchi

    Muito bom seu artigo, parabens!

  • Obrigado Sergio!

  • Danieljmcunha

    Boa noite, venho estudando sobre o Qlikview afim de implanta-lo na empresa que trabalho. Até o momento esta sendo excelente, uso a versão Personal e me atende perfeitamente. Porém me deparei com um problema quando fui desenvolver KPI’s. Vc saberia me informar como eu faço atualizações de dados automaticamente( EX  a cada 10 min) automaticamente?? Agradeço a Atenção.

  • Você pode fazer essa configuração na propriedades do documento para um re-load no tempo determinado.

  • Edson Elisio

    Para fazer isso automaticamente, se faz necessário o uso do Qlikview server, através QMC..

  • Elizeu Malaquias

    Parabéns Pedro seu artigo é excelente!!!
    Sou leigo estou aprendendo agora sobre planilhas e sobre o QlikWiew, preciso saber como configurá-lo pre selecionar várias datas ou clientes aleatóriamente, vi uma pessoa fazendo isso só seguando o Ctrl e clicando nas datas, mas o meu não faz isso, mesmo segurando o Ctrl, quando clico um uma data ele ja seleciona ela, somente se eu arrastar o mouse ele seleciona vários, mas só na sequência, é possível configurá-lo pra isso?
    se puder me enviar algum material por email eu agradeço. (amabile.elizeu@hotmail.com)
    Elizeu Malaquias

  • Obrigado Elizeu!
    Mantenha o CTRL pressionado para realizar múltiplas seleções nos objetos do QlikView.

  • Tiago

    Pedro, muito bom o artigo, parabéns!
    Não aparece a fórmula 20, se possível colar aqui.
    “20. Cacula a soma das “Vendas” baseado nas seleções atuais, para o ano anterior a seleção”
    Obrigado.
    Tiago.

  • Sum({$} Sales)

  • Thiago Honorato

    Boa tarde Pedro preciso de uma ajuda.

    Sou iniciante no QlikView e estou com a seguinte necessidade.

    Tenho duas tabelas (TAB_A e TAB_B) ambas com os campos (PRODUTO, QUANTIDADE)

    Com estas informações, gostaria de alguma forma ilustrar um terceiro campo (de forma dinâmica) na qual seja a diferença do campo QUANTIDADE entre as duas tabelas.

    TAB_A
    PRODUTO QUANTIDADE
    001 100
    002 300

    TAB_B
    PRODUTO QUANTIDADE
    001 400
    002 500

    NOVA TABELA
    TAB_C
    PRODUTO DIFERENCA
    001 300
    002 200

    Em SQL seria +/- assim:

    SELECT TB1.PRODUTO
    (TB2.QUANTIDADE – TB1.QUANTIDADE) AS DIFERENCA
    FROM TAB_A, TB1
    ,TAB_C TB2
    WHERE TB1.PRODUTO = TB2.PRODUTO

  • Eu faria assim:

    T_Produto:
    LOAD Produto,
    Quantidade AS Qtde1;
    Select Produto, Quantidade FROM TAB_A;
    LEFT JOIN (T_Produto)
    LOAD Produto,
    Quantidade AS Qtde2;
    Select Produto, Quantidade FROM TAB_A;

    Produto:
    LOAD Produto
    (Qtde2 - Qtde1) AS Diferença;
    Resident T_Produto;

  • Thiago Honorato

    Obrigado pelo retorno Pedro
    Eu imaginei que seria desta forma, porém, esqueci de um pequeno detalhe.

    Minha TB1 está numa fonte de dados e TB2 está em outra.
    Ou seja, tenho duas conexões ODBC’s.
    Uma base em DB2 e outro em ORACLE.
    Resumindo, eu quero analisar quantidades de produtos iguais em sistemas diferentes.
    Entendeu?

  • OK, mas isso não muda nada.

    Antes do LOAD da TB1 você inicia a conexão com ele.
    E depois, antes do LOAD da TB2 você inicia a outra conexão.

  • Thiago Honorato

    Desculpe mas como ficaria sintaxe utilizando as duas conexões ODBCs? Poderia exemplificar com o caso acima?

  • Como eu disse, é só colocar a linha de comando, uma antes do primeiro LOAD e outra antes do LEFT JOIN do segundo LOAD.

    Para gerar o código de conexão, utilize o botão “Selecionar” fonte de dados na parte inferor da tela, na janela de edição de script do QlikView.

    Em breve farei um post sobre modelo e arquitetura para junção de multiplas fontes de dados =)

  • luciana silveira

    Pedro olá como vais, sou usuaria nova do qlikview, teria as espresões que podem ser usada, e quais condições, sou do ramo de seguradora meu e-mail(lucianasilveira148@gmail.com.br) muito obrigada

  • alexandre

    tenho uma tabela dinamica , gostaria de colocar uma expressão para somar os valores das linhas e dividir por 2 , isso seria possivel

  • Rubens

    Bom dia Pedro.

    Estou começando agora a trabalhar com QlickView e gostaria de saber como faço para copiar um projeto completo que é utilizado na empresa e fazer como um ambiente de testes, para que eu possa conhecer melhor como utilizar a ferramenta.

  • Regimilson Silva

    Olá, estou começando agora e estou com dificuldade no calculo de horas baseado em um valor. Alguém pode ajudar? Quando puxo a hora extra total de todos os funcionários se passar de 24hs a hora volta a contar dando loop, não contabiliza 25hs por exemplo.

  • viapratica

    Olá, tentei postar uma dúvida em seu site, porém estou em dúvida se foi realmente postada quando efetuei o login ou se simplesmente desapareceu.

  • @viapratica não recebi nenhum comentário seu fora esse. Por favor, poste novamente e poderei ajuda-lo =)

  • viapratica

    Olá para todos!

    Estou tentando montar um relatório aonde tenho em uma tabela os
    campos: DATA_VENCIMENTO (20131021) e VALOR_RECEBIDO (0,00), se a data do
    vencimento foi ontem e o valor recebido estiver em 0,00 quer dizer que o
    cliente não efetuou o pagamento, preciso gerar um relatório com base na
    data atual de todos os clientes que não efetuaram o pagamento.

    consigo filtrar todas que tem o VALOR_RECEBIDO = 0,00
    (if(VALOR_RECEBIDO=’0,00′,1)) as VALORPAGO,

    Porém, para criar a expressão que junte essa condição juntamente com a condição da data é que não está acontecendo.

    Obrigado a todos!

  • @viapratica:disqus crie uma tabela dinâmica, coloque como dimensão a DATA e crie uma expressão com o seguinte conteúdo:

  • viapratica

    Pedro, feito e funcionando! Mais uma vez parabéns pelo site, muito mais por sua disponibilidade em ajudar ao próximo. Deus te abençoe

  • =)

  • viapratica

    Boa noite Pedro!

    Estou tentando montar um gráfico da inadimplência por idade, já pesquisei bastante no google, até usando as palavras “bad debt”, apesar da importância deste tipo de gráfico, vejo apenas empresas de consultoria falando sobre ele. meu cenário é o seguinte, tenho uma tabela com os clientes e vários campos, vamos aos mais importantes

    clientes:

    Codigo < código do cliente
    Nome
    Nascimento
    CodigoFilial

    E essa outra que fica os clientes que estão em débito.

    contasabertas:

    CodigoCliente
    CodigoFilial
    Data_vencimento
    Valorcorrigido

    Consigo montar gráfico da média de idade, renda familiar, porém esse da inadimplência por faixa etária está complicado de compreender, tenho que fazer algum join para juntar as duas tabelas? Poderia me da uma luz ou indicar uma leitura para que eu possa entender?

    Obrigado

  • viapratica

    Olá Pedro, acredito que consegui fazer o que queria, ainda me resta fazer alguns testes. Assim que confirmar vou postar aqui para todos. Obrigado

  • viapratica

    Olá Pedro, aparentemente tudo ok com meu gráfico, o problema que percebi é o seguinte, em uma determinada faixas de idade tenho 540 clientes em outra tenho 436 e em outra 286, então, não tem como obter um relatório conclusivo com esse gráfico. Existe alguma forma de melhorar isso, ou a pessoa que for analisar o gráfico é que deve ver a quantidade de clientes que se encaixam na faixa etária analisada?

  • Diego Cardoso

    Estou com uma dúvida na contagem de alguns itens.

    Estou montando um gráfico e no mesmo só quero que apareceçam a quantidade uns certos itens.
    Exp:

    Nota Fiscal Status
    00004 Agendada
    00003 Solicitada
    00006 Agendada

    Preciso de uma fórmula para contar apenas as quantidades de notas fiscais que estão com Status de Agendada.

  • Anderson Reis

    Pedro, boa tarde.

    Primeiro parabéns pelo artigo. Estou quebrando a cabeça com uma situação, e gostaria de uma ajuda sua. Tenho alguns clientes identificados pelo código e o cliente pode comprar a vista ‘A’ ou a prazo ‘P’, e assim tenho um valor para o comprado a vista e outro comprado a prazo, fiz uma coluna que soma o total gerado comprado usando a seguinte regra Sum(TOTAL[Vlr comprado]), e quando seleciono o cliente ele mostra certinho o valor total comprado somando ‘A’ e ‘P’, porem quando seleciono a linha do ‘A’ por exemplo ele mostra o total só de ‘A’, mas gostaria que ele continuasse mostrando o valor total de ‘A’ e ‘P’. O que posso fazer para que fixe o valor total,mesmo filtrando o tipo de compra. Tentei utilizar o {$1} e o {1}, mas desta forma não filtra pelo código do cliente. Desde já obrigado.

  • Claiton

    Use a função Interval().

  • Regimilson Silva

    Obrigado!

  • Regimilson Silva

    Senhores, boa tarde!

    Quero criar faixa horária e ñ sei como fazer.
    tenho duas tabelas: uma com carros e outras com tempo de viagem. Quero criar uma expressão onde retorne a media do tempo de viagem não pelo horário que o carro saiu e sim por uma faixa horária. exemplo: os carros que saiu entre 06:00 e 06:30, retorne a media de tempo dessa faixa.
    Alguem pode me ajudar?

  • Gustavo

    Pedro,
    Bom dia.
    Estou tentando iniciar na utilização do Qlikview e gostaria de um apoio.
    Fiz a carga de 3 planilhas de um mesmo arquivo do excel que contém um campo em comum, porém, cada planilha apresenta um indicador diferente, quando montei 3 gráficos, sendo um para cada indicador, os valores apresentados em cada um deles é igual, pois, está apesentando a soma de todas as 3 variáveis,
    Como faço para cada gráfico apresentar apenas o valor de uma variável? mesmo que todas estejam carregadas no mesmo script.

  • Vagner Freire

    Primeiramente quero-lhe parabenizar pelo site e gostaria de duas ajudas:
    1) Possuo uma planilha para gerar o relatório com os seguintes dados: ex: SAPATOS, BOLSAS e CINTOS. Quero somar essas categorias exceto CINTOS, como posso fazer?
    2) Em outra planilha possuo o nome dos meus clientes, onde quando efetuado uma venda ou mais, chamo de positivação. Preciso de uma formula que pegue esta lista de clientes e me diga quantos foram positivados.

    Desde já agradeço.

  • Jonatas

    Olá.

    Tenho uma tabela/gráfico com duas dimensões, ano e mês. Preciso buscar o somatório da minha quantidade de mesmo mês porém do ano anterior.
    A tabela possui o mês posicionado à esquerda, como coluna e os anos ficam acima das qtdes, fazendo então esse dimensionamento. Tentei utilizar above, ou below. Só que usando above ele busca sempre do mês anterior, ou seja, março busca de fevereiro, fevereiro de janeiro e assim por diante. O propósito com essa informação é montar um percentual de comparação entre meses iguais de anos anteriores.
    Pretendo fazer várias tabelas semelhantes, mantendo comparativo de ano, porém, com outras dimensões sendo a coluna à esquerda.
    Pode me ajudar a montar a fórmula de análise para isso?

  • André

    Cara, genial! Até que fim encontrei o material que precisava, valeu por ter postado isso!

  • Emiliano Lopes

    Cara, muito bom esse material! Consultando ele, ajudou em várias coisas… mas tenho uma dúvida acho q simples para você,

    queria somar um total, mes a mes, mas só somar até o mês que estou.

    Tipo em Jan (somar tudo até jan)
    em Fev (Somar tudo de jan e fev) e assim vai.

    Uma soma acumulada na verdade, mas não estou conseguindo saber…

    Algo assim:

    sum({$<MES={'=} vr_realizado)

    A expressão está ok! mas não retorna o desejado.

  • OI Pedro,
    gostei muito dos seus tutoriais sobre qlikview
    Pedro eu tenho tentado usar a seguinte expressão
    =sum({$} valor)
    Porém essa expressão sempre me retorna 0.
    Eu já tentei usar essa expressão para tirar o mes anterior ( e ela funciona):date(addmonths([Mes/Ano_1],-1),’MM/YYYY’)
    Inclusive criei uma variável no sistema com essa formula para facilitar
    porém de nenhuma forma a seleção retorna um valor diferente de zero
    eu já tentei trocar o $ por 1 no inicio da expressão, a expressão sempre retorna 0.
    gostaria de saber se você pode me ajudar
    agradeço desde já,
    Priscila

  • engraçado so fazendo uma retificação a expressao quando eu colei nao foi da maneira que eu queria
    era uma expressão de soma do valor no qual eu pego o valor do mes anterior, eu ando usando mes/ano porque fica mais facil

  • Eduardo Henirque

    Boa noite Pedro, excelente material, me ajudou muito no meu processo.
    Eu preciso de uma ajuda,
    Tenho duas tabelas, uma contem o vencimento do titulo e o valor, a outra contem o valor liquido baixado.

    Tabela 1

    Nº Titulo Vencimento VALOR Mês_Vencimento Ano_Vencimento
    A1 01/08/2016 100 8 2016
    A2 01/08/2016 200 8 2016
    A3 01/09/2016 500 9 2016
    A4 01/09/2016 800 9 2016
    A5 01/10/2016 450 10 2016
    A6 01/10/2016 350 10 2016

    Tabela 2 – Titulos Recebidos

    Nº Titulo DATA DA BAIXA VALOR_BX Mês_Baixa Ano_Baixa
    A1 01/08/2016 100 8 2016
    A2 01/09/2016 200 9 2016
    A3 01/09/2016 500 9 2016
    A4 01/10/2016 800 10 2016
    A5 02/10/2016 450 10 2016
    A6 01/01/2017 350 1 2017

    Eu preciso extrair tres informações destas tabelas,
    1º Titulos vencendo no Mês
    2º Titulos Recebidos no Mês ( Dos títulos que tinham vencendo, conforme a seleção do mês)
    3º Titulos Recebidos Atrasados

    A minha seleção de data esta vinculado a tabela 1, o resultado que eu busco é o seguinte:

    Ao selecionar o mês 08, terei a seguinte visão:

    Títulos Vencendo no mês = R$ 300,00

    Títulos recebidos no mês = R$ 100,00

    Títulos Recebidos atrasados = R$ 0,00

    Se caso eu selecionar o mês 09, terei a seguinte visão:

    Títulos Vencendo no mês = R$ 1.300,00 ( Titulo A3 + A4)

    Títulos recebidos no mês = R$ 500,00 ( Titulo A3)

    Títulos Recebidos atrasados = R$ 200,00 ( Titulo A2)

    Na 1º Utilizei a expressão : =sum({}VALOR)
    Deu certo

    Na 2ª Utilizei a expressão : =sum({}if((Mês_Vencimento)=(Mês_Baixa), VALOR_BX))
    Deu certo

    Porem não consigo gerar a informação da 3ª questão, onde quero saber qual o valor que recebi no mês selecionado que refere-se a títulos dos meses anteriores.

    Poderia me ajudar Pedro nesta questão ?
    Muito Obrigado

  • Eduardo Henirque

    Corrigindo
    Na 1ª =sum({}VALOR)

    na 2ª =sum({}if((Mês_Vencimento)=(Mês_Baixa), VALOR_BX))

    Obrigado

  • Cleiton Reis

    Bom dia!

    Estou trabalhando com o Qlik Sense e gostaria de saber como faço pra criar uma expressão que conte valores de 3 colunas.

    Exemplo.

    Contar na coluna Status os valores “CLOSE” e “WAITING”, na coluna TipoManutencao o valor “Preventiva Baseada no Tempo” e na coluna Turno o valor “TURMA A” e “TURMA B”