The ultimate Microsoft Fabric, Power BI, Azure AI, and SQL learning event! Join us in Stockholm, Sweden from September 24-27, 2024.
2-for-1 sale on June 20 only!
Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
¡Hola!
Tengo este tipo de estructura de datos
OrderHeader | OrderItem | Importe |
A | 1 | 100 |
A | 2 | 200 |
B | 5 | 200 |
A | 3 | 800 |
C | 4 | 1005 |
Ahora necesito una medida DAX que solo sume el importe de OrderItem cuando la suma del encabezado sea mayor o igual que 1000. Mi idea era escribir primero una medida que siempre sumara la cantidad del encabezado y luego usarla para filtrar en otra medida. Pero, desafortunadamente, no funcionó como se esperaba. Básicamente, filtraba cuando el elemento era más pequeño que la entrada (1000), no la suma del nivel de encabezado.
¿Cómo puedo arreglar la primera medida para que siempre, sin depender del contexto de la tabla, calcule la suma en el nivel de encabezado y verifique si es mayor que la intrusión?
Un ejemplo de cómo debería mostrarse más adelante
OrderItem | Importe |
1 | 100 |
2 | 200 |
3 | 800 |
4 | 1005 |
En este caso, para reutilizar esta lógica en múltiples compases de forma performática, mi sugerencia es crear una columna calculada en la tabla original para tener el total de cada encabezado. Para ello puedes utilizar la misma lógica en la respuesta anterior:
NewColumn =
CALCULATE (
SUM ( 'Table'[Amount] ),
ALLEXCEPT ( 'Table', 'Table'[OrderHeader] )
)
A continuación, puede utilizar esta columna para filtrar según sea necesario mediante CALCULATE/FILTER.
De lo contrario, simplemente use la variable a continuación en cada medida para calcular la tabla sobre la marcha (no hay problema con este enfoque).
VAR _Table_Total_Header =
ADDCOLUMNS (
'Table',
"Header_Total",
CALCULATE (
SUM ( 'Table'[Amount] ),
ALLEXCEPT ( 'Table', 'Table'[OrderHeader] )
)
)
¡Espero que esta respuesta resuelva tu problema!
Si necesita ayuda adicional, por favor @ me en su respuesta.
Si mi respuesta le proporcionó una solución, considere marcarla como una solución ✔️ o darle un kudoe 👍
¡Gracias!
Saludos
Joao Ribeiro
@joaoribeiro muchas gracias por su respuesta! Pero, ¿hay una manera de tener que hacerlo en dos medidas para poder usar la segunda, por ejemplo, en diferentes contextos en lugar de crear una nueva tabla? He estado luchando con esto y no pude reescribirlo
Hola @Penguin12 ,
Creo que usas la siguiente estructura de medida para resolver tu problema:
VAR _Table_Total_Header =
ADDCOLUMNS (
'Table',
"Header_Total",
CALCULATE (
SUM ( 'Table'[Amount] ),
ALLEXCEPT ( 'Table', 'Table'[OrderHeader] )
)
)
RETURN
SUMX (
FILTER ( '_Table_Total_Header', [Header_Total] >= 1000 ),
'Table'[Amount]
)
¡Espero que esta respuesta resuelva tu problema!
Si necesita ayuda adicional, por favor @ me en su respuesta.
Si mi respuesta le proporcionó una solución, considere marcarla como una solución ✔️ o darle un kudoe 👍
¡Gracias!
Saludos
Joao Ribeiro
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Check out the June 2024 Power BI update to learn about new features.