Página 1 de 1

Acumular Médias por Soma

Enviado: 19 Mai 2020 às 01:18
por JulioMonteiro
Olá!
Minha primeira participação aqui. Procurei se havia alguma questão similar a minha mas não encontrei.

Tenho uma tabela fato com vendas diárias de diversos itens que são segmentados por Grupos. Crei uma medida que calcula a média mensal de vendas:
MédiaMês Vendas = AVERAGEX(VALUES(dCalendario[cAnoMês]);SUM(CUPOM[ValorVenda]) ) ok!

Criei um ranking dessas médias por Grupo
Ranking Grp MedVendas = RANKX(ALL(CUPOM[ESTOQUE.Grupo]);[MédiaMês Vendas];;DESC) ok!

Criei uma medida para acumular as médias:
MédiaM ACC Grp Vendas = CALCULATE([MédiaMês Vendas];TOPN([Ranking Grp MedVendas];ALL(CUPOM[ESTOQUE.Grupo]);[MédiaMês Vendas];DESC)) NÃO OK!

Grupo..........MédiaMês....Rank..........Média ACC
...1...............50000.............1.................50000
...4...............35000.............2.................62000 Esperava 85000

Está sendo calculada a média de todos os itens dos grupos 1 e 4. Preciso somar as médias distintas. Entendo que quando a TOPN saiu para ranking 2, a medida que está sendo acumulada [MédiaMês Vendas] na calculate é uma averagex que estará sendo aplicada nos grupos 1 e 4. Mas não consigo resolver isso.

Desde já agradeço qualquer sugestão. Obrigado!

Re: Acumular Médias por Soma

Enviado: 19 Mai 2020 às 08:07
por babdallas
Se for possível, anexa um exemplo com dados fictícios, por favor. Ficará mais fácil de ajudar.

Re: Acumular Médias por Soma

Enviado: 20 Mai 2020 às 00:18
por JulioMonteiro
babdallas, fui alterar as consultas na minha base para criar um exemplo como vc pediu e fiz uma lenha danada aqui no power query... :| To tentando resolver...

Sei que o exemplo facilita o entendimento para me ajudar.

Mas a questão é que tenho que acumular os valores para fazer um graf de pareto. Só que esses valores são MÉDIAS.

O meu problema se resume a:
Preciso de:
_________ Media(Vendas grupo A) + Media(Vendas grupo B)
e minha medida está fazendo:
_________ Media(Vendas grupo A + Vendas grupo B)

Estou usando a RANKX. Tudo certo até aqui.
Como disse, uso a seguinte medida para acumular os valores:
MédiaM ACC Grp Vendas = CALCULATE([MédiaMês Vendas];TOPN([Ranking Grp MedVendas];ALL(CUPOM[ESTOQUE.Grupo]);[MédiaMês Vendas];DESC))


Quando a TOPN vai para o ranking = 2 a expressão da CALCULATE, que é uma AVERAGEX (MédiaMês Vendas = AVERAGEX(VALUES(dCalendario[cAnoMês]);SUM(CUPOM[ValorVenda]) ), está fazendo a média de vendas de todos os itens dos grupos rank1 e rank2 como se fossem um só grupo. E o que preciso é que seja somado a média do grupo de rank1 com a média do grupo de rank2.

Essa estrutura funciona perfeito se a expressão da CALCULATE fosse uma soma das vendas de cada grupo. Já pensei e tentei diversas formas mas não estou conseguindo. A solução que vejo seria um estrutura de looping para ir calculando e acumulando as médias em cada interação do ranking.

Talvez eu tenha explicado melhor agora. Vou tentar resolver agora o problema da minha base. O Power Query está sinalizando que tenho que recompilar etapas da minha consulta. E são várias...

Mais uma vez, obrigado.

Re: Acumular Médias por Soma

Enviado: 20 Mai 2020 às 09:48
por babdallas
Eu creio que você precisará gerar uma tabela virtual com o ranking das médias, para então conseguir fazer o acumulado de forma adequada.

Re: Acumular Médias por Soma

Enviado: 22 Mai 2020 às 10:38
por JulioMonteiro
babdallas, sua dica funcionou depois muito trabalho. A solução até que é simples mas meu problema é que tenho uma tab dimensão Estoque mal definida. Aí tive que criar uma tabela fato de vendas com granularidade mensal e partir dessa criar a tabela virtual para obter o resultado esperado. Tá meio colcha de retalho mas o trabalho é para mim mesmo. Sou empresário e estou, como dizemos aqui em MG, distrinchando meu negócio.
Trabalhei com o excel num nível razoável no passado. Peguei tem 2 semanas o power bi pela primeira vez. Estou achando a ferramenta muito poderosa. E só estou avançando bem a partir dos videos de vcs. Muito bons!!! Parabéns! Vale um queijo... kkk
Breve tentarei participar de um curso com vcs. Parabéns mesmo!
E obrigado.
taí:
MediaVendasGrpACC =
VAR RANKEAR = RANKX(ALLSELECTED(GrpMedMes[TabMed.Grupo]);[MediaVendasGrp];;DESC) RETURN // funfa
CALCULATE(
SUMX(SUMMARIZE(GrpMedMes;GrpMedMes[TabMed.Grupo];"Médias Mensais GRP";AVERAGE(GrpMedMes[VendapGrpMes])); [Médias Mensais GRP])
;TOPN(RANKEAR;ALL(GrpMedMes[TabMed.Grupo]);[MediaVendasGrp];DESC))