Qlik Community

Qlik Brasil

Welcome to the group for Brazil users. .All discussions will be in Portuguese.

Highlighted
msludo
New Contributor II

Agregação condicional com IF

Boa tarde, pessoal,

Estou fazendo os exercícios do livro QlikView Your Business e estou com a seguinte dificuldade no exercício 4.28, em que tenho que fazer o preço médio de vendas acumulado no ano (YTD Average Sales Price). Em exercício anterior, isso foi calculado da seguinte forma:

YTD Average Sales Price = sum(# Amount) / sum(# Invoiced Quantity)

Agora, como faço o acumulado no ano? Tentei a seguinte fórmula:

sum( IF(InYearToDate([Invoice Date], '12/31/2014',0),  sum(# Amount) / sum(# Invoiced Quantity)  )   )


porém dá a seguinte mensagem de erro: nested agregation not allowed.


Como resolver isso?



Obs.: utilizo QlikSense

1 Reply
Partner
Partner

Re: Agregação condicional com IF

Olá Ludo,

É possível realizar a operação através de set analysis:

Digamos que você tem dados assim:

data:

load *,

Num([Invoice Date]) as [Num Invoice Date],

Year([Invoice Date]) as [Year Invoice Date];

Load * Inline

[

Invoice Date,#Amount

01/01/2017,100

01/06/2017,200

01/01/2018,300

01/02/2018,400

01/03/2018,350

01/04/2018,406

01/05/2018,340

01/06/2018,460

01/07/2018,311

01/08/2018,30

01/09/2018,355

01/10/2018,6

01/11/2018,1000

01/12/2018,666666

01/01/2019,691390812839

];

Você pode usar set analysis para pegar somente as datas que são do ano e menor que a data atual através de:

sum({<[Year Invoice Date]={"$(=Year(Today()))"},[Num Invoice Date]={"<=$(=Num(Today()))"}>}#Amount)

/

count({<[Year Invoice Date]={"$(=Year(Today()))"},[Num Invoice Date]={"<=$(=Num(Today()))"}>}[Invoice Date])

Isso te dará apenas os valores que são até a data, através de set analysis, de modo a ficar como no print a seguir:

sample.png