Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
rodrigo_dittric
New Contributor III

Igualar dois campos em uma fórmula

Bom dia pessoal,

Estou com uma pequena dificuldade em algo simples:

Tenho a seguinte fórmula que funciona bem:

COUNT(DISTINCT IF(DT_EMISSAO<='31/01/2018'

   AND ST_RECEITA='S' AND NTV_PSI_CODIGO='FF' AND NTV_TIPOVENDA='S'

     AND $(v1FiliaisMeta)

       AND ('31/01/2018'-DT_EMISSAO) <= 365

        AND MUN_CODIGO = REP_MUN_CODIGO

       , MUN_CODIGO))

Porém preciso fazer essa forma usando o método set analysis.

COUNT(DISTINCT {<ANO=, NM_MES=, DT_EMISSAO={"<=$(=DATE(MAX(DT_EMISSAO)))"},

     ST_RECEITA={'S'}, NTV_PSI_CODIGO={'FF'}, NTV_TIPOVENDA={'S'},

      FIL_CODIGO={$(=vFiliaisMeta)},

        DT_EMISSAO={"<=$(=date(MAX(DT_EMISSAO)-365))"},

          MUN_CODIGO={"=$(=REP_MUN_CODIGO)"}

           >} MUN_CODIGO)

Mas na segunda fórmula não consigo adaptar a linha que está marcada em vermelho.

Alguém poderia me esclarecer como uso um campo igualando outro no set analysis?

Tags (1)
1 Solution

Accepted Solutions
thiago_justen
Valued Contributor III

Re: Igualar dois campos em uma fórmula

Rodrigo, mais uma tentativa:

COUNT(DISTINCT {<ANO=, NM_MES=, DT_EMISSAO={"<=$(=DATE(MAX(DT_EMISSAO)))"},

     ST_RECEITA={'S'}, NTV_PSI_CODIGO={'FF'}, NTV_TIPOVENDA={'S'},

      FIL_CODIGO={$(=vFiliaisMeta)},

        DT_EMISSAO={"<=$(=ADDYEARS(MAX(DT_EMISSAO),-1))"}>} If(MUN_CODIGO=REP_MUN_CODIGO, MUN_CODIGO))

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
4 Replies
thiago_justen
Valued Contributor III

Re: Igualar dois campos em uma fórmula

Vejamos se isso resolve:

COUNT(DISTINCT {<ANO=, NM_MES=, DT_EMISSAO={"<=$(=DATE(MAX(DT_EMISSAO)))"},

     ST_RECEITA={'S'}, NTV_PSI_CODIGO={'FF'}, NTV_TIPOVENDA={'S'},

      FIL_CODIGO={"$(=vFiliaisMeta)"},

        DT_EMISSAO={"<=$(=ADDYEARS(MAX(DT_EMISSAO),-1))"},

          MUN_CODIGO={"$(=If(MUN_CODIGO=REP_MUN_CODIGO,MUN_CODIGO)"}

           >} MUN_CODIGO)

Crendo que possa dar erro (via set analysis não sei se conseguiria o que queres), poderia tentar assim:

IF(MUN_CODIGO=REP_MUN_CODIGO,

COUNT(DISTINCT {<ANO=, NM_MES=, DT_EMISSAO={"<=$(=DATE(MAX(DT_EMISSAO)))"},

     ST_RECEITA={'S'}, NTV_PSI_CODIGO={'FF'}, NTV_TIPOVENDA={'S'},

      FIL_CODIGO={"$(=vFiliaisMeta)"},

        DT_EMISSAO={"<=$(=ADDYEARS(MAX(DT_EMISSAO),-1))"}>} MUN_CODIGO))

Abs e Sucesso!

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
rodrigo_dittric
New Contributor III

Re: Igualar dois campos em uma fórmula

Estou tentando achar uma fórmula que se adapte!

Estas não deram certo!

thiago_justen
Valued Contributor III

Re: Igualar dois campos em uma fórmula

Rodrigo, mais uma tentativa:

COUNT(DISTINCT {<ANO=, NM_MES=, DT_EMISSAO={"<=$(=DATE(MAX(DT_EMISSAO)))"},

     ST_RECEITA={'S'}, NTV_PSI_CODIGO={'FF'}, NTV_TIPOVENDA={'S'},

      FIL_CODIGO={$(=vFiliaisMeta)},

        DT_EMISSAO={"<=$(=ADDYEARS(MAX(DT_EMISSAO),-1))"}>} If(MUN_CODIGO=REP_MUN_CODIGO, MUN_CODIGO))

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
rodrigo_dittric
New Contributor III

Re: Igualar dois campos em uma fórmula

Bom dia Thiago,

Show de bola, deu certo essa última fórmula ficando assim:

COUNT(DISTINCT {<ANO=, NM_MES=, DT_EMISSAO={">=$(=AddYears(MAX(vPeriodo),-1)) <=$(=date(Max(vPeriodo)))"},

     ST_RECEITA={'S'}, NTV_PSI_CODIGO={'FF'}, NTV_TIPOVENDA={'S'},

      FIL_CODIGO={$(=vFiliaisMeta)}

        >} If(MUN_CODIGO=REP_MUN_CODIGO, MUN_CODIGO))

Obs: Porém na minha fórmula anterior tinha um erro de lógica:

Eu estava matando alguns filtros onde eu fazia:

DT_EMISSAO={"<=$(=DATE(MAX(DT_EMISSAO)))"}, e logo após

DT_EMISSAO={"<=$(=ADDYEARS(MAX(DT_EMISSAO),-1))"}>}

Corrigi essa parte e com sua última resposta deu certo.