Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
kkmoraes
New Contributor III

Ajuda com Expressão

Pessoal,

Boa tarde!

Estou com o seguinte cenário: Possuo uma tabela com dados do contrato e uma tabela com um cronograma anual de liberações de valores para esse contrato montei o gráfico dessa forma:

Lib1.PNG

Minha necessidade é exibir os valores de liberações quando o Ano/Mês do primeiro gráfico forem iguais ao Ano/Mês do segundo, pensei em fazer da seguinte forma, na expressão "Liberações" no primeiro gráfico faço essa validação:

IF((MakeDate([Ano da Projeção], [Mês da Projeção], 01)) = vCronograma, Vl2,0)

as dimensões [Ano da Projeção] e [Mês da Projeção] são as duas primeiras colunas no primeiro gráfico, e a variável vCronograma está assim: =MakeDate(Year(DT2), Month(DT2), 01)

O campo DT2 corresponde a data exibida na coluna "Data da Liberação" no segundo gráfico.

Quando faço a seleção no segundo gráfico, o resultado é conforme esperado, ficando dessa forma:

Lib2.PNG

O valor da liberação foi para a coluna "Liberações"

Porém, precisou da ação do usuário realizando a seleção, como eu tenho mais de uma liberação gostaria que os valores fossem aplicados seguindo a mesma lógica para todos os Ano/Mês equivalentes entre as duas tabelas, porém sem a necessidade da ação do usuário.

Alguém pode me explicar por favor se é possível fazer isso?

A modelagem entre essas duas tabelas é simples, está assim:

Obrigado!

lib3.PNG

Tags (1)
1 Solution

Accepted Solutions
rvsilvestre
Contributor III

Re: Ajuda com Expressão

tenta jogar o if pra dentro de um SUM()

sum(IF((MakeDate([Ano da Projeção], [Mês da Projeção], 01)) = MakeDate(Year(DT2), Month(DT2), 01), Vl2))

* se for usar a variável vCronograma , certifique-se dela estar sendo calculada dentro do objeto, da forma como esta acho que ela esta sendo calculada fora do objeto.

eu sempre deixo sem o " = " na variável.... e na expressão uso $(vCronograma)

4 Replies
rvsilvestre
Contributor III

Re: Ajuda com Expressão

tenta jogar o if pra dentro de um SUM()

sum(IF((MakeDate([Ano da Projeção], [Mês da Projeção], 01)) = MakeDate(Year(DT2), Month(DT2), 01), Vl2))

* se for usar a variável vCronograma , certifique-se dela estar sendo calculada dentro do objeto, da forma como esta acho que ela esta sendo calculada fora do objeto.

eu sempre deixo sem o " = " na variável.... e na expressão uso $(vCronograma)

kkmoraes
New Contributor III

Re: Ajuda com Expressão

Rodrigo,

Sua dica funcionou!, muito obrigado!

Só queria entender melhor a parte que você fala para garantir que a variável está sendo calculada dentro do objeto, podes explicar por favor?

rvsilvestre
Contributor III

Re: Ajuda com Expressão

Seguinte, imagine que você tem la:

mês valor

jan  150

fev  500

mar 350

se você criar uma variável "vValor" e deixar o conteúdo dela, por exemplo: "= sum(valor)" , quando você for usar a variável, ela irá vir com o cálculo pronto, imagine que você colocou  vValor em uma gráfico de tabela com a dimensão mês, o resultado seria esse:

jan  1000

fev  1000

mar 1000

O que você precisa fazer para utilizar a variável como expressão, é trazer ela como "texto" para ela ser calculada dentro dos objetos, como eu faço isso, na hora de definir a variável eu a defino sempre sem o "=" na frente, com isso se eu colocar apenas vValor em objeto de texto por exemplo, o resultado será o texto: "sum(valor)" , se eu quiser trazer o valor dessa variável, eu a escrevo assim $(vValor) . Dessa forma eu sei que minha variável estará sendo calculada dentro do objeto considerando suas dimensões e não apenas trazendo o valor total já calculado pro objeto.

Voltando ao seu exemplo, na sua variável

=MakeDate(Year(DT2), Month(DT2), 01)


se você jogar ela dentro de um objeto de texto, verá que vem nullo, porque você esta aplicando a função a todos os valores do campos DT2, essa função só vai funcionar se for aplicada a apenas um valor de DT2, por isso quando você seleciona apenas um campo, a expressão funciona.


Se ficou mais alguma dúvida, só perguntar..


Abraço.



kkmoraes
New Contributor III

Re: Ajuda com Expressão

Entendi Rodrigo,

Muito obrigado pela ajuda!

Abraço