Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: 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.