Ir para conteúdo
  • 0

Apenas Um Fato Contábil relacionado a 2 linhas da mesma dimensão.


Irio
Ir para solução Solucionado por Rafa Lemos ,

Pergunta

  • Alunos

Bom dia a todos, 

Pessoal, estou com um problema que não estou conseguindo resolver. 

Vou tentar explicar o meu problema.

Seguinte, tenho as tabelas fato_contabil e dim_ctcontas(Contas Contábeis)  onde na mesma linha tem as colunas CONTA DÉBITO e a CONTA CRÉDITO.  Isso pode ser visto na imagem 1 que está em anexo. 

Como o objetivo final é mostrar o DRE(contas de resultado) o relacionamento que está ativo é entre a coluna fato_contabil.CONTA BÉDITO com o dim_ctcontas.CÓDIGO DA CONTA (imagem 2 em anexo) o problema é que no detalhamento não consigo mostrar a descrição da CONTRA PARTIDA, ou seja,  a descrição das CONTA CRÉDITO. Isso pode ser observado na imagem 3 que está em anexo. 

Gostaria de saber como vc´s tem resolvido este tipo de problema, se podem nos ajudar. 

Desde já agradeço. 

Vou adiantar e mandar algumas imagens para ajudar no entendimento. 

1 - problema na modelagem.png

2 - relacionamento.png

3 - problema no visaul.png

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

@Irio acho que consegui resolver.
Criei a medida Realizado Crédito:

 

Realizado Crédito = 
VAR varSubtotal = SELECTEDVALUE(dim_mascaradre[masc_subtotal])
VAR varOrdemContexto = MAX(dim_mascaradre[masc_ordem])

VAR varValor = 
CALCULATE(
    SUM(fato_lancamento_contabil[laco_valor]),
    USERELATIONSHIP( fato_lancamento_contabil[laco_conta_credito] , dim_plano_conta[Código Reduzido] )
)

VAR varValorSubtotal =
    CALCULATE(
        SUM(fato_lancamento_contabil[laco_valor]),
        FILTER(
            ALL(dim_mascaradre),
            dim_mascaradre[masc_ordem] <= varOrdemContexto 
        )
    )
    
VAR vMedida = 
SWITCH(
    TRUE(),
    varSubtotal = 0, varValor,
    varSubtotal = 1 && NOT(ISINSCOPE(dim_plano_conta[NÍVEL 2])), varValorSubtotal,
    BLANK()
)

RETURN
vMedida

 

 

Depois "juntei" a medida Realizado com essa nova medida:

 

Realizado = 
VAR varSubtotal = SELECTEDVALUE(dim_mascaradre[masc_subtotal])
VAR varOrdemContexto = MAX(dim_mascaradre[masc_ordem])

VAR varValor = SUM(fato_lancamento_contabil[laco_valor])

VAR varValorSubtotal =
    CALCULATE(
        SUM(fato_lancamento_contabil[laco_valor]),
        FILTER(
            ALL(dim_mascaradre),
            dim_mascaradre[masc_ordem] <= varOrdemContexto 
        )
    )
    
VAR vMedida = 
SWITCH(
    TRUE(),
    varSubtotal = 0, varValor,
    varSubtotal = 1 && NOT(ISINSCOPE(dim_plano_conta[NÍVEL 2])), varValorSubtotal,
    BLANK()
)

RETURN
vMedida - [Realizado Crédito]

 

E chegou no resultado esperado:
image.png.9b5120ab418002b425453e2c369c6ede.png

 

Segue PBIX com as medidas.

orcadoxrealizado.pbix

orcadoxrealizado.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
4 minutos atrás, Irio disse:

Bom dia a todos, 

Pessoal, estou com um problema que não estou conseguindo resolver. 

Vou tentar explicar o meu problema.

Seguinte, tenho as tabelas fato_contabil e dim_ctcontas(Contas Contábeis)  onde na mesma linha tem as colunas CONTA DÉBITO e a CONTA CRÉDITO.  Isso pode ser visto na imagem 1 que está em anexo. 

Como o objetivo final é mostrar o DRE(contas de resultado) o relacionamento que está ativo é entre a coluna fato_contabil.CONTA BÉDITO com o dim_ctcontas.CÓDIGO DA CONTA (imagem 2 em anexo) o problema é que no detalhamento não consigo mostrar a descrição da CONTRA PARTIDA, ou seja,  a descrição das CONTA CRÉDITO. Isso pode ser observado na imagem 3 que está em anexo. 

