Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
kkmoraes
Contributor III
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

Labels (3)
1 Solution

Accepted Solutions
Anonymous
Not applicable

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)

View solution in original post

4 Replies
Anonymous
Not applicable

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
Contributor III
Contributor III
Author

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?

Anonymous
Not applicable

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
Contributor III
Contributor III
Author

Entendi Rodrigo,

Muito obrigado pela ajuda!

Abraço