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: 
Not applicable

Compara dois campos no Set Analysis

Srs,

Tenho uma expressão onde preciso que um campo de data (Dia2) seja comparado com outro campo de data (Dia1) que é o campo do filtro, por razões de “modelagem da nuvem”.

Podem me ajudar?

=Sum( {< [Calendário - Ano] =
,
[Calendário - MêsAno] = {'>=$(vPeriodoUltimosSeisMeses) <=$(vPeriodoAtual)'}
,
[Calendário - Mês] =
,
[Dia2] = {'< [Dia1] = >'}
>}
[Contrato - Valor Faturado (VGV)] ) / 1000

1 Solution

Accepted Solutions
fosuzuki
Partner - Specialist III
Partner - Specialist III

Ahtá, estava imaginando outro cenário. Então acho q vc não vai filtrar um único dia no Dia1 certo? Se for isso, o set analysis q te passei não vai funcionar. E acredito que não será possível resolver só ajustando o set analysis. Eu vejo duas alternativas:

1. ajustar o modelo de dados considerando o dia na amarração entre os dados

2. usar um if na expressão, algo do tipo:

=Sum( {< [Calendário - Ano] =
,
[Calendário - MêsAno] = {'>=$(vPeriodoUltimosSeisMeses) <=$(vPeriodoAtual)'}
,
[Calendário - Mês] =
>}
if(Dia1 = Dia2, [Contrato - Valor Faturado (VGV)] )) / 1000

Isso com certeza é menos performático do que a primeira opção. Mas, dependendo da sua nuvem de dados, o impacto na performance não seja tão ruim.

View solution in original post

3 Replies
fosuzuki
Partner - Specialist III
Partner - Specialist III

O campo Dia1 está em uma ilha lógica?

Tenta incluir essa parte no set analysis: Dia2 = {$(=max(Dia1))}

Not applicable
Author

Não está exatamente numa ilha lógica devido a uma "Link Table" que tem no meio do caminho funcionando como uma ponte.

O filtro na tela está usando o campo pk_DiaMeta (que contém somente números de dia de 1 a 31) mas os cálculos da expressão usam campos que estão na tabela Fato.

Na tabela Fato o campo equivalente é o pk_calendario_DataCompleta_Dia (que contém somente números de dia de 1 a 31). Os valores de Meta estão na MetaDia e os valores de Venda estão na Fato. Preciso cruzar os dois valores num só gráfico mas tenho somente o campo pk_DiaMeta para filtrar o dia.

Sendo assim, preciso de alguma forma dizer que o campo pk_calendario_DataCompleta_Dia é igual ao pk_DiaMeta ao calcular a expressão.

Não sei se fui claro, segue o print de uma parte da nuvem.

Acredito que comparar esses dois campos na expressão seja a forma menos impactante...

As chaves que ligam essas tabelas só tem AnoMes e código da filial, por isso ao filtrar o dia de um lado não filtra do outro.print nuvem.jpg

fosuzuki
Partner - Specialist III
Partner - Specialist III

Ahtá, estava imaginando outro cenário. Então acho q vc não vai filtrar um único dia no Dia1 certo? Se for isso, o set analysis q te passei não vai funcionar. E acredito que não será possível resolver só ajustando o set analysis. Eu vejo duas alternativas:

1. ajustar o modelo de dados considerando o dia na amarração entre os dados

2. usar um if na expressão, algo do tipo:

=Sum( {< [Calendário - Ano] =
,
[Calendário - MêsAno] = {'>=$(vPeriodoUltimosSeisMeses) <=$(vPeriodoAtual)'}
,
[Calendário - Mês] =
>}
if(Dia1 = Dia2, [Contrato - Valor Faturado (VGV)] )) / 1000

Isso com certeza é menos performático do que a primeira opção. Mas, dependendo da sua nuvem de dados, o impacto na performance não seja tão ruim.