Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
paulinhok14
Creator
Creator

Média ponderada no script

Caros bom dia!

Estou necessitando fazer uma média ponderada no script, para que esse valor de média esteja vinculado com outros campos (localidade, cliente, etc.),  seguindo o modelo:

sum ( Core * Count ( Notification) ) / sum ( Notification).

Porém os problemas que tenho enfrentado:

1 - Não dá pra simplesmente fazer essa expressão no script por conta de ser a agregação aninhada.

2 - Tentei fazer em outra tabela a contagem de notificações, apenas pra eliminar o nested aggregation.

Contagem:

LOAD

Core,

Count(Notification) as [Contagem Eventos]

resident main

group by Core;

3 - Mas quando vou fazer a expressão em uma outra tabela distinta, não consigo usar a cláusula total no sum()

Eu fiz essa média ponderada em uma tabela dinâmica, usando a expressão:

=sum(total  [Core*Eventos]) / sum( total [Contagem Eventos])

E gerou uma média, na última coluna, como mostra a imagem:

1.png

Porém ao fazer essa mesma expressão pra uma tabela com outros atributos, os quais eu queria ter uma média individual e geral, o valor fica único, por ex:

2.png

Já tentei várias formas de fazer isso via script, criando outras tabelas pra evitar a agregação aninhada e não deu certo:

script.pngerrad.png

Alguém tem alguma sugestão?

Labels (2)
12 Replies
nicolett_yuri

Paulo, é possível fazer o cálculo no script, porém o valor que chegará será fixo pela agregação usada.

Como na imagem que mostrou, o número se repete para todos os clientes, pois em sua agregação, no script, não foi feita a média por cliente. Se o número que esta tentando calcular sofrerá alteração por várias dimensões, não compensará fixar esse cálculo em script.

paulinhok14
Creator
Creator
Author

Certo, obrigado pela resposta Yuri!

Existe alguma medida paleativa pra isso? se eu filtrar um determinado cliente, o valor é recalculado

ex.png

Porém eu gostaria que esse valor fosse calculado diretamente na relação entre eles, aparecendo em uma tabela os valores já pra cada cliente...

Eu pensei em fazer pelo script porque basicamente tenho 4 dimensões que preciso ver as médias, portanto criaria 4 tabelas pra isso...

Tens alguma sugestão?

nicolett_yuri

Você teria que pré-calcular essa média para cada uma dessas 4 dimensões, mas essas dimensões se combinam ou você visualizará cada uma dessas dimensões de forma separada? Por exemplo: Cliente e Vendedor.

Visualiza somente por Cliente e depois visualiza somente por vendedor? Ou vai querer visualizar Cliente por vendedor?

Se a resposta for afirmativa, você terá que pré-calcular para as possíveis combinações também. Sinceramente eu não acho isso viável, vai ficar muito engessado. A melhor maneira, na minha opinião, é fazer o cálculo no próprio gráfico que deseja visualizar essa informação, pois dessa maneira, os números ficarão dinâmicos, ou seja, respeitarão todas as quebras que deseja visualizar e também as possíveis seleções que serão feitas.

paulinhok14
Creator
Creator
Author

Elas têm relação. por exemplo:

Tenho um cliente que opera em 3 regiões, mas se eu selecionar apenas uma das regiões, só serão contabilizados os eventos nesta região e a média mudará....

Entendo sua colocação, e concordo com ela, o ideal seria mesmo que a informação fosse disposta dinamicamente e respeitando todas as seleções. Mas quando eu tentei fazer isto, o resultado foi o que mostrei na segunda imagem. Os valores de média ficaram iguais para todos os clientes (aquela expressão eu fiz no gráfico e não no script). Porém, aquele valor não é realidade...

Mesmo porque cada cliente tem diferentes quantidades de eventos, e diferentes valores (assim como mostra as colunas Mínimo e Máximo)...

Através dessa sua filosofia, o que eu poderia fazer pra atingi-la?

nicolett_yuri

Provavelmente é erro na fórmula, na parte do Total.

Se você utilizar apenas Total, ele vai retornar o valor total da métrica para todas as linhas, se quiser fazer a diferenciação, precisa adicionar a quebra do Total, por exemplo: Sum(TOTAL <Cliente>VENDAS)

Se precisar, envie um qvw com o exemplo de seus dados

paulinhok14
Creator
Creator
Author

Na verdade, eu adicionei a fórmula assim:

=sum(total  [Core*Eventos]) / sum(total  [Contagem Eventos])

Onde os 2 campos eu criei no script para ter a contagem, segue anexo o qvw.

Eu tinha usado a média Avg() nas outras tabelas mas como é a média amostral, não é o ideal pra mim...

paulinhok14
Creator
Creator
Author

Conseguiu identificar onde eu errei nicolett.yuri‌?

Estou dando uma olhada em funções de gráfico/tabela para tentar solucionar o problema... (Last, Above...)

Seria uma boa?

nicolett_yuri

Acho que não precisa, o que eu queria dizer na resposta anterior é o Total considerar a quebra da sua dimensão.

Faça um teste, na app que anexou, no gráfico "Média por cliente", altere a fórmula da média para:

sum(total <[Customer Name]> [Core*Eventos]) / sum(total  [Contagem Eventos])

Veja se é o que precisa

paulinhok14
Creator
Creator
Author

Essa expresão não resultou em nada... Deu certo aí pra vc?