Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Pegar valor de um dado da mesma linha de outra expressão

Olá,

estou com o seguinte problema:

fiz uma tabela simples com dimensão sendo a data, em uma das expressões fiz um Max( ) e na outra expressão precisava pegar o valor de outro dado (mesma linha) que possui o Max daquele dia.

Obrigada!

6 Replies
Anonymous
Not applicable
Author

Usa o nome da outra expressão... para não precisar repetir a expressão inteira...

ex:

nome: UltimoDia

expressão: max(Dia)

Nome:

Expressão: if (UltimoDia = 5 , ...)

Se você for trabalhar com a idéia de uma condição onde "Dia = UltimoDia" e o último dia for variável dependendo da dimensão, como no caso de uma dimensão mês, onde vc teria 39, 30 ou 31 como ultimo dia. Sugiro então utilizar essa condição dentro de um IF e não no set analysis....

Not applicable
Author

Obrigada Rodrigo,

mas vou exemplificar aqui o que não consigo fazer:

no meu banco tenho dados de temperatura de uma cidade separados por dia e hora de ocorrência.

Na minha tabela eu agrupo por dia e na temperatura mostro apenas a máxima de cada dia, porém preciso também mostrar a hora que essa máxima ocorrreu no dia.

Por exemplo:

No banco

Dia                Hora      Temperatura

01/01/2012     1            20,6

01/01/2012     2            20,5

...

01/01/2012    23            22,2

01/01/2012    24            21,5

02/01/2012    1              21,0

...

   

Na tabela simples coloco:

Dia                Temp. Máxima           Hora da Temp. Máxima

01/01/2012     31,0                          14

02/01/2012     32,1                          12

Mas essa hora não consigo pegar, já tentei if, busquei função que retorna a linha mas só achei rowNo, que não ajudou.

Not applicable
Author

O ideal seria você usar um campo datetime no seu banco de dados.

pablolabbe
Luminary Alumni
Luminary Alumni

Tenta esta expressão:

  IF(Max(Temperatura)=MAX(TOTAL <Dia> Temperatura),Max(Hora))

Not applicable
Author

Essa expressão retorna o valor maximo, no caso, sempre 23.

Rafael, eu preciso buscar a temperatura máxima (dentre outros dados) de cada dia, eu já tenho no banco um campo data e um campo hora, não vejo onde unir os dois ajudaria, poderia explicar?

erichshiino
Partner - Master
Partner - Master

Letícia,

Sugiro que crie um flag ou mesmo o próprio campo de temperatura máxima em seu modelo, para evitar expressões complexas ou mesmo de baixa performance na interface.

Se tiver uma tabela de temperaturas da como apresentou, poderia fazer o seguinte:

Temperaturas:

Select Dia, Hora, Temperatura from Tabela_Temperatura;

maxTemp:

Load Dia, Max(Temperatura) as Temperatura

resident Temperaturas;

left join(Temperaturas)

Load Dai, Temperatura, 1 as flagTemperatura

resident maxTemp;

drop table maxTemp;

para identificar as temperaturas máximas em um gráfico, poderia usar o seguinte set analys:

=only( {<flagTe mperatura = {1} >} Temperatura)

(Veja que só há uma temperatura máxima por dia)

e para pegar a hora, já existem outras opções.

Digamos que a temperatura máxima se repita em algumas horas (talvez não aconteça), mas todas elas receberiam o flagTemperatura =1.

Então, você pode escolher qual delas apresentar. Por exemplo, a primeira:

= min ( {<flagTe mperatura = {1} >} hora) 

ou a última :

= max ( {<flagTe mperatura = {1} >} hora)

Espero que ajude,

Erich