Skip to main content
Announcements
Qlik Connect 2025: 3 days of full immersion in data, analytics, and AI. May 13-15 | Orlando, FL: Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
rotter
Contributor III
Contributor III

Max and Min Highlighters in a Combo Chart @ Qlik Sense

I'm facing a problem with a combo chart.
I want to show the maximum and the minimum value of a measure (only two highlighters), but minimum highlighter appears repeatedly in every month and far from the line.

Can someone help me, please?

20240425.png

 

MEASURE (line): count(distinct Chave_Contrato)

HIGHLIGHTERS
Max: =if(count(distinct Chave_Contrato)=max(total aggr(count(distinct Chave_Contrato),[Mês Ano Registro Contrato])),count(distinct Chave_Contrato),0)
Min: =if(count(distinct Chave_Contrato)=min(total aggr(count(distinct Chave_Contrato),[Mês Ano Registro Contrato])),count(distinct Chave_Contrato),0)

Thanks!

Labels (1)
1 Solution

Accepted Solutions
rotter
Contributor III
Contributor III
Author

Boa tarde, @MatheusC.

Muito obrigado pela ajuda! 😃 Consegui o resultado modificando parte da sua sugestão.

O problema era que mesmo não considerando os valores nulos na dimensão eles ainda eram considerados na medida, plotando os pontos em todos os meses. Tratando isso com:

{<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}

e deixando nulos os resultados que não atendessem a condição do "if", ficaram apenas o mínimo e o máximo.

20240502.png

 

Solução: no gráfico incluí dois marcadores (min/max):

Mínimo
=if(count(distinct Chave_Contrato)=
min(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),
min(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),null())

Máximo
=if(count(distinct Chave_Contrato)=
max(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),
max(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),null())

- - - - - - - - - - - - - - - - - - -

É possível conseguir o mesmo resultado colocando tudo em uma expressão apenas, mas para facilitar a mudança das cores de cada ponto é que deixei as mesmas separadas.

Mínimo/Máximo
//mínimo
=if(count(distinct Chave_Contrato)=
min(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),
min(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),
//máximo
if(count(distinct Chave_Contrato)=
max(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),
max(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),null()))


Mais uma vez agradeço pelo apoio!

 

View solution in original post

6 Replies
MatheusC
Specialist II
Specialist II

@rotter ,

Following your expression on the front end, you could try something like:

 

if(count(distinct Chave_Contrato)=min(total aggr(count( distinct Chave_Contrato),[Month Year Record Contract]))
,min(total aggr(count( distinct Chave_Contrato),[Month Year Record Contract])),
if(count( distinct Chave_Contrato)=max(total aggr(count( distinct Chave_Contrato),[Month Year Record Contract]))
,max(total aggr(count( distinct Chave_Contrato),[Month Year Record Contract])),''))


 Regarts, Matheus

Did you find a solution to your question? Mark the solution as accepted and if you found it useful, press the like button!
rotter
Contributor III
Contributor III
Author

Hello, @MatheusC .
Thank you for your help!

I tried your suggestion, but it still doesn't work...

Now the maximum highlighter continues to appear, on the other hand, the minimum appears in gray at the null value of the dimension.

20240426_01.png

Disabling 'Include null values' in the dimension, the maximum highlighter changes its position in the chart and the minimum does not appear.

20240426_02.png

MatheusC
Specialist II
Specialist II

I was able to achieve the result by using a filter within the set analysis for the period that is being used in the visualization, for example:

With the date field, you might be using it as:
filtering from 2019 to the current date.

FieldDate={“>=$(=AddMonths(yearstart(today()),-60))<=$(=today())”}

example:
min(total aggr(count({<FieldDate={“>=$(=AddMonths(yearstart(today()),-60))<=$(=today())”}>} distinct Chave_Contrato),[Month Year Record Contract]))

Did you find a solution to your question? Mark the solution as accepted and if you found it useful, press the like button!
rotter
Contributor III
Contributor III
Author

Olá, @MatheusC!
Imagino que seja brasileiro não só pelo nome, mas porque vi algumas respostas suas em português.
Obrigado pela ajuda novamente.

Então, tentei fazer o que sugeriu, mas ainda não deu certo. 
Esse set analysis considerando o período deve ser colocado em todas as partes da expressão ou somente para obter o máximo e o mínimo? Mais precisamente em cada count abaixo?

if(count(distinct Chave_Contrato)=min(total aggr(count( distinct Chave_Contrato),[Month Year Record Contract]))
,min(total aggr(count( distinct Chave_Contrato),[Month Year Record Contract])),
if(count( distinct Chave_Contrato)=max(total aggr(count( distinct Chave_Contrato),[Month Year Record Contract]))
,max(total aggr(count( distinct Chave_Contrato),[Month Year Record Contract])),''))

 

MatheusC
Specialist II
Specialist II

 

Oi, @rotter sim Brasileiro também.

Vamos lá então, eu simulei seu gráfico e segui sua expressão. Consegui chegar no resultado aplicando o filtro do período da visualização dentro do min e max.

O exemplo informado para filtrar o período no set analysis é a partir de um campo Data.

Tevez precise ajustar para funcionar no seu cenário pois não sei como está estruturado seu modelo.

Espero que consiga chegar em seu resultado.

Então ficaria assim:

if(count(distinct Chave_Contrato)=min(total aggr(count({<FieldDate={“>=$(=AddMonths(yearstart(today()),-60))<=$(=today())”}>}  distinct Chave_Contrato),[Month Year Record Contract]))

,min(total aggr(count({<FieldDate={“>=$(=AddMonths(yearstart(today()),-60))<=$(=today())”}>}  distinct Chave_Contrato),[Month Year Record Contract])),

if(count( distinct Chave_Contrato)=max(total aggr(count({<FieldDate={“>=$(=AddMonths(yearstart(today()),-60))<=$(=today())”}>}  distinct Chave_Contrato),[Month Year Record Contract]))

,max(total aggr(count({<FieldDate={“>=$(=AddMonths(yearstart(today()),-60))<=$(=today())”}>}  distinct Chave_Contrato),[Month Year Record Contract])),''))


Att, Matheus

Did you find a solution to your question? Mark the solution as accepted and if you found it useful, press the like button!
rotter
Contributor III
Contributor III
Author

Boa tarde, @MatheusC.

Muito obrigado pela ajuda! 😃 Consegui o resultado modificando parte da sua sugestão.

O problema era que mesmo não considerando os valores nulos na dimensão eles ainda eram considerados na medida, plotando os pontos em todos os meses. Tratando isso com:

{<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}

e deixando nulos os resultados que não atendessem a condição do "if", ficaram apenas o mínimo e o máximo.

20240502.png

 

Solução: no gráfico incluí dois marcadores (min/max):

Mínimo
=if(count(distinct Chave_Contrato)=
min(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),
min(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),null())

Máximo
=if(count(distinct Chave_Contrato)=
max(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),
max(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),null())

- - - - - - - - - - - - - - - - - - -

É possível conseguir o mesmo resultado colocando tudo em uma expressão apenas, mas para facilitar a mudança das cores de cada ponto é que deixei as mesmas separadas.

Mínimo/Máximo
//mínimo
=if(count(distinct Chave_Contrato)=
min(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),
min(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),
//máximo
if(count(distinct Chave_Contrato)=
max(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),
max(total {<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>} aggr(count({<[Mês Ano Registro Contrato]=p([Mês Ano Registro Contrato])>}distinct Chave_Contrato),[Mês Ano Registro Contrato])),null()))


Mais uma vez agradeço pelo apoio!