Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
nicolett_yuri

Seleção em uma data do tipo: De... Até...

Fala pessoal, tudo bom?

Pode até parecer estranho para quem trabalho com QlikView, mas eu já recebi diversas solicitações do tipo: Eu quero selecionar um intervalo de datas, passando a data inicial e uma data final!

Sabemos que isso é possível de se fazer apenas usando um campo de data em que você seleciona o intervalo que deseja, mas as vezes você não consegue convencer seu cliente desta facilidade

Vamos aprender a fazer isso de uma forma simples?

É um pouco estranho explicar isso, eu sei, mas muitos clientes já estão se acostumados com outras plataformas e, simplesmente, não querem se adaptar ao mundo das facilidades do Qlik! Paciência né! rsrs!

Você pode criar a ideia de se selecionar um intervalo de duas maneiras: Variáveis ou Estado Alternativo.

OBS: Antes de iniciarmos o exemplo, precisamos de um calendário criado. Já sabe criar? Não? Veja esses exemplos: Função para Criar Calendário (Utilizando Data existente no modelo)  ou Função para Criar Calendário (Passando datas).

Variáveis

Vamos criar duas variáveis, uma para receber o limite inferior e outra para receber o limite superior da data. A variável de limite inferior será nomeada de vDataInicio e a variável de limite superior de vDataFim.

Vá em Configuração -> Visão Geral das Variáveis ou então pressione Ctrl + Alt + V

Selecionar Intervalo de Datas - 01

OBS: Se preferir também pode criar a variável pelo script.

Através do objeto Caixa de Entrada o usuário poderá digitar o intervalo de datas que deseja selecionar:

Selecionar Intervalo de Datas - 02

Selecionar Intervalo de Datas - 03

Selecionar Intervalo de Datas - 04

IMPORTANTE: Como estamos selecionando um intervalo de DATA, ou seja, DD/MM/YYYY, então o usuário deverá digitar a data neste formato.

Vamos preencher as variáveis, através do objeto caixa de entrada, com o intervalo que desejamos:

Selecionar Intervalo de Datas - 05

Agora precisamos transportar essa informação das variáveis para o campo que desejamos, para isso criaremos um botão (ou objeto de texto) com a ação de Selecionar no Campo:

Selecionar Intervalo de Datas - 06

Selecionar Intervalo de Datas - 07

Agora temos que informar qual o nome do campo e o valor em que desejamos realizar a seleção:

Selecionar Intervalo de Datas - 08

O campo em que quero selecionar o intervalo se chama Data, mas lembre-se de adaptar conforme o seu modelo de dados.

O valor que desejamos selecionar no campo Data será preenchido em Pesquisar Caracteres. Porque é dado este nome? A pesquisa de caracteres que iremos incluir neste campo segue o mesmo padrão da busca que podemos realizar através de uma lista no qlikview:

Selecionar Intervalo de Datas - 09

Agora ficou mais fácil, se entendemos que a Pesquisa de Caracteres funciona da mesma forma que uma busca e conhecemos a sintaxe de fazer essa busca, basta adaptar essa sintaxe para recuperar os valores do intervalo das variáveis.

OBS: O próximo post (podem me cobrar) será sobre as sintaxes de busca que podemos realizar no QlikView.

Selecionar Intervalo de Datas - 10

Vamos entender:

  • O sinal de igual é necessário, pois estamos informando que o valor deve ser interpretado
  • Os apóstrofes são necessários para que toda essa expressão seja enviada como um texto para a procura dos caracteres, caso contrário o QlikView tentaria resolver essa expressão primeiro e enviar para a pesquisa apenas o resultado dela.
  • A expansão do sinal de dolar é necessária para que seja avaliado o conteúdo das variáveis.
  • Por regra, os sinais de ">=" e "<=" devem estar juntos ao valor que irão avaliar, ou seja, sua expressão não pode ser da seguinte forma:
    • Selecionar Intervalo de Datas - 11



Pronto! Agora basta clicar sobre este botão e ver o resultado:Selecionar Intervalo de Datas - 12

Pontos negativos do método

  1. Isso poderia ser simplesmente resolvido utilizando uma lista e selecionando o intervalo que deseja. Pode ter o auxílio da tecla Shift para escolher a data inicial e depois a data final.
  2. Depende do preenchimento correto (formatação) de duas variáveis pelo usuário

