Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia!
Estou quebrando a cabeça há dias com um problema. Tenho um campo denominado DPA (Despesa Anual) o qual possui um valor único para cada campo ID. Ocorre que pode haver mais de um documento vinculado a esse mesmo ID e nesse caso o valor da DPA se repete para cada Documento. O meu objetivo é apresentar uma tabela dinâmica na qual o valor da DPA não seja apresentado no nível do Documento, mas seja totalizado corretamente nas quebras. Quando há mais de um documento vinculado (exemplo: ID 1529126) a tabela apresenta o comportamento desejado. O problema é quando há apenas um documento vinculado ao ID (exemplo: 1529724). Nesse caso a tabela não está totalizando a DPA, mas está assumindo para esta o valor "-" (se ao invés de '-' eu colocar 'Teste' no nível do documento, a soma agregada também assumirá esse valor 'Teste'; é como se ela estivesse herdando o valor atribuído ao seu único documento) . Inseri em anexo duas imagens, uma com o comportamento esperado (ID com mais de um documento vinculado) e outra com o comportamento errado (ID com apenas um documento). Já tentei utilizar a função Count(Total <ID> Documento)>1 para distinguir as IDs com mais de um documento, mas não deu certo. O fato é que há algo errado na função de soma quando há apenas um único registro. A seguir, a expressão que coloquei associada ao campo DPA:
If(Escopo='Despesa Compromissada', Sum(DPA),
If(Left(Documento,2) = '20', '-' ,
Sum(Aggr(Max(DPA),ID))))
Escopo | Objeto | ID | Estimativa | Documento | DPA |
Despesa Discricionária | - | 1529126 | - | 2021NE000550 | 1.000.000,00 |
Despesa Discricionária | - | 1529126 | - | 2021NE000584 | 1.000.000,00 |
Despesa Discricionária | - | 1529126 | - | 2021NE000623 | 1.000.000,00 |
Despesa Discricionária | - | 1529724 | - | 2021NE000918 | 500.000,00 |
Acabei conseguindo resolver da seguinte maneira:
If(Escopo='Despesa Compromissada',Sum(DPA),
If(dimensionality()<>5,Sum(Aggr(Max(DPA),ID))))
Aparentemente esse if na sua medida que não está deixando exibir os dados If(Left(Documento,2) = '20', '-' ,
já que onde o documento começar com 20 você diz para a tabela trazer os valor '-'
retirando esse if você vai ter um valor único em cada ID
Acabei conseguindo resolver da seguinte maneira:
If(Escopo='Despesa Compromissada',Sum(DPA),
If(dimensionality()<>5,Sum(Aggr(Max(DPA),ID))))