Ir para conteúdo
  • 0

Média entre datas do mesmo ano


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

Pergunta

  • Alunos
Postado (editado)

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

5 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
Postado (editado)

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
  • 1
  • Alunos
Postado (editado)

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
  • 0
  • Alunos
Postado

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"
)
  • 0
  • Alunos
Postado

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

Faça login para comentar

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



Entrar Agora
×
×
  • Criar Novo...