Gostaria de saber como vc´s tem resolvido este tipo de problema, se podem nos ajudar. 

Desde já agradeço. 

Vou adiantar e mandar algumas imagens para ajudar no entendimento. 

1 - problema na modelagem.png

2 - relacionamento.png

3 - problema no visaul.png

Complementando a descrição: 

OBS: na imagem 3, no visual LANÇAMENTOS que mostra o RAZÃO CONTÁBIL vejam que está correto R$ Débito - R$ Crédito fica com um REALIZADO de 784,35, porém no visual CONTAS vejam que além de não aparecer a descrição das contas que compõe o valor de R$ 145,05 o REALIZADO ficou somando, por isso tive que criar o REALIZADO 2 e ficou correto só não está na imagem, já no visual de PACOTES e LANÇAMENTO está correto. 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
Em 02/03/2021 em 09:54, Rafa Lemos disse:

@Irio bom dia!

Eu transformaria essas duas colunas em uma, para deixar um único relacionamento.
image.png.9fde9a15cdb36da79224c73091b42e32.png

image.png.e67209a4ee04d8b9aad1a2a070ca40f3.png

Na coluna atributo, deixaria a informação de é débito ou crédito para trabalhar na calculate.
E na coluna valor ficaria o código da conta.

Boa tarde @Rafa Lemos, primeiramente obrigado por ter respondido, sinceramente não gostaria de duplicar a fato porque ela é muito grande, será que não existe outra forma?

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Irio muito grande quanto?
Quantas linhas possui?

E essa forma de tratar os dados ajudará muito no desenvolvimento das medidas.
Isso é uma desnormalização dos dados para ter performance nas análises.


Eu já tratei casos no Power Query que cada atualização demorava quase 30 minutos, mas os dashboards eram rápidos.
Antes de fazer esse tipo de tratamento, os dashboards deixavam todos loucos pela demora nas atualizações.

Nesse meu exemplo, essa atualização ocorria uma vez ao mês a partir de arquivos CSV.

Quando fiz pela primeira vez, somava todas as colunas dos custos dos produtos, quase 20 colunas e por isso os visuais demoravam para carregar.
Após transformar essas 20 colunas em linhas, a atualização dos dados ficou lenta, mas os diretores da empresa adoraram a velocidade de atualização dos visuais.

E essa tabela ficava com quase 100 milhões de linhas a quase 2 anos atrás.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
Em 05/03/2021 em 02:41, Rafa Lemos disse:

@Irio muito grande quanto?
Quantas linhas possui?

E essa forma de tratar os dados ajudará muito no desenvolvimento das medidas.
Isso é uma desnormalização dos dados para ter performance nas análises.


Eu já tratei casos no Power Query que cada atualização demorava quase 30 minutos, mas os dashboards eram rápidos.
Antes de fazer esse tipo de tratamento, os dashboards deixavam todos loucos pela demora nas atualizações.

Nesse meu exemplo, essa atualização ocorria uma vez ao mês a partir de arquivos CSV.

Quando fiz pela primeira vez, somava todas as colunas dos custos dos produtos, quase 20 colunas e por isso os visuais demoravam para carregar.
Após transformar essas 20 colunas em linhas, a atualização dos dados ficou lenta, mas os diretores da empresa adoraram a velocidade de atualização dos visuais.

E essa tabela ficava com quase 100 milhões de linhas a quase 2 anos atrás.

Olá @Rafa Lemos, desculpa a demora... é que estou com caso de Covid na família e estou apresentando sintomas leves... mas vamos lá. 

Acabei de testar da forma como vc comentou transformando as duas colunas "conta_debito" e "conta_credito" em linhas. Acabei me deparando na dificuldade em desenvolver o razão que já estava correto conforme a 3ª imagem em anexo. 

Por conta disso voltei como estava antes com 50% do problema resolvido. Agora tenho que ajustar a fórmula DAX para trazer para o mesmo contexto os valores da mesma conta quando ela está no outro relacionamento. Veja na imagem em anexo com o visual do Razão dos Lançamentos que está perfeito a formula da medida "Realizado 2", porém no outro anexo de DRE a mesma conta está encontrando apenas os lançamentos de Débito da conta 4901.

obrigado pela força até o momento... penso que estamos próximo da solução. 

visual razão OK.png

visual DRE.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
16 horas atrás, Rafa Lemos disse:

@Irio boa tarde!

Desejo melhoras pra vocês e toma muito cuidado, por favor.

