Ir para conteúdo
  • 0

Considerar por data


jooelcosta
Ir para solução Solucionado por Bruno Abdalla de Souza ,

Pergunta

  • Alunos

Boa tarde a todos.

Estou tentando criar uma condição para resolver um problema. Tenho que verificar se a placa teve alteração de centro de custos.

Se o veiculo mudou de centro de custos no período do rateio (considero sempre o mês anterior), ele deve ter o centro de custos desse período.

Ex: Estou no mês 11 e vou usar informações do mês 10. Preciso ver qual centro de custos estava para essa placa no mês 10.

 

Espero ter sido claro e desde já obrigado a todos.

 

Segue um modelo de dados em anexo. Com base no modelo tem uma caixa de texto informando qual centro de custos cada placa deveria pegar.

ccaconsiderar.pbix

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Tente isso como coluna calculada:

Centro_Custo = 
    VAR vPlaca = 
        'Table'[Placa]
    VAR vDataAtual = 
        TODAY()
    VAR vDataMax = 
        'Table'[DtHrCentroCustoAtual]
    VAR vDataFimMA = 
        EOMONTH(vDataAtual,-1)+1
    VAR vUltimaData = 
        CALCULATE(
            MAX('Table'[DtHrCentroCustoAnterior]),
            FILTER(
                ALL('Table'),
                'Table'[DtHrCentroCustoAnterior] < vDataFimMA && 
                'Table'[Placa] = vPlaca
            )
        )
    VAR vCentroCustoMA = 
        CALCULATE(
            IF(
                MONTH(vDataMax) <> MONTH(vDataAtual), 
                MAX('Table'[CentroCustoAtual]), 
                MAX('Table'[CentroCustoAnterior])
            ),
            FILTER(
                ALL('Table'),
                'Table'[DtHrCentroCustoAnterior] = vUltimaData && 
                'Table'[Placa] = vPlaca
            )
        )
    VAR vCentroCustoAtual = 
        'Table'[CentroCustoAtual]
RETURN
    IF(
        vCentroCustoAtual <> vCentroCustoMA,
        vCentroCustoMA,
        vCentroCustoAtual
    )

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
4 minutos atrás, Bruno Abdalla de Souza disse:

O resultado final é esse?

CC a Considerar:

HYY0414  - 1471

KEL3301   - 1890

OIO8F58  - 2119

ORY1D46 - 267

PNV0173 - 373

Se sim, como chegou a este resultado em cada caso? Assim vai ficar mais fácil de entender.

Isso, esse mesmo que está em uma caixa de texto no arquivo de modelo.

 

Estamos no mês de novembro e quero fazer um rateio considerando o mês de outubro.

A placa HYY0414 teve uma mudança de centro de custos no final do mês. Então para o custo não ir para o centro de custos errado, preciso verificar se teve alteração para ela.

Verificando a coluna CentroCustoAnterior e DtHrCentroCustoAnterior, percebi que os custos devem ir para o 1471.

 O problema que enfrento é quando tento verificar a informação de placas que teve a mudança no mesmo dia ou mesmo mês como é o exemplo da ORY1D46. Ela deveria considerar o centro de custo 267 pois é o correto considerando a Data.

 

Para criar a coluna CCaConsiderar usei a seguinte expressão em DAX:

CCaConsiderar = IF (
MONTH(GUBERMAN_dim_Veiculo[DtHrCentroCustoAnterior]) = MONTH(TODAY() -1) //&& NOT ISBLANK(GUBERMAN_dim_Veiculo[DtHrCentroCustoAnterior])
, GUBERMAN_dim_Veiculo[CentroCustoAnterior]
, GUBERMAN_dim_Veiculo[CodigoCentrodeCustos]
)

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Qual a lógica envolvida?

A placa HYY0414 e PNV0173 mudaram o centro de custo de outubro para novembro. Você quer considerar o mês anterior?


