The ultimate Microsoft Fabric, Power BI, Azure AI & SQL learning event! Join us in Las Vegas from March 26-28, 2024. Use code MSCUST for a $100 discount. Register Now
Hola a todos
Me gustaría calcular la diferencia entre 2 fechas específicas para cada producto y, a continuación, los KPI basados en esta fecha.
Ya lo hice con columnas calculadas, pero me gustaría administrarlo con DAX (soy nuevo en DAX).
Calculo la diferencia de fecha:
date_diff = DATEDIFF(FIRSTNONBLANK(table[date1],""),FIRSTNONBLANK(table[date2],""),DAY)
y luego calco el KPI como:
KPI = IF([date_diff]<30,"OK","KO")
Esto funciona y mi salida es:
qué días fecha KPI 1 fecha 2
Producto 1 20d OK 1 jan 20 jan
Producto 2 40d KO 1 jan 9 feb
Producto 3 10d OK 1 feb 20 feb
... ... ...
El problema surge cuando agredo a mi categoría de tabla por encima del producto. Entiendo:
qué días fecha KPI 1 fecha 2
CATEG. A 51d KO 1 jan 20 feb
Producto 1 20d OK 1 jan 20 jan
Producto 2 40d KO 1 jan 9 feb
Producto 3 10d OK 1 feb 20 feb
CATEG. B......
Producto 4 ... ...
Category obtiene la fecha calculada de la misma manera que lo hacen los productos.
Por lo tanto, si calcula la diferencia entre las primeras fechas no en blanco en todos los productos de su categoría. Esto no es lo que me gustaría obtener.
Me gustaría tener:
qué días fecha KPI 1 fecha 2
CATEG. Un
Producto 1 20d OK 1 jan 20 jan
Producto 2 40d KO 1 jan 9 feb
Producto 3 10d OK 1 feb 20 feb
O, lo mejor sería:
qué días fecha KPI 1 fecha 2
CATEG. Un 23,3d 66,6%
Producto 1 20d OK 1 jan 20 jan
Producto 2 40d KO 1 jan 9 feb
Producto 3 10d OK 1 feb 20 feb
Ya que soy un noob con DAX, ¿quizás mi enfoque es incorrecto?
PD: Lo siento por las tablas, pero no puedo publicar debido a HTML no válido...
Solved! Go to Solution.
Hola @Hank_ ,
Según mi opinión, desea mostrar el promedio de diferencia de datos y el porcentaje de "ACEPTAR" para cada categoría, ¿verdad?
Puede seguir estas fórmulas:
1. Para diferencia de fecha
DateDiff =
DATEDIFF ( MAX ( 'Table'[Date Start] ), MAX ( 'Table'[Date End] ), DAY )
days =
FORMAT (
IF (
HASONEVALUE ( 'Table'[Product] ),
[DateDiff],
AVERAGEX ( 'Table', [DateDiff] )
),
"#.0d"
)
2. Para KPI:
KPI Value =
IF ( [DateDiff] < 30, "OK", "KO" )
KPI =
VAR _per =
CALCULATE (
COUNTROWS ( 'Table' ),
FILTER ( ALLEXCEPT ( 'Table', 'Table'[Category] ), [KPI Value] = "OK" )
)
/ CALCULATE ( COUNTROWS ( 'Table' ), ALLEXCEPT ( 'Table', 'Table'[Category] ) )
RETURN
IF ( HASONEVALUE ( 'Table'[Product] ), [KPI Value], _per )
Mi salida final se ve así:
¿He respondido a tu pregunta? Por favor, marque mi respuesta como solución. Muchas gracias.
Si no es así, cargue algunas muestras de datos insensibles y la salida esperada.
Saludos
Eyelyn Qin
Hola @Hank_ ,
Según mi opinión, desea mostrar el promedio de diferencia de datos y el porcentaje de "ACEPTAR" para cada categoría, ¿verdad?
Puede seguir estas fórmulas:
1. Para diferencia de fecha
DateDiff =
DATEDIFF ( MAX ( 'Table'[Date Start] ), MAX ( 'Table'[Date End] ), DAY )
days =
FORMAT (
IF (
HASONEVALUE ( 'Table'[Product] ),
[DateDiff],
AVERAGEX ( 'Table', [DateDiff] )
),
"#.0d"
)
2. Para KPI:
KPI Value =
IF ( [DateDiff] < 30, "OK", "KO" )
KPI =
VAR _per =
CALCULATE (
COUNTROWS ( 'Table' ),
FILTER ( ALLEXCEPT ( 'Table', 'Table'[Category] ), [KPI Value] = "OK" )
)
/ CALCULATE ( COUNTROWS ( 'Table' ), ALLEXCEPT ( 'Table', 'Table'[Category] ) )
RETURN
IF ( HASONEVALUE ( 'Table'[Product] ), [KPI Value], _per )
Mi salida final se ve así:
¿He respondido a tu pregunta? Por favor, marque mi respuesta como solución. Muchas gracias.
Si no es así, cargue algunas muestras de datos insensibles y la salida esperada.
Saludos
Eyelyn Qin
¡Gracias! Definitivamente es la salida que quería.
Hay tantas cosas que aprender para mí en esta pequeña 😃 pbix
¡Gracias @amitchandak! Muy fresco IsInScope, no lo descubrió todavía 🙂
Yo de esta manera puedo "ocultar" los valores para CATEGORY. Si calculara para ellos los días medios reales y el %KPI?
@Hank_ , si qué cambiar el cálculo basado en el nivel, debe utilizar isinscope. Pero mirando este cálculo, no soy capaz de hacer, donde se utiliza una columna, donde se utiliza la medida
https://www.kasperonbi.com/use-isinscope-to-get-the-right-hierarchy-level-in-dax/