Skip to main content
Announcements
See why Qlik was named a Leader in the 2024 Gartner® Magic Quadrant™ for Data Integration Tools for the ninth year in a row: Get the report
cancel
Showing results for 
Search instead for 
Did you mean: 
msludo
Contributor III
Contributor III

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

Labels (2)
1 Reply
felipedl
Partner - Specialist III
Partner - Specialist III

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