Estado Alternativo


Estado Alternativo?

Você pode usar Estados Alternativos para realizar análise comparativa entre conjuntos de dados múltiplos, por exemplo, para a finalidade de análise da cesta de compras. Um estado mantém um conjunto de seleções;
O desenvolvedor do QlikView pode criar vários estados dentro de um documento QlikView e aplicá-los a
objetos específicos no documento. O usuário final pode criar cópias desses objetos (objetos do server) e, em seguida, colocar esses objetos em estados diferentes. (Manul QlikView)


Em outras palavras, é como se o QlikView criasse camadas de dados e cada uma dessas camadas pudesse sofrer seleções diferentes para realizar suas comparações entre as camadas. Apesar de parecer que essas camadas estão duplicando, triplicando os seus dados, isso não ocorre.



IMPORTANTE: O que iremos fazer é utilizar os recursos do Estado Alternativo para configurar o limite inferior e limite superior de intervalo, mas é importante ressaltar que estamos "se aproveitando" deste recurso e que essa não é a função do Estado Alternativo. Lembre-se que o uso de Estado Alternativo pode comprometer a performance de sua aplicação.



Vamos criar dois estados alternativos, um para receber o limite inferior e outra para receber o limite superior da data. Para criar um Estado Alternativo, você deve ir em Configuração -> Propriedades do Documento -> Aba Geral e clicar no botão Estados Alternativos:Selecionar Intervalo de Datas - 13



Inclua dois Estados, Inicio e Fim:

Selecionar Intervalo de Datas - 14



A partir de agora o QlikView vai habilitar uma opção de escolher o Estado Alternativo que deseja trabalhar para cada objeto da aplicação (listas, gráficos, abas, etc). Esta opção sempre será exibida na aba Geral dos objetos:Selecionar Intervalo de Datas - 15

As opções do estado alternativo


Junto aos Estados Alternativos que criamos (Inicio e Fim) também existem outras opções: <herdado>, <estado padrão> e <novo estado>:

  • Herdado: Os objetos podem herdar estados de objetos de nível superior, como pastas e contêineres.
    Isso significa que são herdados estados como: Documento - Pasta - Objetos de Pasta. As pastas e os objetos
    de pasta estão sempre no estado herdado, a não ser que sejam substituídos pelo desenvolvedor do QlikView.
  • Estado Padrão: No estado padrão, ocorre a maioria da utilização do QlikView; esse estado é representado por $. O documento QlikView está sempre no estado padrão.
  • Novo Estado: É a possibilidade de criar um novo Estado Alternativo. Podemos dizer que é um simples atalho de criação.

Voltando ao exemplo


Sabendo como funciona o Estado Alternativo, então criaremos três objetos de lista para o campo Data, um objeto colocaremos no Estado Alternativo Inicio, no outro colocaremos no Estado Alternativo Fim e por último um no Estado Alternativo Estado Padrão:


Selecionar Intervalo de Datas - 16



Esta primeira lista será a nossa Data de Início. Na lista faça as seguintes configurações:Selecionar Intervalo de Datas - 17



Agora vamos criar outra lista, esta será a nossa Data Fim. Na lista faça as seguintes configurações:Selecionar Intervalo de Datas - 18




Por fim a terceira lista, esta será a Data que será selecionada pelo intervalo escolhido nas duas anteriores. Na lista faça as seguintes configurações:Selecionar Intervalo de Datas - 19



Neste momento temos em nossa tela as três listas do campo Data, cada uma das listas poderá receber valores diferentes de seleção devido a configuração do Estado Alternativo realizada em cada uma delas!Vamos criar um botão que vai passar a seleção realizada na Lista de Data de Início e Lista de Data Fim para a terceira lista. Neste botão agora podemos reparar que as ações também precisam identificar a qual Estado Alternativo elas irão executar:


Selecionar Intervalo de Datas - 20



A ação que criaremos será a de Selecionar no Campo e deverá ser preenchido com o Estado Alternativo Padrão: conforme imagem:

Selecionar Intervalo de Datas - 21