A placas KEL3301,  OIO8F58 e ORY1D46 não sofreram mudança de outubro para novembro. Então pego o último centro de custo?

A placa não sofreu mudança de outubro para novembro. Então pego o último centro de custo?

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Veja se é isso

Centro de Custo = 
    VAR vPlaca = 
        MAX('Table'[Placa])
    VAR vDataAtual = 
        TODAY()
    VAR vDataMax = 
        MAX('Table'[DtHrCentroCustoAtual])
    VAR vDataFimMA = 
        EOMONTH(vDataAtual,-1)+1
    VAR vUltimaData = 
        CALCULATE(
            MAX('Table'[DtHrCentroCustoAnterior]),
            FILTER(
                ALL('Table'),
                'Table'[DtHrCentroCustoAnterior] < vDataFimMA && 
                'Table'[Placa] = vPlaca
            )
        )
    VAR vCentroCustoMA = 
        CALCULATE(
            IF(
                MONTH(vDataMax) <> MONTH(vDataAtual), 
                MAX('Table'[CentroCustoAtual]), 
                MAX('Table'[CentroCustoAnterior])
            ),
            FILTER(
                ALL('Table'),
                'Table'[DtHrCentroCustoAnterior] = vUltimaData && 
                'Table'[Placa] = vPlaca
            )
        )
    VAR vCentroCustoAtual = 
        MAX('Table'[CentroCustoAtual])
RETURN
    IF(
        vCentroCustoAtual <> vCentroCustoMA,
        vCentroCustoMA,
        vCentroCustoAtual
    )

Talvez se você estruturar esta tabela em apenas uma coluna de data e um centro de custo fique mais fácil.

ccaconsiderar.pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
16 horas atrás, Bruno Abdalla de Souza disse:

Qual a lógica envolvida?

A placa HYY0414 e PNV0173 mudaram o centro de custo de outubro para novembro. Você quer considerar o mês anterior?


A placas KEL3301,  OIO8F58 e ORY1D46 não sofreram mudança de outubro para novembro. Então pego o último centro de custo?

A placa não sofreu mudança de outubro para novembro. Então pego o último centro de custo?

 

 

É isso mesmo, Bruno.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
16 horas atrás, Bruno Abdalla de Souza disse:

Veja se é isso

Centro de Custo = 
    VAR vPlaca = 
        MAX('Table'[Placa])
    VAR vDataAtual = 
        TODAY()
    VAR vDataMax = 
        MAX('Table'[DtHrCentroCustoAtual])
    VAR vDataFimMA = 
        EOMONTH(vDataAtual,-1)+1
    VAR vUltimaData = 
        CALCULATE(
            MAX('Table'[DtHrCentroCustoAnterior]),
            FILTER(
                ALL('Table'),
                'Table'[DtHrCentroCustoAnterior] < vDataFimMA && 
                'Table'[Placa] = vPlaca
            )
        )
    VAR vCentroCustoMA = 
        CALCULATE(
            IF(
                MONTH(vDataMax) <> MONTH(vDataAtual), 
                MAX('Table'[CentroCustoAtual]), 
                MAX('Table'[CentroCustoAnterior])
            ),
            FILTER(
                ALL('Table'),
                'Table'[DtHrCentroCustoAnterior] = vUltimaData && 
                'Table'[Placa] = vPlaca
            )
        )
    VAR vCentroCustoAtual = 
        MAX('Table'[CentroCustoAtual])
RETURN
    IF(
        vCentroCustoAtual <> vCentroCustoMA,
        vCentroCustoMA,
        vCentroCustoAtual
    )

Talvez se você estruturar esta tabela em apenas uma coluna de data e um centro de custo fique mais fácil.

ccaconsiderar.pbix 152 kB · 1 download

É isso mesmo. Eu só precisaria que fosse uma coluna calculada pois posteriormente preciso aplicar filtros para que não seja carregado alguns centros de custos.

Sobre a estrutura da tabela, como você sugere? Não entendi muito bem.

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...