Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply
Anonymous
Not applicable

Filtrado total dinámico en 2 dimensiones

Hola, chicos

Mi estructura de datos se compone de una tabla de hechos y varias dimensiones que se unen a ella, consulte el diagrama siguiente. El problema viene cuando intento crear un total dinámico del campo Valor de pedido en la tabla Detalle de pedido, que tiene en cuenta los filtros que se pueden aplicar a la tabla Calendario y rama. En otras palabras, necesito un valor de pedido total calculado a partir de mi tabla de hechos, pero quiero que NO ignore los filtros aplicados a esas tablas. Sé que no puede hacer un ALLEXCEPT en toda una tabla, pero tampoco puedo anticipar qué campos mis usuarios podrían usar a partir de estas dimensiones, por lo tanto, no puedo enumerarlos todos individualmente en varios ALLEXCEPT.s. Así que aquí es donde me estoy quedando atascado.

Pensé que lo siguiente funcionaría:

Total dinámico : CALCULATE(sum('Order Detail Measures'[Order Value]),ALLEXCEPT('Calendar Date','Calendar Date'[Calendar ID]),ALLEXCEPT('Booking Branch','Booking Branch'[Booking Branch Key]))
También intenté esto:
CALCULATE(sum('Order Detail Measures'[Daily Net Order Line Value]),ALLEXCEPT('Order Detail Measures','Calendar Date'[Calendar ID],'Order Detail Measures'[Booking Branch Key]))
Según mi lógica - que probablemente está mal, así que por favor eduqueme en esto! - porque estoy haciendo referencia al ID de calendario y a los campos Clave de la rama de reserva en mi ALLEXCEPT (estos son los campos que mi hecho utiliza para unir a las tablas de dimensiones relevantes) cuando el usuario filtra en digamos Año financiero desde el Calendario, el ID de calendario obtiene un filtro de contexto y, por lo tanto, debe afectar a mi total dyanmic creando un valor de pedido total para el ejercicio seleccionado. Esto no es lo que sucede, sin embargo, cada vez que filtro en un campo que NO es ID de calendario de mi tabla calendario el cálculo ignora mi selección de filtro y solo calcula correctamente cuando aplico filtros en el identificador de calendario o la clave de sucursal. Si intercambio el identificador de calendario al año financiero en las 2 expresiones anteriores, funcionan según lo esperado, pero este no es el objetivo, no quiero restringir al usuario final para tener que usar campos específicos de la tabla Calendario o Rama, deberían poder usar cualquiera.

DK_PBC_0-1602758385337.png

¿Alguna sugerencia sobre lo que estoy haciendo mal?

Espero que todo esto tenga sentido.

Gracias

1 ACCEPTED SOLUTION
Anonymous
Not applicable

Hola Rico,

Me las arreglé para averiguar cómo hacer que funcione, sólo para referencia esto es lo que estaba después:

CALCULATE(sum('Order Detail Measures'[Order Value]),ALLSELECTED('Calendar Date'),ALLSELECTED('Booking Branch'))
Esto ahora devuelve dinámicamente la suma general del valor del pedido, pero todos loslows para ser filtrados por cualquiera de los campos en la rama de reserva o la fecha del calendario!

View solution in original post

3 REPLIES 3
v-rzhou-msft
Community Support
Community Support

Hola @DK_PBC

Construyo una muestra para hacerme una prueba por tu medida.

Dynamic Total =
CALCULATE (
    SUM ( 'Order Detail Measures'[Order Value] ),
    ALLEXCEPT ( 'Calendar Date', 'Calendar Date'[Calendar ID] ),
    ALLEXCEPT ( 'Booking Branch', 'Booking Branch'[Booking Branch Key] )
)

Mi muestra:

1.png

La función Medir con Allexcept solo contiene el campo DE ID de calendario en Fecha de calendario y Campo de clave de la sucursal de reserva en la rama de reserva. Por lo tanto, esta medida solo podría tener un impacto cuando filtramos el campo de ID de calendario o el campo de clave de rama. (Utilizo los niveles de filtro en esta página).

EX: Al filtrar la tabla de fechas del calendario por campo de fecha de calendario o campo de empresa, el resultado no será un impacto y seguirá mostrando suma total.

Así que creo que puede agregar campos específicos que desea afectar a esta medida en la función ALLEXPECT.

EX:

Dynamic Total =
CALCULATE (
    SUM ( 'Order Detail Measures'[Order Value] ),
    ALLEXCEPT ( 'Calendar Date', 'Calendar Date'[Calendar ID], 'Calendar Date'[Calendar Company]),
    ALLEXCEPT ( 'Booking Branch', 'Booking Branch'[Booking Branch Key] )
)

O si desea que Todos los archivos en tabla de fechas de calendario y tabla de sucursales de reserva puedan filtrar esta medida.

Puede utilizar la suma sin la función allexcept.

EX:

Measure 2 = sum('Order Detail Measures'[Order Value])

Si desea que la mayoría de los campos pueden filtrar esta medida, y sólo un poco fiels no puede afectar a esta medida.

Por ejemplo: El IDENTIFICADOR de calendario y la empresa pueden filtrar esta medida y Date no. Puede probar todas las funciones.

Dynamic Total = 
CALCULATE (
    SUM ( 'Order Detail Measures'[Order Value] ),
    ALL('Calendar Date'[Calendar Date]),
    ALLEXCEPT ( 'Booking Branch', 'Booking Branch'[Booking Branch Key] )
)

Creo que este blog Gestión de "todas" funciones en DAX: ALL, ALLSELECTED, ALLNOBLANKROW, ALLEXCEPT puede ayudarle a entender la función allxxx en power bi.

Puede descargar el archivo pbix desde este enlace: Filtrado total dinámico en 2 dimensiones

Saludos

Rico Zhou

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Anonymous
Not applicable

Hola Rico,

Me las arreglé para averiguar cómo hacer que funcione, sólo para referencia esto es lo que estaba después:

CALCULATE(sum('Order Detail Measures'[Order Value]),ALLSELECTED('Calendar Date'),ALLSELECTED('Booking Branch'))
Esto ahora devuelve dinámicamente la suma general del valor del pedido, pero todos loslows para ser filtrados por cualquiera de los campos en la rama de reserva o la fecha del calendario!
Anonymous
Not applicable

Hola Rico,

Gracias por su respuesta detallada!

Desafortunadamente, la funcionalidad que busco no es ninguno de estos escenarios.

La siguiente medida que propones para permitir el filtrado tanto en rama como en calendario no me dará lo que quiero, solo sumará el valor de pedido como una medida base.

sum('Order Detail Measures'[Order Value])

Supongamos que el valor total del pedido para 2019 es de 5 millones de euros y para 2020 es de 2 m, lo que quiero es que mi cálculo siempre devuelva 5 o 2 millones de euros, sino no solo cuando la persona selecciona el campo Año en el calendario, sino que utiliza cualquiera de los otros campos. Pero no quiero que ninguna de las otras tablas de dimensiones le afecte.

No creo que ALL o ALLEXCEPT sea capaz de hacer lo que busco por sí solo. Voy a tratar de ver si puedo llegar a lo que necesito usar un grupo por en su lugar.

Gracias

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.