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
Syndicate_Admin
Administrator
Administrator

NECESITA LA función ALLEXCEPT DE AYUDA

Hola a todos

@amitchandak

La función ALLEXCEPT no funciona como se esperaba. Lo ideal es conservar el filtro que se ha especificado en el argumento y eliminar todos los filtros externos por favor corrija si necesito considerar otros puntos, así como el modelo de relación mientras se trabaja con ALLEXCEPT

A continuación se muestra la medida que utilicé

All() Ventas á CALCULATE(sum('Order Details'[Sales]),all(Employees),all(Products))

AllExcptProductName á calculate(sum('Order Details'[Sales]),ALLEXCEPT(Products,Products[ProductName]))

aquí puedo ver que ha cortado los datos según el país, la ciudad y el nombre del producto

AllExcept.PNG

1 ACCEPTED SOLUTION

@husnabanu

Su ejemplo es el mismo que mi primer ejemplo. El campo que está utilizando en el objeto visual de tabla procede de una tabla de dimensiones (Productos), por lo que debe escribir la expresión como:

AllExcptProductName = CALCULATE(SUM('Order Details'[Sales]),ALLEXCEPT('Order Details',Products[ProductName]))

allexc.JPG

View solution in original post

8 REPLIES 8
Syndicate_Admin
Administrator
Administrator

@Ark1

La razón por la que la medida es entregar resultados inesperados es hacer con los campos que está utilizando en el objeto visual frente a la referencia de tabla en la función ALLEXCEPT.

Vea el ejemplo siguiente Tanto el canal como el elemento proceden de tablas de dimensiones. Puede ver la representación de diferentes expresiones ALLEXCEPT (NB: 'Ventas' es la tabla de hechos y Dim Item es una tabla de dimensiones para la tabla 'Ventas')

1)

Sales ALLEXCEPT Item = CALCULATE([Sum of Sales], ALLEXCEPT(Sales, Sales[Item]))

2)

Sales ALLEXCEPT Dim Item = CALCULATE([Sum of Sales], ALLEXCEPT('DIM Item', 'DIM Item'[Item]))

3)

Sales Allexcept (DatDim) = CALCULATE([Sum of Sales], ALLEXCEPT(Sales, 'DIM Item'[Item]))

que te consigue esto:

Allexcept.JPG

Como puede ver, si utiliza tablas de dimensiones como contextos de filtro,debe escribir la expresión como ALLEXCEPT(FactTable, DimTable[DimField).

Sin embargo, si el contexto de filtro son campos de la tabla de hechos (por lo que no de tablas de dimensiones),debe escribir ALLEXCEPT(FactTable, FactTable[field)).

allexc2.JPG

Así que básicamente siempre debe hacer referencia a la tabla de hechos como la tabla de la que desea eliminar los filtros, y utilizar el campo que está utilizando como un contexto de filtro en el objeto visual como la columna en la que desea mantener los filtros. Sea cual sea el caso, no puede utilizar la tabla de dimensiones como expresión de tabla, ya que ALLEXCEPT quitará los filtros de esa misma tabla de dimensiones (¡cuando lo que necesita es quitar todos los demás filtros!). ¿Tiene sentido?

Editar: Otra forma de obtener los resultados es(de nuevo dependiendo del campo que se utilice como contexto de filtro en el objeto visual)

Es

Alternative to allexcept (Dim Item) = CALCULATE([Sum of Sales], 
                                FILTER(ALL(Sales), 
                                Sales[Item] = SELECTEDVALUE('DIM Item'[Item])))
Alternative to allexcept (Fact Item) = CALCULATE([Sum of Sales], 
                                FILTER(ALL(Sales), 
                                Sales[Item] = SELECTEDVALUE(Sales[Item])))

No @PaulDBrown

Realmente aprecio su breve explicación .... ¿Qué pasa si el hecho y la dimensión se encuentra en una tabla sólo como en mi pbix .... ¿por qué DAX es tan complicado?

saludos

Husna

@husnabanu

Su ejemplo es el mismo que mi primer ejemplo. El campo que está utilizando en el objeto visual de tabla procede de una tabla de dimensiones (Productos), por lo que debe escribir la expresión como:

AllExcptProductName = CALCULATE(SUM('Order Details'[Sales]),ALLEXCEPT('Order Details',Products[ProductName]))

allexc.JPG

Syndicate_Admin
Administrator
Administrator

Si entiendo correctamente, ¿está tratando de calcular las ventas por ciudad y por país?

Si desea mostrar el total de ventas por ciudad debe utilizar esto probablemente: calculate(sum('Order Details'[Sales]),ALLEXCEPT(TABLENAME,TABLENAME[City]))

Si desea mostrar el total de ventas por ciudad, debe utilizar esto probablemente: calculate(sum('Order Details'[Sales]),ALLEXCEPT(TABLENAME,TABLENAME[Country]))

Allexcept significa que está eliminando todos los filtros, excepto el que indica en la función Allexcept.

En este momento no soy capaz de probar, así que hágamelo saber si esto era lo que usted donde buscando

@Ark1 im buscando Ventas totales por nombre de producto, ¿cómo puedo escribir usando la función allexcept?

¿Podría compartir su archivo? Voy a echar un vistazo

Syndicate_Admin
Administrator
Administrator

@husnabanu , Consulte esta -https://www.sqlbi.com/articles/using-allexcept-versus-all-and-values/

Y comprueba si esto te puede ayudar.

O

¿Puede compartir datos de ejemplo y salida de ejemplo en formato de tabla? Necesito tratar de comprobar

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.

Top Kudoed Authors