Ir para conteúdo
  • 0

Relacionamento entre dadas de duas tabelas


Arthur de Souza Barros
Ir para solução Solucionado por Michele ,

Pergunta

  • Alunos

Saudações,

estou criando um relatório para analisar os custos de produção de algumas culturas por ano\safra. Contudo, a medida criada para calcular a área plantada não está respeitando o input dado no segmentador de dados de data. 

Um plantio tem data de inicio e data de encerramento, e o lançamento do custo tem data de efetivação. Muitas vezes essas duas datas viram o ano, mas são analisadas ano a ano. Por exemplo: 

Um determinado plantio iniciou-se em 2020 e se estendeu até metade de 2021.  Quando eu coloco a data em 2020 a medida consegue calcular a área dele corretamente (12Ha), mas quando coloco em 2021 a área não é calculada. 

image.thumb.png.ad901591d5daa617452c62bca33d0414.png

image.thumb.png.0d816f85fa613e6fc8533193cc470d36.png

A medida que calcula a área é esta:

 

_Area Café Total = 
COALESCE(
    CALCULATE(
        SUM(dPlantio[PLANTIOAREA]),
        USERELATIONSHIP(dCalendario[Date], dPlantio[PLDTPLANTIO]), 
        dPlantio[CULTURACODIGO] = 1
    )
,0) 

E este é o relacionamento: 

image.thumb.png.739e9a4739c051d577e96a92182eacf9.png

 

O que pode estar errado nesse caso? Já que o segmentador de dados está como Maior ou igual a

 

Obrigado!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 1
  • Alunos
  • Solução

Olá @Arthur de Souza Barros!

A meu ver não parece ser relacionamento o problema, tente a medida dessa forma abaixo e veja se funciona, por favor.

Não sei se assim vai funcionar e se de fato vai atender a tua necessidade, pelos dados que você passou, acredito que para atender a regra de negócio você deveria filtrar dados assim:

  • >= Inicio plantação
  • <= Fim plantação
_Area Café Total = 
COALESCE(
    CALCULATE(
        SUM(dPlantio[PLANTIOAREA]),
		FILTER(
			dPlantio,
        	YEAR(dPlantio[PLDTPLANTIO]) <= YEAR(MIN(dCalendario[Date]))
        	dPlantio[CULTURACODIGO] = 1
		)
    )
	--Quando você ativa essa medida você força o relacionamento e portanto só virão dados do Ano filtrado onde esse Ano seja igual ao Ano do campo PLDTPLANTIO, como esse Ano é 2020 não traz nada.
	--USERELATIONSHIP(dCalendario[Date], dPlantio[PLDTPLANTIO])
,0) 
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Michele obrigado pela resposta. Funcionou parcialmente, agora o filtro não pega a data de encerramento. Mas irei incrementar a medida. 

Contudo, acabei percebendo que a base de dados está com várias inconsistências, como lançamentos financeiros em data anterior à criação do plantio. Primeiro vou corrigir esses problemas. 

 

Muito obrigado!

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @Arthur de Souza Barros!

Que bom, qualquer coisa sinaliza aqui pra gente. Outro ponto que acabei esquecendo de falar é, a sua tabela que os fatos é uma Fato e não uma Dimensão, vi que você nomeou a sua fato Plantio como dPlantio, mas a meu ver ela é uma Fato também ok. Pode ser que agora você tenha apenas um plantio de exemplo, mas logo terão mais.

Ter campos de data numa tabela são um bom indício de que ela é uma Fato.

Quando você tiver a solução final e quiser postar aqui e daí já marca como Solução qual resposta te ajudou mais, para fechamento do tópico 🙂

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...