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
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:
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:
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:
Agora temos que informar qual o nome do campo e o valor em que desejamos realizar a seleção:
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:
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.
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:
Pronto! Agora basta clicar sobre este botão e ver o resultado:
Pontos negativos do método
- 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.
- 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:
Inclua dois Estados, Inicio e Fim:
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:
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:
Esta primeira lista será a nossa Data de Início. Na lista faça as seguintes configurações:
Agora vamos criar outra lista, esta será a nossa Data Fim. Na lista faça as seguintes configurações:
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:
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:
A ação que criaremos será a de Selecionar no Campo e deverá ser preenchido com o Estado Alternativo Padrão: conforme imagem:
Em Pesquisa de Caracteres iremos passar a fórmula para indicar o intervalo que deverá ser selecionado:
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:
Pontos negativos do método
- 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.
- O uso em excesso de Estado Alternativo pode prejudicar a performance de sua aplicação.
- 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!
Dica muito top!!!!!
Estaba procurando algo nesse sentido pra fazer comparativos entre dois periodos diferentes sem precisar replicar dimensoes de Tempo. Isso ajudou pacas!!!
Muito obrigado pela dica e fico feliz que ja tenha se recuperado (talvez 100%?) e nos ajudar com sua inteligencia…
Abraços!
Opa Marco, muito obrigado pelas palavras! Graças a Deus já estou 100% !
e se fosse pra eu trazer todo que for menor que data selecionada?
Tem como criar uma regra para quando o usuario digitar a mesma data de inicio ou de fim exemplo 11/05/2020 para ambos ele filtrar só o dia 11/05/2020 pq desta forma que está ele não aplica a seleção.