Reply
Syndicate_Admin
Administrator
Administrator
Syndicated - Inbound

Combine ALL() y FILTER() para eliminar filas

Source Community: Power BI | Source Author Name: rabin

Queridos todos,

Soy relativamente nuevo en PowerBI y estoy teniendo algunos problemas para entender qué criterios utiliza PowerBI para mostrar u ocultar filas.

Supongamos los siguientes datos ficticios sobre ventas:

CountryTable:

country_idpaís
1España
2Países Bajos
3Alemania

Tabla de ventas:

sale_idcountry_idprovinciaamount_euros
12A50
22B100
33C20

Ambas tablas están relacionadas por el campo de país con "dirección" establecida en "Ambos".

1. Si creo una matriz con:

Filas: CountryTable.country

Valores: SalesTable.amount_euros

Luego, en la tabla de resultados, PowerBI está omitiendo a España, ya que no tiene ninguna venta.

Ahora quiero hacer lo mismo con el siguiente cálculo y no entiendo por qué en este caso PowerBI está mostrando España. Quiero que no aparezca:

2. Quiero crear una medida que muestre la suma de amount_euros para las provincias A y C, (pero no filtrada por país, utilizando así la función ALL(). En otras palabras, quiero la siguiente tabla:

paísnew_measure
Países Bajos70
Alemania70

Si lo hago:

new_measure =

VAR _table = FILTRO (

TODOS (SalesTable),

SalesTable [provincia] - "A" || SalesTable [provincia] - "C"

)

RETURN SUMX ( _table, [amount_euros] )

PowerBI muestra:

paísnew_measure
Países Bajos70
Alemania70
España70

¿No se supone que el filtro de la provincia se "propaga"? España ni siquiera aparece en las ventas, por lo que la provincia no es ni A ni C...

Muchas gracias de antemano

1 ACCEPTED SOLUTION

Source Community: Power BI | Source Author Name: Ashish_Mathur
Syndicated - Inbound

hola

Puede descargar mi archivo PBI desde aquí.

Espero que esto ayude.

Untitled.png

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Source Community: Power BI | Source Author Name: Ashish_Mathur
Syndicated - Inbound

hola

Puede descargar mi archivo PBI desde aquí.

Espero que esto ayude.

Untitled.png

Source Community: Power BI | Source Author Name: rabin
Syndicated - Inbound

Hola @Ashish_Mathur

Gracias por su respuesta. Me temo que aunque este no es el resultado que necesito: necesito 70 en todas las filas, como estaba afirmando en mi post original.

saludos

Source Community: Power BI | Source Author Name: Ashish_Mathur
Syndicated - Inbound

hola

Puede descargar mi archivo PBI desde aquí.

Espero que esto ayude.

Untitled.png

Syndicate_Admin
Administrator
Administrator

Source Community: Power BI | Source Author Name: selimovd
Syndicated - Inbound

Hola @rabin ,

en DAX cada cálculo se realiza independientemente de los cálculos de otros campos.

Esto significa que al crear en la visualización una tabla a partir de la columna CountryTable[país], la tabla tiene este aspecto:

país
España
Países Bajos
Alemania

Si agrega ahora la suma de SalesTable[amount_euros], se calculará para cada fila:

paísFórmula evaluadaLo que se muestra
EspañaSUM(amount_euros) en blanco (se ocultará porque en blanco)
Países BajosSUM(amount_euros) 150
AlemaniaSUM(amount_euros) 20

¿Qué sucede ahora cuando se utiliza la función FILTER?

El mismo mecanismo ocurre para su cálculo.

El FILTRO (ALL(SalesTable))... producirá una tabla que se ve así:

sale_idcountry_idprovinciaamount_euros
12A50
33C20

Llamaré a esta tabla para el resto de mi respuesta 'FILTER-Table'.

En esta 'Tabla DE FILTROS' se utiliza la función SUMX. Importante aquí es que SUMX tiene un contexto de filtro (todo el filtro en el contexto, como el país en cada fila) y un contexto de fila (lo que sucede como segundo argumento, en su caso sólo tiene que hacer referencia a la columna SalesTable[amount_euros] (por cierto, escribir siempre columna incluyendo la tabla y medidas sin. Esta es la forma común de escribir DAX)).

Así que su SUMX está usando 'FILTER-Table' y haciendo una SUMA de la columna 'FILTER-Table'[amount_euros], que es 50+20 = 70.

Su pregunta ahora es ¿por qué está apareciendo España?

Esto es lo que sucede:

paíssumaLo que se muestra
EspañaLa función FILTER crea 'FILTER-Table', y luego ocurre SUMX70
Países BajosLa función FILTER crea 'FILTER-Table', y luego ocurre SUMX70
AlemaniaLa función FILTER crea 'FILTER-Table', y luego ocurre SUMX70

El resultado inesperado proviene del hecho de que nunca se hace una transición de contexto del contexto actual (país como España o en la siguiente fila Países Bajos o en la siguiente fila Alemania) al contexto de fila de SUMX.

A medida que se evalúa la función para cada fila, también se mostrará para España.

¿Tiene sentido para ti? Espero que no haya sido demasiado confuso 😅

Si necesitas ayuda, por favor avísame.
Si respondiera a su pregunta, estaría feliz si pudiera marcar mi publicación como una solución ✔️ y darle un pulgar hacia arriba 👍
Saludos
Denis

Source Community: Power BI | Source Author Name: rabin
Syndicated - Inbound

Hola @selimovd ,

Muchas gracias por su respuesta. Permítame profundizar un poco más en él:

1. Todavía no me queda claro cómo "ocultar" España. Este es solo un ejemplo ficticio (simplemente podría ocultarlo usando los filtros de interfaz de usuario de PowerBI Desktop) pero en mi escenario real necesito que esta tabla FILTER se calcule solo para los países que tienen ventas. Supongo que necesito algún tipo de estructura "IF", pero no puedo entenderlo.

2. ¿Qué quieres decir exactamente con:

2.1 todo el filtro en el contexto, como el país en cada fila. De hecho, me cuesta algo: el contexto de filtro aquí sería la variable "_table" o lo que puse en la interfaz de usuario PBI en la sección "fila" al hacer la matriz, en este caso el campo "país"? Creo que hay cierta ambigüedad en general entre el "contexto de filtro" y el "contexto de consulta" que leí en el documento oficial de PBI.

2.2. Por cierto, escriba siempre columna incluyendo la tabla y medidas sin. Esta es la forma común de escribir DAX. ¿Quiere escribir "SalesTable[amount_euros]" en lugar de "[amount_euros]"? Ni siquiera estaba seguro de si era lo mismo... Estaba bastante confundido porque el "amount_euros" que quiero sumar es de hecho el de la tabla FILTER que mencionas, no el de la "Mesa de Ventas"... Pensé que eso era lo que estaba haciendo al escribir [amount_euros] sin el nombre de la tabla anterior...

2.3 nunca se hace una transición de contexto del contexto actual (país como España o en la siguiente fila Países Bajos o en la siguiente fila Alemania) al contexto de fila de SUMX. ¿Cómo debo hacer esta transición?

Muchas gracias de nuevo por su ayuda,

Atentamente

avatar user

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

March2025 Carousel

Fabric Community Update - March 2025

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

Top Solution Authors (Last Month)
Top Kudoed Authors (Last Month)