Ir para conteúdo
  • 0

Média entre datas do mesmo ano


Johannes Lopes Viana Santa
Ir para solução Solucionado por Johannes Lopes Viana Santa ,

Pergunta

  • Alunos

Boa tarde! Estou com uma dúvida sobre média da diferença entre datas que ocorreram no mesmo ano.

Tenho uma tabela de clientes que possui dois campos de datas, Ativação e Desativação.

Preciso criar uma medida que calcule o tempo médio em meses que se passaram entre a ativação e a desativação desse cliente, mas somente daqueles que desativaram no mesmo ano da ativação. Ou seja, se no segmentador estiver o ano 2021 selecionado, a medida retornará os clientes que ativaram em 2021 e desativaram também em 2021.

A dúvida me ocorreu pq um dos relacionamentos estará inativo com a tabela calendário, e aí quando uso a FILTER (year (ativaçao) = year (desativação) não faz efeito nenhum.

 

O código que fiz foi esse abaixo:

Tempo médio de Permanencia Ano =
CALCULATE(
AVERAGEX(dClientes,
DATEDIFF(dClientes[Ativacao],dClientes[Desativacao],MONTH)),dClientes[Status] = "Desativado",
FILTER(dClientes,
YEAR(dClientes[Ativacao] = YEAR(dClientes[Desativacao]))))

 

image.png.d4b8f59108f5073683cb8d93a0b9e330.png

dClientes.xlsx

Editado por Johannes Lopes Viana Santa
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

Depois de quebrar bastante a cabeça, consegui chegar no resultado esperado. Vou deixar aqui caso alguém precise de algo parecido.

O que eu fiz foi criar uma tabela virtual reduzindo a tabela apenas com as colunas que eu iria precisar (cod_cliente, ativacao e desativacao)

Para isso usei a SUMMARIZE.

A CALCULATETABLE usei como argumento da SUMMARIZE para filtrar apenas os clientes que ativaram e desativaram no mesmo ano.

Nesse ponto foi criada uma tabela virtual apenas com esses clientes.

Depois usei a AVERAGEX no RETURN calculando a diferença entre as datas usando a DATEDIFF.

O resultado ficou exatamente como eu queria.

Agora selecionando o ano no segmentador consigo ver todos os que ativaram e desativaram naquele ano.

image.png.c4630a77139d099150ab04f97e7a5b7e.png

 

Tempo médio de Permanencia =

VAR vTabelaResumida = SUMMARIZE(
                            CALCULATETABLE(
                                dClientes,
                                    FILTER(dClientes,
                                    YEAR(dClientes[Desativacao]) = YEAR(dClientes[Ativacao])
                                )
                            ),
                                dClientes[Cod_Cliente],dClientes[Ativacao],dClientes[Desativacao])

RETURN AVERAGEX(
            vTabelaResumida,
            DATEDIFF(dClientes[Ativacao],dClientes[Desativacao],MONTH)
        )

Editado por Johannes Lopes Viana Santa
  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 1
  • Alunos

Veja se é assim que vc precisa

 

Tempo Médio Meses =
    CALCULATE(
        DATEDIFF(
            MIN( Planilha1[Ativacao] )
          , MAX( Planilha1[Desativacao] )
          , MONTH
        )
      , Planilha1[Status] = "Desativado"
)
 
Tempo Médio Dias =
    CALCULATE(
        DATEDIFF(
            MIN( Planilha1[Ativacao] )
          , MAX( Planilha1[Desativacao] )
          , DAY
        )
      , Planilha1[Status] = "Desativado"
)

image.png.995059a03aeb1742812e641cb59afbc0.png
Editado por Davi Rodolfo
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Não seria assim?
 

Tempo Médio Meses dos Desativados =
    CALCULATE(
        DATEDIFF(
            MIN( Planilha1[Ativacao] )
          , MAX( Planilha1[Desativacao] )
          , MONTH
        )
      , Planilha1[Status] = "Desativado"
)

Tempo Médio Dias dos Desativados =
    CALCULATE(
        DATEDIFF(
            MIN( Planilha1[Ativacao] )
          , MAX( Planilha1[Desativacao] )
          , DAY
        )
      , Planilha1[Status] = "Desativado"
)
 
Tempo Médio Meses dos Ativos=
    CALCULATE(
        DATEDIFF(
            MIN( Planilha1[Ativacao] )
          , MAX( Planilha1[Desativacao] )
          , MONTH
        )
      , Planilha1[Status] <> "Desativado"
)

Tempo Médio Dias dos Ativos =
    CALCULATE(
        DATEDIFF(
            MIN( Planilha1[Ativacao] )
          , MAX( Planilha1[Desativacao] )
          , DAY
        )
      , Planilha1[Status] <> "Desativado"
)
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa noite Davi! Obrigado pela resposta, mas não seria isso.

A sua medida trás todas as desativações que ocorreram, inclusive as que aconteceram em outro ano.

image.png.d789aeeb5ed27934fd1769d18aae7e75.png

O que preciso, é que as desativações que ocorreram em outro ano não sejam consideradas.

O resultado ficaria igual essa imagem abaixo. Observe que as desativações que ocorreram no mesmo ano da ativação não são consideradas.

 

image.png.1e4c35b5e2aaf4c25f3a8dce678b14c4.png

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