Calcular la edad en meses

Un usuario Pregunto ✅

Anónimo

Hola a todos,edad en meses.png

Creé una columna para calcular la edad en meses. Sin embargo, Power BI no tiene en cuenta la fecha de hoy. Por ejemplo, Power BI dice que la persona nacida el 17 de diciembre de 2019 tiene 3 meses, mientras que debería decir 2 meses.

Usé la siguiente fórmula para la columna:

Edad en meses =
var DOB = DAY (Tabla[DOB])
var CurrentMonth = DAY (HOY ())
var NumberOfMonths = DATEDIFF (Tabla[DOB]); HOY DIA(); MES)
devolver NumberOfMonths
¿Cómo se puede solucionar este problema?

vivran22

Hola @Anónimo,

DAX está redondeando los valores del mes. Por ejemplo, la fecha de nacimiento del 19 de enero de 2020 es 1,78 meses, por lo que muestra el valor como 2 meses.

Puede modificar su cálculo:

Age (cc) =
 ROUNDDOWN(
     DIVIDE(
         DATEDIFF('Table'[DOB],TODAY(),DAY),
          30.4)
           ,0
           )

¡Salud!
Vivek

Si ayuda, márquelo como una solución.
Felicitaciones sería una cereza en la cima 🙂

https://www.vivran.in/

Conectarse en LinkedIn

vivran22

Hola @Anónimo,

DAX está redondeando los valores del mes. Por ejemplo, la fecha de nacimiento del 19 de enero de 2020 es 1,78 meses, por lo que muestra el valor como 2 meses.

Puede modificar su cálculo:

Age (cc) =
 ROUNDDOWN(
     DIVIDE(
         DATEDIFF('Table'[DOB],TODAY(),DAY),
          30.4)
           ,0
           )

¡Salud!
Vivek

Si ayuda, márquelo como una solución.
Felicitaciones sería una cereza en la cima 🙂

https://www.vivran.in/

Conectarse en LinkedIn

MoOv

En respuesta a vivran22

Como esta solución funciona con el promedio la duración del mes y no la duración real del mes, no devuelve los resultados esperados en meses cortos. Ejemplo: Fecha de nacimiento: = 1 de abril de 2020, hoy: = 1 de mayo de 2020. Luego, DATEDIFF en días es 30. Dividido por 30,4 y redondeado hacia abajo, el resultado es 0, no 1 como cabría esperar y probablemente desee que se muestre la medida. Más aún si el DOB es en febrero.

Este podría ser el comportamiento deseado en algunos casos, pero uno realmente debe ser consciente de ello, ya que no se muestra a primera vista.

Editar nota: ejemplo corregido.

Anónimo

En respuesta a vivran22

Hola @ vivran22, ¡gracias! Los felicitaciones están bien desechados

MoOv

DATEDIFF devuelve el recuento de límites de intervalo entre fechas (cf. https://docs.microsoft.com/de-de/dax/datediff-function-dax). En su ejemplo, hay un límite entre diciembre y enero, enero y febrero, y febrero y marzo, lo que da como resultado un recuento de 3. Debe tener en cuenta el día, ya que solo desea contar los meses «completos». Si la parte DÍA de hoy es mayor o igual que la parte DÍA de la fecha de nacimiento, desea contar todos los límites; si no es así, desea reducir este número en 1. Pruebe esto:

SI (Fecha de nacimiento <= CurrentMonth; NumberOfMonths; NumberOfMonths - 1)

Por cierto: es posible que desee cambiar el nombre de la variable «CurrentMonth», este nombre es un poco confuso. Quizás en DayCurrentMonth o algo similar.

Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *