Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
junior_ehlke
Creator III
Creator III

Duvida função AGGR

Boa tarde,

estou tendo dificuldades em validar um valor. O cálculo é o seguinte,

se a loja não tiver auditoria no mes, eu desconto -0,03% do seu faturamento, se a loja tiver auditoria no mes, eu devolvo este valor acumulado, ou seja, eu somo toda a venda que não teve auditoria e faço multiplico por 0,03%.

Na fórmula abaixo o cálculo funciona corretamente se eu selecionar uma ou mais lojas, porém ele se perde quando eu seleciono um ou mais meses. Acredito que seja algo na funcção aggr, podem dar uma olhada?

Eu tenho uma tabela auxiliar onde eu cadastro Auditoria sim ou não.

=num(

sum(

  aggr(

  if(Auditoria='S',

  ((Sum( {$<Auditoria={'N'}, mes_numero,id_unidade>} mprd_valor_dvd))*0.003)

  ,

  if(Auditoria='N',

  ((Sum( {$<Auditoria={'N'},id_unidade>} mprd_valor_dvd))*0.003)*-1

  ,

  0)

  )

  ,id_unidade)

  )

,'R$###.##0,00')

Labels (2)
21 Replies
nicolett_yuri

A Peek iremos utilizar para fazer o cálculo no script

nicolett_yuri

Da uma olhada se é isso

junior_ehlke
Creator III
Creator III
Author

Yuri, é exatamente isto que eu precisava, consegui implementar isso no meu projeto porém barrei em uma coisa,

pelo que eu percebi o valor que soma todas as vendas com N esta pegando de todos os anos, hoje em meu projeto eu uso ao invés de mes, uso id_tempo que o formato é ano-mes (2014-08), tem alguma alteração fácil de ser feita onde considere apenas o ano selecionado? No restante funcionou perfeitamente.

nicolett_yuri

Não é difícil de alterar. Na tabela em que faço esse cálculo, precisa adicionar a dimensão do ANO e adicionar o ANO ao GROUP BY.

Vou montar um exemplo e te envio

nicolett_yuri

Hamilton, basta alterar a seguinte parte do código

JOIN

LOAD

  unidade as Venda_Logica.unidade,

  mes as Venda_Logica.mes,

  Sum(venda) as Venda_Logica.Total_N

RESIDENT VENDA_TMP

WHERE auditoria = 'N'

GROUP BY unidade, mes;

Caso seja MesAno, basta ter essa informação na tabela, por exemplo

LOAD

  unidade as Venda_Logica.unidade,

  mesAno as Venda_Logica.mesAno,

  Sum(venda) as Venda_Logica.Total_N

RESIDENT VENDA_TMP

WHERE auditoria = 'N'

GROUP BY unidade, mesAno;

junior_ehlke
Creator III
Creator III
Author

Yuri, no exemplo esta funcionando certinho porém em meu projeto o valor para a Auditoria 'S' esta dando muito alto, estou tentando aqui achar onde eu errei.

Acredito que o erro esteja aqui..

load

  id_unidade                                         as Venda_Logica.id_unidade,

  sum(mprd_valor_vd)                          as Venda_Logica.mprd_valor_TOTAL

Resident FatoDetalhe

Where auditoria='N'

Group by id_unidade;

Estou verificando.

junior_ehlke
Creator III
Creator III
Author

ja viu isto acontecer?

se eu dou um sum(perdaTotal) o valor se perde completamente.

No print é um Campo, uma tabela e um gráfico. O valor correto é o 7.057,67 porém com o sum não da certo.

perda.png

junior_ehlke
Creator III
Creator III
Author

Yuri, você acha que isto tem a ver com minha tabela de vendas, eu tenho nela a nível de produtos com várias informações. O que me diz,?

nicolett_yuri

Hamilton, o valor esta dando diferente, pois existem N valores com o mesmo número.

Tente utilizar sum(DISTINCT perdaTotal)

junior_ehlke
Creator III
Creator III
Author

Então, com o Distinct fica correto, porém estraga quando for auditoria='N'.

Estou fazendo os testes aqui.