Em Pesquisa de Caracteres iremos passar a fórmula para indicar o intervalo que deverá ser selecionado:Selecionar Intervalo de Datas - 22



Vamos entender:

  • Da mesma forma que indicamos a qual Estado Alternativo pertence um objeto, também é possível fazer essa referência em uma expressão, para isso basta indicar o nome do Estado Alternativo entre chaves, por exemplo: {Inicio} ou {Fim}. Caso queira que a expressão utilize do Estado Padrão, então basta não referenciar nenhum Estado Alternativo.
  • Para referenciar um Estado Alternativo em uma expressão, precisamos ter uma função de agregação. A função escolhida foi a ONLY. Se a expressão sobre um número de registros, definido por uma cláusula group by, contiver apenas um valor numérico, esse valor será retornado. Caso contrário, retornará NULL.
  • O sinal de igual é necessário, pois estamos informando que o valor deve ser interpretado
  • Os apóstrofes são necessários para que toda essa expressão seja enviada como um texto para a procura dos caracteres, caso contrário o QlikView tentaria resolver essa expressão primeiro e enviar para a pesquisa apenas o resultado dela.
  • O & é utilizado para concatenar uma função que deve ser interpretada antes de ser enviada para a Pesquisa de Caractere, ou seja, ONLY({Inicio} Data) deve ser interpretado e depois concatenado ao texto para depois ser enviado para a Pesquisa de Caractere.
  • Por regra, os sinais de ">=" e "<=" devem estar juntos ao valor que irão avaliar.



Pronto! Agora basta clicar sobre este botão e ver o resultado:Selecionar Intervalo de Datas - 23

Pontos negativos do método

  1. Isso poderia ser simplesmente resolvido utilizando uma lista e selecionando o intervalo que deseja. Pode ter o auxílio da tecla Shift para escolher a data inicial e depois a data final.
  2. O uso em excesso de Estado Alternativo pode prejudicar a performance de sua aplicação.
  3. O usuário só poderá selecionar um valor de data para cada uma das listas (Início e Fim), caso contrário a Pesquisa de Caractere não vai funcionar, mas você pode evitar esse problema marcando que cada uma dessas listas poderá receber apenas um valor através da configuração: Sempre um valor selecionado

Conclusão

Claro que as duas possibilidades possuem pontos negativos se comparados a simples seleção de uma lista, mas é uma forma de como se fazer tal seleção. Lembre-se de avaliar qual o método melhor para o seu cenário.

Obrigado e até a próxima semana!

Labels (3)
9 Replies
marcio150972
Creator
Creator

Sensacional, estava precisando exatamente isso, valeu!!

marcio150972
Creator
Creator

Acabei de implantar a primeira situação, ficou perfeito! Muito obrigado por postar esse artigo!

Not applicable

Estou com um problema com as 2 situações, se eu coloco buscar por ex.:

Data inicial : 01/07/2016

Data Final  : 10/07/2016 

Está selecionando até uma data antes da data final ( neste caso até 09/07/2016) , e eu coloquei exatamente da maneira como explicado, não consigo achar algo para resolver.

Alguém teve o mesmo problema?

Todas as informações e formatações estão corretas.

Not applicable

Eu consigo mandar buscar  >= Data Inicial <= Data Final + 1 dia? 
Se sim, como ficaria a expressão ?

rbarbosa
Contributor III
Contributor III

Tenta usar o operador, "Maior ou igual" >=, "Menor ou igual" <=

https://help.qlik.com/pt-BR/qlikview/12.0/Subsystems/Client/Content/Scripting/Operators/RelationalOp...

Rodolfo Barbosa
rbarbosa
Contributor III
Contributor III

Ótimo post, poucas aplicações que vi até hoje no ambiente empresarial não utilizaram algo parecido com um filtro para intervalo de datas, realmente importante. Parabéns!

Rodolfo Barbosa
Thiago_Justen_

Excelente post.

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
marcelvinicius
Creator III
Creator III

Muito bom mesmo o post, gostaria só de saber se consigo fazer os mesmos moldes no Sense.

Abraços

nicolett_yuri
Author

Por padrão não é possível realizar no Sense, talvez seja possível com extensions, mas não conheço nenhuma que faça isso