Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
paulinhok14
Contributor

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?

12 Replies

Re: Média ponderada no script

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
Contributor

Re: Média ponderada no script

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?

Re: Média ponderada no script

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
Contributor

Re: Média ponderada no script

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?

Re: Média ponderada no script

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
Contributor

Re: Média ponderada no script

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
Contributor

Re: Média ponderada no script

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?

Re: Média ponderada no script

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
Contributor

Re: Média ponderada no script

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