Sobre a sua medida, consegue colocar como estão todas as medidas aqui?
Débito, Crédito e Realizado 2?

Além disso, compartilhe também prints dos relacionamento entre as tabelas, por gentiliza.

Bom dia @Rafa Lemos, estou tomando todas as medidas, mas infelizmente todos aqui em casa já estão confirmados, apenas eu que ainda não fiz exame, apenas uma consulta porque meus sintomas leves. Estão todos bem tomando todos os medicamentos e não apresentam sintomas graves. Bora lá para as medidas: 

Realizado =
VAR varSubtotal = SELECTEDVALUE(dim_mascaradre[masc_subtotal])
VAR varOrdemContexto = MAX(dim_mascaradre[masc_ordem])
 
VAR varValor = SUM(fato_lancamento_contabil[laco_valor])
 
VAR varValorSubtotal =
CALCULATE(
SUM(fato_lancamento_contabil[laco_valor]),
FILTER(
ALL(dim_mascaradre),
dim_mascaradre[masc_ordem] <= varOrdemContexto
)
)
 
RETURN
SWITCH(
TRUE(),
varSubtotal = 0, varValor,
varSubtotal = 1 && NOT(ISINSCOPE(dim_plano_conta[NÍVEL 2])), varValorSubtotal,
BLANK()
)

 

R$ Débito =
CALCULATE(
[Realizado]
, dim_plano_conta[plco_tipo] = "D"
, USERELATIONSHIP(fato_lancamento_contabil[laco_conta_debito], dim_ctcontas[codi_cta])
)

 

R$ Crédito =
IF(([Realizado] - [R$ Débito]) = 0, BLANK(),[Realizado] - [R$ Débito])
// var vcredito =
// CALCULATE(
// [Realizado],
// dim_ctcontas[tipo_cta] = "A",
// USERELATIONSHIP(fato_lancamento_contabil[laco_conta_credito], dim_ctcontas[codi_cta])
// )
// return
// vcredito - [R$ Débito]

No caso do crédito tem um trecho comentado, tanto um quanto outro chega no mesmo resultado. 

e por fim a "Realizado 2" que resolve no visual dos lançamentos, mas não resolve no visual resumido. 

Realizado 2 =
IF(
[R$ Débito] = 0,
[R$ Crédito],
[R$ Débito] - [R$ Crédito]
)

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
18 horas atrás, Rafa Lemos disse:

@Irio boa tarde!

Desejo melhoras pra vocês e toma muito cuidado, por favor.

Sobre a sua medida, consegue colocar como estão todas as medidas aqui?
Débito, Crédito e Realizado 2?

Além disso, compartilhe também prints dos relacionamento entre as tabelas, por gentiliza.

relacionamentos

image.thumb.png.f6f3199fac15a88a7f04943f169f02f1.png

Editado por Irio
COMPLEMENTANDO A DESCRIÇAO
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Irio Boa tarde!

Tenta fazer a medida do Realizado uma para Débito e outra para Crédito:

 

Realizado Crédito =
VAR varSubtotal = SELECTEDVALUE(dim_mascaradre[masc_subtotal])
VAR varOrdemContexto = MAX(dim_mascaradre[masc_ordem])
 
VAR varValor = SUM(fato_lancamento_contabil[laco_valor])
 
VAR varValorSubtotal =
CALCULATE(
SUM(fato_lancamento_contabil[laco_valor]),
FILTER(
ALL(dim_mascaradre),
dim_mascaradre[masc_ordem] <= varOrdemContexto
)
)
 
RETURN
SWITCH(
TRUE(),
varSubtotal = 0, varValor,
varSubtotal = 1 && NOT(ISINSCOPE(dim_plano_conta[NÍVEL 2])), varValorSubtotal,
BLANK()
)

 

 

Realizado Débito=
VAR varSubtotal = SELECTEDVALUE(dim_mascaradre[masc_subtotal])
VAR varOrdemContexto = MAX(dim_mascaradre[masc_ordem])
 
VAR varValor = 
CALCULATE(
	SUM(fato_lancamento_contabil[laco_valor]), 
	USERELATIONSHIP(fato_lancamento_contabil[laco_conta_debito], dim_ctcontas[codi_cta])
)
 
VAR varValorSubtotal =
CALCULATE(
SUM(fato_lancamento_contabil[laco_valor]), 
USERELATIONSHIP(fato_lancamento_contabil[laco_conta_debito], dim_ctcontas[codi_cta]),
FILTER(
ALL(dim_mascaradre),
dim_mascaradre[masc_ordem] <= varOrdemContexto
)
)
 
