Skip to main content
Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
cancel
Showing results for 
Search instead for 
Did you mean: 
rbarbosa
Contributor III
Contributor III

Expressão Set agregando dimensão totalizadora



Bom dia pessoal, estou trabalhando em um projeto que consome dados do SAP, e estou trabalhando com dados que dizem respeito a alguns custos.


Para que possam entender o cenário, tenho dois campos com valores "PO Value" que é o valor da ordem de compra, linha a linha, e criei uma outra coluna totalizando que é a coluna "Repair Cost".(neste caso trato apenas custo de reparo).


Antigamente usava somente o campo PO Value(Também é filtrado apenas por reparo), porém os filtros influenciavam diretamente no valor total/acumulados pois poderiam ser retiradas linhas, deixando assim de compor o custo total.


Como solução criei a coluna calculada.


Meu problema agora é aplicar as mesmas expressões para realizar os mesmos calculos, porém com a coluna agregada.


Estou agregando por Notificação no momento.


Mas no exemplo a seguir preciso acumular em um intervalo de tempo(Ano Anterior vs Ano Atual por Ex)


Os totais gerais e com dimensçoes filtradas como por exemplo Organização, BU etc, funcionam.


Conteúdo das variaveis:


Period1 = '>='&date(YearStart(Today(),0),'DD/MM/YYYY')

Period2 = '>='&date(YearStart(today(),-1),'DD/MM/YYYY')&'<='&date(YearEnd(today(),-1),'DD/MM/YYYY')


Valores das variáveis


Period1 = '01/01/2018'


Period2 = '>= 01/01/2017 <= 31/12/2017'



Script set analysis



Ano Atual


Expressão Original


=if((sum({$<[MIGO Date]={"$(=$(vPeriod1))"}>} [PO Value (USD)])/1000000),


RangeSum(Above((sum({$<[MIGO Date]={"$(=$(vPeriod1))"}>} [PO Value (USD)])/1000000), 0, RowNo())),


0


)



Expressão nova:


=sum(Aggr((if((Date#([MIGO Date]))>=date(YearStart(Today(),0),'DD/MM/YYYY')  ,[Repair Cost])),Notification))/1000000


Ano Anterior


Expressão Antiga:


sum({<[MIGO Date]={"$(=$(vPeriod2))"}>} [PO Value (USD)])/1000000


Expressão nova:


Assim fica não funciona


=sum(Aggr((if((Date#([MIGO Date]))>=Date(YearStart(today(),-1),'DD/MM/YYYY') and Date#([MIGO Date])<=Date(YearENd(today(),-1),'DD/MM/YYYY')  ,[Repair Cost])),Notification))/1000000


Assim funciona, explicitando as datas(não entendo porque, já validei vários formatos de data)


=sum(Aggr((if((Date#([MIGO Date]))>='01/01/2017' and Date#([MIGO Date])<='31/12/2017' ,[Repair Cost])),Notification))/1000000


Caso alguém tenha alguma sugestão de como agregar valores de acordo com period utilizando uma dimensão "totalizada" ajudaria bastante.


Desculpem não poder compartilhar o QVW ou dados, é um informação sigilosa, talvez consiga criar algum mock de dados para ajudar.



Aguns prints do dado para ajudar:


Gráfico.png


Rodolfo Barbosa
Labels (3)
3 Replies
Anil_Babu_Samineni

If i understand correctly, You can follow like below

Sum(TOTAL <[MIGO Date]> Aggr(NODISTINCT sum ({<[MIGO Date] = {"$(=Date (YearStart (today (), - 1), 'DD / MM / YYYY'))", "$(=Date (YearENd (today (), - 1), 'DD / MM / YYYY'))"}>} [PO Value (USD)]),[Repair Cost], Notification)) / 1000000

Best Anil, When applicable please mark the correct/appropriate replies as "solution" (you can mark up to 3 "solutions". Please LIKE threads if the provided solution is helpful
rbarbosa
Contributor III
Contributor III
Author

Hello Anil,

Thanks for your reply, but not work for me.

Grafico 2 2.png

The exp show correct in console but no show data.

--------------------/ ----------------------------

Olá Anil, obrigado pela resposta, mas não funcionou pra mim.


A expressão aparece como correta, mas não mostra valor no gráfico.

Rodolfo Barbosa
rbarbosa
Contributor III
Contributor III
Author

Pessoal, consegui uma breve evolução

Onde  new exp ficou assim:

sum(aggr(if([MIGO Date]>=YearStart(today()-365) and [MIGO Date] <=YearEnd(today()-365),[Repair Cost]),Notification))/1000000

Porém ainda não é bem isso que preciso pois se eu fizer um filtro yeartodate ele não aparece os valores,no set consigo ignorar, fazendo assim ainda não consegui,

É possível?

Obrigado pelas respostas.

Segue print do gráfico.grafi 2 3.png

Rodolfo Barbosa