Medir para calcular el número de días entre dos columnas de fecha

Un usuario Pregunto ✅

jb123

Estoy tratando de hacer algo que es muy fácil en Excel, pero aún no he encontrado la sintaxis correcta en Power BI.

Necesito crear una medida que calcule el número de días entre dos fechas. No estoy buscando hacer nada especial como días de red, simplemente días de calendario antiguos entre las fechas de la Columna A y las fechas de la Columna B. ¿Cuál es la forma más sencilla de calcular esto en Power BI?

Gracias.

Judie

jb123

En respuesta a Sean

¡Eso funciono! Gracias Smiley feliz

Sean

@ jb123 Esa sería la función DATEDIFF => DATEDIFF ( , , )

Se devuelve un error si start_date es mayor que end_date.

Para evitar este error, utilice esta fórmula en un Columna calculada

Days Column = 
SWITCH (
    TRUE (),
    'Table'[start_date] < 'Table'[end_date], DATEDIFF ( 'Table'[start_date], 'Table'[end_date], DAY ),
    'Table'[start_date] > 'Table'[end_date], DATEDIFF ( 'Table'[end_date], 'Table'[start_date], DAY ) * -1,
    0
)

Multiplica * -1 para obtener números negativos donde el evento terminó antes de que comenzara (lo que implica un viaje en el tiempo Smiley feliz)

Aquí está el resultado …

Función DATEDIFF.png

¡Espero que esto ayude! Smiley feliz

jb123

En respuesta a Sean

¡Eso funciono! Gracias Smiley feliz

En respuesta a jb123

Hola @ jb123,

Marque la respuesta correcta como respuesta, para que las personas que tengan un problema similar puedan encontrar una solución fácil y claramente. Muchas gracias.

Atentamente,
Angelia

kb

En respuesta a v-huizhn-msft

No estoy seguro de cómo le está funcionando, pero cuando se aplica exactamente la misma fórmula para una nueva medida, no me permite poner los nombres de las columnas como ‘fecha de inicio’ y ‘fecha de finalización’. Solo acepta la fórmula o medida ya creada … ¿Alguna sugerencia?

Sean

En respuesta a kb

@kb

La fórmula anterior es para Columna calculada

Cuando intentas crear un La medida

Intellisense no le permite seleccionar una columna porque primero necesita un agregador como MIN o MAX

Así que aquí está el La medida fórmula

Days Measure = 
SWITCH (
    TRUE (),
    MIN('Projects'[start_date]) < MIN('Projects'[end_date]), DATEDIFF ( MIN('Projects'[start_date]), MIN('Projects'[end_date]), DAY ),
    MIN('Projects'[start_date]) > MIN('Projects'[end_date]), DATEDIFF ( MIN('Projects'[end_date]), MIN('Projects'[start_date]), DAY )* -1
)

Y aquí está el resultado …

DATEDIFF.gif

¡Espero que esto ayude! Smiley feliz

bee_vite

En respuesta a Sean

Primero, gracias por esto … lo más cerca que he llegado a resolver el problema. Sin embargo, no funciona como se esperaba con mis datos y puede ser que tenga algo que ver con las dos tablas (‘básica’) y (‘cambios de estado’) involucradas. Están relacionados, pero cuando uso esta fórmula, la columna «Medida de días» devuelve una constante 365 para todos los registros:

Medida de días =

CAMBIAR (

CIERTO (),

MIN (‘básico'[submissiondate])

MIN (‘Proyectos'[submissiondate])> MIN (‘cambios de estado'[statusdate]), DATEDIFF (MIN (‘básico'[submissiondate]), MIN (‘cambios de estado'[statusdate]), DÍA 1)

en la parte inferior de la pantalla, aparece el mensaje «TABLA: básica (107,846 filas) COLUMNA: Medida de días (1 valores distintos)»

¡Cualquier ayuda sería apreciada!

Gracias ~ abeja

TonyO

En respuesta a bee_vite

re: «la columna» Medida de días «devuelve una constante 365 para todos los registros»:

Verifique las relaciones y los campos agregados para asegurarse de que está mostrando el campo correcto. A menudo, cuando un campo existe en varias tablas vinculadas, es posible hacer referencia al campo incorrecto, en cuyo caso obtendrá el mismo valor para todos los registros.

comish4lif

En respuesta a Sean

Estoy tratando de usar tu fórmula básica, mi versión es:

DATEDIFF 20180207.jpg

Days Last Update = 
SWITCH (
    TRUE (),
    MIN('Production Approval Workflow'[Status_InFlight])=TRUE, DATEDIFF (MIN('Production Approval Workflow'[Modified]), today(), DAY ),
    MIN('Production Approval Workflow'[Status_InFlight])=FALSE, ""
)

Pero cuando lo dejo caer en una tabla, aparece el error «No se puede mostrar el visual».

Nota: el campo [Modifed] es un sello de fecha / hora.

Además, ¿por qué no se rellenan previamente los nombres de las tablas y los valores de los campos cuando estoy creando una fórmula?

kb

En respuesta a Sean

Sí, ahora está funcionando bien 🙂 Gracias

jb123

En respuesta a Sean

¿Cual es la sintaxis correcta? Supongamos que estoy tratando de crear una columna y tengo el número de días entre las fechas en dos columnas. DateDiff requiere un intervalo como mes, año, día, etc. Cuando intento crear una columna usando lo siguiente

Columna = DATEDIFF (Table1[Dates1], Tabla 1[Dates2], DÍA)

Recibo un error de que la fecha de inicio no puede ser mayor que la fecha de finalización. Cambio el orden de las columnas de fechas y todavía devuelve el mismo error.

Sean

En respuesta a jb123

Incluso si solo tiene 1 fila donde end_date es antes de start_date, obtendrá un error para toda la columna.

Por lo tanto, use la fórmula anterior y los números negativos en los resultados le mostrarán dónde están esos errores.

¡Buena suerte! Smiley feliz

Deja un comentario

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