RETURN
SWITCH(
TRUE(),
varSubtotal = 0, varValor,
varSubtotal = 1 && NOT(ISINSCOPE(dim_plano_conta[NÍVEL 2])), varValorSubtotal,
BLANK()
)

E depois faz um menos o outro.
Como disse anteriormente, se conseguisse colocar tudo na mesma coluna as medidas ficaram mais simples. rsrs

 

PS: Que bom que todos estão bem, sem sintomas graves.
Continuem de olho aí, por favor.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
40 minutos atrás, Rafa Lemos disse:

@Irio Boa tarde!

Tenta fazer a medida do Realizado uma para Débito e outra para Crédito:

 


Realizado Crédito =
VAR varSubtotal = SELECTEDVALUE(dim_mascaradre[masc_subtotal])
VAR varOrdemContexto = MAX(dim_mascaradre[masc_ordem])
 
VAR varValor = SUM(fato_lancamento_contabil[laco_valor])
 
VAR varValorSubtotal =
CALCULATE(
SUM(fato_lancamento_contabil[laco_valor]),
FILTER(
ALL(dim_mascaradre),
dim_mascaradre[masc_ordem] <= varOrdemContexto
)
)
 
RETURN
SWITCH(
TRUE(),
varSubtotal = 0, varValor,
varSubtotal = 1 && NOT(ISINSCOPE(dim_plano_conta[NÍVEL 2])), varValorSubtotal,
BLANK()
)

 

 


Realizado Débito=
VAR varSubtotal = SELECTEDVALUE(dim_mascaradre[masc_subtotal])
VAR varOrdemContexto = MAX(dim_mascaradre[masc_ordem])
 
VAR varValor = 
CALCULATE(
	SUM(fato_lancamento_contabil[laco_valor]), 
	USERELATIONSHIP(fato_lancamento_contabil[laco_conta_debito], dim_ctcontas[codi_cta])
)
 
VAR varValorSubtotal =
CALCULATE(
SUM(fato_lancamento_contabil[laco_valor]), 
USERELATIONSHIP(fato_lancamento_contabil[laco_conta_debito], dim_ctcontas[codi_cta]),
FILTER(
ALL(dim_mascaradre),
dim_mascaradre[masc_ordem] <= varOrdemContexto
)
)
 
RETURN
SWITCH(
TRUE(),
varSubtotal = 0, varValor,
varSubtotal = 1 && NOT(ISINSCOPE(dim_plano_conta[NÍVEL 2])), varValorSubtotal,
BLANK()
)

E depois faz um menos o outro.
Como disse anteriormente, se conseguisse colocar tudo na mesma coluna as medidas ficaram mais simples. rsrs

 

PS: Que bom que todos estão bem, sem sintomas graves.
Continuem de olho aí, por favor.

Olá @Rafa Lemos, dessa forma ficou tudo zerado conforme imagem abaixo. 

image.png.8554b09d4542ce0c1a9e4ace69ff9a63.png

Esta pensando em algo do tipo: 

Realizado 3 =
 
var varContaDebito = SELECTEDVALUE(fato_lancamento_contabil[laco_conta_debito])
 
var varTotalDebito =
CALCULATE(
[Realizado],
FILTER(
ALLSELECTED(fato_lancamento_contabil),
RELATED(dim_plano_conta[Código Reduzido]) = varContaDebito
)
)
 
var varTotalCredito =
CALCULATE(
[Realizado],
FILTER(
ALL(fato_lancamento_contabil),
USERELATIONSHIP(fato_lancamento_contabil[laco_conta_credito], dim_ctcontas[codi_cta]),
fato_lancamento_contabil[laco_conta_credito] = varContaDebito
)
)
 
return varTotalDebito - varTotalCredito

 

Se não der certo ... conversei com o Leonar no Telegram e ele pediu para abrir um tópico aqui na comunidade e enviar uma base de exemplo. Vc acha que é possível, posso enviar nesse mesmo tópico o PBIX?... e daí até tentamos fazer aquela desnormalização que vc comentou transformando as duas colunas em apenas 1. 

que daí acho que usa a SUMX nas medidas?

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
8 minutos atrás, Irio disse:

Olá @Rafa Lemos, dessa forma ficou tudo zerado conforme imagem abaixo. 

image.png.8554b09d4542ce0c1a9e4ace69ff9a63.png

Esta pensando em algo do tipo: 

Realizado 3 =
 
var varContaDebito = SELECTEDVALUE(fato_lancamento_contabil[laco_conta_debito])
 
var varTotalDebito =
CALCULATE(
[Realizado],
FILTER(
ALLSELECTED(fato_lancamento_contabil),
RELATED(dim_plano_conta[Código Reduzido]) = varContaDebito
)
)
 
var varTotalCredito =
CALCULATE(
[Realizado],
FILTER(
ALL(fato_lancamento_contabil),
USERELATIONSHIP(fato_lancamento_contabil[laco_conta_credito], dim_ctcontas[codi_cta]),
fato_lancamento_contabil[laco_conta_credito] = varContaDebito
)
)
 
return varTotalDebito - varTotalCredito

 

Se não der certo ... conversei com o Leonar no Telegram e ele pediu para abrir um tópico aqui na comunidade e enviar uma base de exemplo. Vc acha que é possível, posso enviar nesse mesmo tópico o PBIX?... e daí até tentamos fazer aquela desnormalização que vc comentou transformando as duas colunas em apenas 1. 

que daí acho que usa a SUMX nas medidas?

 

Na teoria é simples, tenho que fazer uma tabela virtual contendo: (data, conta_debito, valor) somar o seu valor.... e depois no mesmo contexto cruzar com outra tabela virtual  quando esse mesmo código da conta_debito está na coluna dos credito (data, conta_contabil, valor). 

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
24 minutos atrás, Rafa Lemos disse:

@Irio pode ser.
Manda a base aqui.

segue o pbix, com os dados carregados, se precisar dos dados eu mando um .sql pois ficam armazenados no postgresql.

obrigado por enquanto. 

Para reproduzir as telas em anexo observe o pacote de impressões e materiais. 

Ana tela de "Análise do Realizado" os valores estão corretos. OK

na tela Consolidado a fórmula DAX "Realizado 2" mostra apenas os valores que estão  DÉBITO na conta 4901, devo encontrar os valores a CRÉDITO para essa mesma conta 4901. 

Obrigado por enquanto Rafa. 

Att.

Irio

orcado x realizado.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
29 minutos atrás, Rafa Lemos disse:

@Irio acho que consegui resolver.
Criei a medida Realizado Crédito:

 


Realizado Crédito = 
VAR varSubtotal = SELECTEDVALUE(dim_mascaradre[masc_subtotal])
VAR varOrdemContexto = MAX(dim_mascaradre[masc_ordem])

VAR varValor = 
CALCULATE(
    SUM(fato_lancamento_contabil[laco_valor]),
    USERELATIONSHIP( fato_lancamento_contabil[laco_conta_credito] , dim_plano_conta[Código Reduzido] )
)

VAR varValorSubtotal =
    CALCULATE(
        SUM(fato_lancamento_contabil[laco_valor]),
        FILTER(
            ALL(dim_mascaradre),
            dim_mascaradre[masc_ordem] <= varOrdemContexto 
        )
    )
    
VAR vMedida = 
SWITCH(
    TRUE(),
    varSubtotal = 0, varValor,
    varSubtotal = 1 && NOT(ISINSCOPE(dim_plano_conta[NÍVEL 2])), varValorSubtotal,
    BLANK()
)

RETURN
vMedida

 

 

Depois "juntei" a medida Realizado com essa nova medida:

 


Realizado = 
VAR varSubtotal = SELECTEDVALUE(dim_mascaradre[masc_subtotal])
VAR varOrdemContexto = MAX(dim_mascaradre[masc_ordem])

VAR varValor = SUM(fato_lancamento_contabil[laco_valor])

VAR varValorSubtotal =
    CALCULATE(
        SUM(fato_lancamento_contabil[laco_valor]),
        FILTER(
            ALL(dim_mascaradre),
            dim_mascaradre[masc_ordem] <= varOrdemContexto 
        )
    )
    
VAR vMedida = 
SWITCH(
    TRUE(),
    varSubtotal = 0, varValor,
    varSubtotal = 1 && NOT(ISINSCOPE(dim_plano_conta[NÍVEL 2])), varValorSubtotal,
    BLANK()
)

RETURN
vMedida - [Realizado Crédito]

 

E chegou no resultado esperado:
image.png.9b5120ab418002b425453e2c369c6ede.png

 

Segue PBIX com as medidas.

orcadoxrealizado.pbixIndisponível

orcadoxrealizado.pbix 1 MB · 0 downloads

nossa ... maravilha... kra vc é demais !!!! 

aaaah ... viu como ficou na Análise do realizado? 😞

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...