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
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 )
Aquí está el resultado …
¡Espero que esto ayude!
jb123
En respuesta a Sean
¡Eso funciono! Gracias
v-huizhn-msft
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 …
¡Espero que esto ayude!
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:
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!