Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola Expertos
Mi fuente de datos tiene el siguiente aspecto
Case_ID | Fecha | Status_ID | Importe |
1 | 01.09.2021 | 0 | 300 |
1 | 05.09.2021 | 3 | 320 |
1 | 06.09.2021 | 3 | 320 |
2 | 05.09.2021 | 3 | 100 |
3 | 02.09.2021 | 0 | 200 |
3 | 07.09.2021 | 2 | 200 |
Case_ID identificar un caso de negocio único para que el estado y la cantidad cambien en el tiempo. Un nuevo registro para una fecha en particular existe solo si cambia el estado o la cantidad de la Case_ID. El requisito es crear imágenes (tabla y gráfico) que muestren el total por estado y día como se muestra a continuación:
0 | 1 | 2 | 3 | |
01.09.2021 | 300 | |||
02.09.2021 | 500 | |||
03.09.2021 | 500 | |||
04.09.2021 | 500 | |||
05.09.2021 | 200 | 320 | 200 | |
06.09.2021 | 200 | 420 | ||
07.09.2021 | 200 | 420 | ||
08.09.2021 | 200 | 420 | ||
... | 200 | 420 |
He encontrado varios blogs sobre cómo manejar medidas semi aditivas pero no manejando un caso similar.
¿Alguien puede ayudar a definir la fórmula DAX?
EDITAR:
Trato de describir el problema un poco más:
Se agrega un nuevo registro a los datos de origen si y solo si hay una actualización para Importe o Status_ID para el Case_ID.
Por ejemplo, para el Case_ID = 1 se creó 1.9. con Status_ID = 0 y Cantidad = 300. Luego se actualizó en 5.9. a Status_ID = 2 y Cantidad = 300 y finalmente 6.9. a Status_ID = 3, Cantidad = 300 (sin cambios).
Esto significa que en 1.-4.9. el Status_ID fue 0 y la cantidad = 300, 5,9. fue Status_ID = 2, Cantidad = 320 y 6.9. hasta el final del calendario se Status_ID = 3, Cantidad = 320.
La mejor medida que pude encontrar es la siguiente:
Last Amount =
VAR lastKnownAmount =
CALCULATETABLE (
SUMMARIZE (
History,
History[Case_ID],
History[Status_ID],
"LastKnownAmount", LASTNONBLANKVALUE ( 'Date'[Date], SUM ( History[Amount] ) )
),
FILTER ( ALL ( 'Date' ), 'Date'[Date] <= MAX ( 'Date'[Date] )
)
)
RETURN
SUMX ( lastKnownAmount, [LastKnownAmount] )
Encuentra la última cantidad para todas las combinaciones Case_ID y Status_ID y la llena hasta todas las fechas hasta el final del calendario. La salida filtrada por Case_ID = tiene el siguiente aspecto:
Pero no puedo deshacerme de las figuras de la cruz roja.
EDICIÓN 2:
Pude hacer algunos progresos en este tema. He agregado una nueva columna calculada "Fecha siguiente" a la fuente de datos que contiene la fecha del siguiente registro para la misma fecha Case_ID o última del calendario si no hay un registro siguiente:
NextDate =
VAR lastKnownDate =
MAX ( 'Date'[Date] )
VAR next =
CALCULATE (
FIRSTNONBLANK ( 'History'[Date], 1 ),
FILTER (
History,
(
'History'[Date] > EARLIER ( History[Date] )
&& ( 'History'[Case_ID] = EARLIER ( 'History'[Case_ID] ) )
)
)
)
RETURN
IF ( ISBLANK ( next ), lastKnownDate, next )
Ahora cada registro es válido para el rango >= Date y <NextDate. Me cuesta construir la medida.
Hay @jirim
Basado en su tabla de origen de datos y tabla esperada, no puedo encontrar la relación o lógica de cálculo entre ellos, ¿podría darnos la lógica de cálculo del valor de salida? Para que podamos darte medidas concretas. También encuentro un artículo sobre Medidas Semi-Aditivas en DAX
https://www.sqlbi.com/articles/semi-additive-measures-in-dax/
-
tal vez puedas probar la medida con esta estructura
Total=calculate(sum(table[Amount]),Filter(All(table),table[Status_ID]=min(table[Status_ID])&&[your date period]))
Saludos
Equipo de soporte de la comunidad _Tang
Si esta publicación ayuda,considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Hay @v-xiaotang,
gracias por sus comentarios. He actualizado la pregunta con una mejor explicación del problema. No entiendo la lógica en su código DAX. Lo he actualizado a mis datos: la tabla de origen es "Historial" y la tabla de calendario es "Fecha" como se sigue:
Total =
CALCULATE (
SUM ( History[Amount] ),
FILTER (
ALL ( history ),
history[Status_ID] = MIN ( history[Status_ID] )
&& [Date]
)
)
Lamentablemente el resultado no da mucho sentido. Si hago una tabla de fecha/Status_ID filtrada por Case_ID = 1 como en la pregunta, el resultado se ve de la siguiente manera:
Hay @VahidDM
mi pregunta probablemente no estaba clara. No sé cómo construir el messure en DAX que daría los resultados como en la tabla de salida de muestra.
Hay @jirim
Intente usar Matrix visual y configítelo de la siguiente manera:
Si este post Ayuda, por favor considere aceptarél como la soluciónpara ayudar a los otros miembros a encontrarlo más rápidamente.
Aprecia tus felicitaciones🙏!!
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |