Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
eduardo_dimperi
Valued Contributor II

Ajuda com Set Analysis

Oi gente,

Estou confuso com um resultado, criei um set analysis para realizar uma soma quando o consumo atual e a media de consumo dos ultimos meses foram maiores que 1 (dentre outras regras), porém essa regra esta sendo ignorada. O que pode ser?

SUM(${<CONSUMO_TOTAL = {"=CONSUMO_TOTAL> 1.5*CONSUMO_MEDIA_TRIMESTRAL"}+

{"=CONSUMO_TOTAL> 0.5*CONSUMO_MEDIA_TRIMESTRAL"}+

                        {"=CONSUMO_TOTAL>1"}+

                        {"CONSUMO_MEDIA_TRIMESTRAL>1"}

                        >} ROUND((CONSUMO_TOTAL- CONSUMO_MEDIA_TRIMESTRAL),0.01))

set_analysis2.JPG

Imaginei que essa linha deveria vir com resultado vazio, alguem pode me ajudar?

Obrigado

Tags (1)
1 Solution

Accepted Solutions
felipedl
Valued Contributor III

Re: Ajuda com Set Analysis

Os dados são diferentes nesses casos.

Quando você avalia algo como:

sum(Sales)

vai ser diferente de:

sum({<CampoA={1},Campo2={B}>}Sales)

Por esse motivo, quando você usa duas expressões diferentes, vão sair "tabelas" diferentes, digamos assim. As agregações vão ser diferentes entre as expressões e por isso ele se perde, pq avaliam coisas diferentes.

Supondo que a expressão (1), retorne 10 linhas e a segunda só 5, se você fizer uma a condição de cor para 1, não necessariamente iria respeitar na outra.

Dúvida 2:

Quanto a esse aspecto, do próprio help da qlik o Set Analysis

http://help.qlik.com/en-US/qlikview/November2017/Subsystems/Client/Content/ChartFunctions/SetAnalysi...

tem que ser disposto entre <> para poder fazer operações de conjunto, por exemplo como está na expressão que você usou. Essa que você mencionou acredito que seja para bookmark ou coisa parecida


Expressão extraída de soma de conjuntos do Help: Sum({$<Year={2009}>+1<Country={'Sweden'}>} Sales)

É assim que a Qlik mostra as operações.

13 Replies
YoussefBelloum
Esteemed Contributor

Re: Ajuda com Set Analysis

hi,

try to attach sample data

felipedl
Valued Contributor III

Re: Ajuda com Set Analysis

Ola Eduardo,

a construção do set analysis precisa de uns ajustes, pois deveria ser a soma de conjuntos, algo como abaixo:

SUM

(

{<

CONSUMO_TOTAL = {'=CONSUMO_TOTAL> 1.5*CONSUMO_MEDIA_TRIMESTRAL'}

>

+

<

CONSUMO_TOTAL = {'=CONSUMO_TOTAL> 0.5*CONSUMO_MEDIA_TRIMESTRAL'}

>

+

    < 

    CONSUMO_TOTAL = {'=CONSUMO_TOTAL>1'}

>

    +

    < 

      CONSUMO_TOTAL =  {'CONSUMO_MEDIA_TRIMESTRAL>1'}

    >}

    ROUND

    (

  CONSUMO_TOTAL- CONSUMO_MEDIA_TRIMESTRAL

    ,

    0.01

    )

)

Se eu carregar os seguintes dados:

x:

load * Inline

[

OIDMETER,CONSUMO_TOTAL,CONSUMO_MEDIA_TRIMESTRAL

38584,0.41,0.41

1,1.7,0.3

];

Consigo a imagem abaixo, ou seja o seu set analysis não está contemplando a linha que você demonstrou, devido as condições que você colocou.

Sample.png

eduardo_dimperi
Valued Contributor II

Re: Ajuda com Set Analysis

Oi Felip, nao deu certo. Ainda aparecem os valores menores que 1set_analysis.JPG

eduardo_dimperi
Valued Contributor II

Re: Ajuda com Set Analysis

Sure

felipedl
Valued Contributor III

Re: Ajuda com Set Analysis

A parte do set analysis

<CONSUMO_TOTAL = {'=CONSUMO_TOTAL> 0.5*CONSUMO_MEDIA_TRIMESTRAL'}>

está permitindo esses valores, deve ser alguma questão de arredondamento onde apesar de ser 0.01 e 0.01 para ambos os campos, devem ser valores menores, se você excluir essa parte, os valores que você grifou na imagem somem.

Sample.png

eduardo_dimperi
Valued Contributor II

Re: Ajuda com Set Analysis

Entao, mas eu preciso fazer uma clausula AND pra isso.

A logica é  pegar CONSUMO TOTAL >  OU < 50%  do CONSUMO_TRIMESTRAL E CONSUMO_TOTAL>1 E CONSUMO_TRIMESTRAL>1


Mas nao consigo montar isso no Set Analysis, imaginei que o operador * equivaleria ao AND e o operador + equivaleria ao OU.

felipedl
Valued Contributor III

Re: Ajuda com Set Analysis

Tente modificar o "+" por "*" que seria a intersecção dos conjuntos para esses dois que você necessita.

eduardo_dimperi
Valued Contributor II

Re: Ajuda com Set Analysis

Cara, acho que agora esta funcionando, mas com uma situação estranha. Meu codigo ficou assim:

Sum({

<CONSUMO_TOTAL = {'=CONSUMO_TOTAL>1'}>*

<CONSUMO_TOTAL = {'=CONSUMO_MEDIA_TRIMESTRAL>1'}>*

        <CONSUMO_TOTAL = {'=CONSUMO_TOTAL>1.5*CONSUMO_MEDIA_TRIMESTRAL'}>

        +

        <CONSUMO_TOTAL = {'=CONSUMO_TOTAL>1'}>*

<CONSUMO_TOTAL = {'=CONSUMO_MEDIA_TRIMESTRAL>1'}>*

        <CONSUMO_TOTAL = {'=CONSUMO_TOTAL<0.5*CONSUMO_MEDIA_TRIMESTRAL'}>

     } FABS(CONSUMO_TOTAL-CONSUMO_MEDIA_TRIMESTRAL))

Com resultado esperado

set_analysis.JPG

Mas se eu coloco uma expressão de cor de fundo:

IF(CONSUMO_TOTAL<0.5*CONSUMO_MEDIA_TRIMESTRAL OR CONSUMO_TOTAL>1.5*CONSUMO_MEDIA_TRIMESTRAL, RED() )

Ele se perde

set_analysis2.JPG

felipedl
Valued Contributor III

Re: Ajuda com Set Analysis

Jogue a mesma expressão que você usou no gráfico para a cor, por exemplo:

if

(

Sum({

<CONSUMO_TOTAL = {'=CONSUMO_TOTAL>1'}>*

<CONSUMO_TOTAL = {'=CONSUMO_MEDIA_TRIMESTRAL>1'}>*

        <CONSUMO_TOTAL = {'=CONSUMO_TOTAL>1.5*CONSUMO_MEDIA_TRIMESTRAL'}>

        +

        <CONSUMO_TOTAL = {'=CONSUMO_TOTAL>1'}>*

<CONSUMO_TOTAL = {'=CONSUMO_MEDIA_TRIMESTRAL>1'}>*

        <CONSUMO_TOTAL = {'=CONSUMO_TOTAL<0.5*CONSUMO_MEDIA_TRIMESTRAL'}>

     } FABS(CONSUMO_TOTAL-CONSUMO_MEDIA_TRIMESTRAL))

> 0.5,red(),green())