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

Tabla de ordenación: la función SUMMARIZE no acepta la columna recién definida en los siguientes nombres y expresiones

Hola, estoy practicando la escritura de la función DAX en PBI, pero existe el problema de ordenar la tabla creada en la función SUMMARIZE.

SuNguyen_1-1630039918593.png

Medida 'DescendingTable' = SUMMARIZE(Sales_2017,Sales_2017[CustomerKey],"TotalOrderQty",SUM(Sales_2017[OrderQuantity]),[TotalOrderQty],DESC)

El argumento Name requiere el nombre de la columna recién creada: por ejemplo, "TotalOrderQty"

Sin embargo, este argumento Name no acepta columnas existentes, por lo que el siguiente nombre & expresión [TotalOrderQty],DESC en la misma función SUMMARIZE no funcionan.

Entonces, ¿hay alguna manera de agregar la ordenación en orden ascendente o descendente a la tabla que se está creando en la función SUMMARIZE?

Esto es realmente útil para la combinación con TOPN para encontrar los registros correctos que coincidan con los criterios.

Saludos

Su

1 ACCEPTED SOLUTION

SUMMARIZE no incluye la ordenación. Simplemente crea una tabla. Si desea crear una tabla física, puede ordenar la tabla real mediante la interfaz de tabla o la "Columna ordenar por" en la cinta de opciones.
SIN EMBARGO, este criterio de ordenación de una tabla física sólo es relevante para ordenar campos en objetos visuales. Las medidas son ajenas a esto, ya que devuelven valores escalares basados en el contexto de fila/filtro y no en tablas.
Para establecer un orden relevante para las medidas, cree una columna calculada en la tabla física (que, sin embargo, permanecerá estática) utilizando RANK. EQ o RANKX, o crear una medida para clasificar valores mediante RANKX (que puede ser dinámico)

View solution in original post

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

@SuNguyen , Usted puede conseguir de una de las dos maneras

Medida 'DescendingTable' = SUMMARIZE(Sales_2017,Sales_2017[CustomerKey],"TotalOrderQty",SUM(Sales_2017[OrderQuantity]), "TOQ",sum([TotalOrderQty]))

Medida 'DescendingTable' = SUMMARIZE(Sales_2017,Sales_2017[CustomerKey],[TotalOrderQty],"TotalOrderQty",SUM(Sales_2017[OrderQuantity]))

también en una tabla de medidas puede estar en un VAR

Medida=

donde _tab

= SUMMARIZE(Sales_2017,Sales_2017[CustomerKey],"TotalOrderQty",SUM(Sales_2017[OrderQuantity]), "TOQ",sum([TotalOrderQty]))

devolución

<>

SUMMARIZE no incluye la ordenación. Simplemente crea una tabla. Si desea crear una tabla física, puede ordenar la tabla real mediante la interfaz de tabla o la "Columna ordenar por" en la cinta de opciones.
SIN EMBARGO, este criterio de ordenación de una tabla física sólo es relevante para ordenar campos en objetos visuales. Las medidas son ajenas a esto, ya que devuelven valores escalares basados en el contexto de fila/filtro y no en tablas.
Para establecer un orden relevante para las medidas, cree una columna calculada en la tabla física (que, sin embargo, permanecerá estática) utilizando RANK. EQ o RANKX, o crear una medida para clasificar valores mediante RANKX (que puede ser dinámico)

¡Dios mío, Pablo!

¡Eres tan snarkily inteligente! ¡Eres un salvavidas! Inicialmente busqué muchas fórmulas, pero era demasiado perezoso para probar las funciones de rango. Después de ver sus sugerencias de esas 2 funciones, comencé a mejorar mi tabla CustomCol. Había creado una tabla CustomCol con 2 campos, Customer Key &TOQ Sum of Qty. Ahora, he agregado otra columna llamada RankingTOQ y he aplicado RANK. Ecualización en DESC.

Ahora, para encontrar el #1 cliente con las transacciones más altas para mostrar su nombre en el objeto visual de tarjeta, ya no necesito anidar el SUMMARIZE dentro de la función TOPN (porque SUMMARIZE se definió de una manera que prohíbe llamar a las columnas recién creadas). En su lugar, aplicar la función FILTER donde RankingTOQ = 1 producirá el resultado satisfactorio.

Es un fastidio saber que SUMMARIZE no permite SORTing, pero la solución RANK sigue siendo buena. Por cierto, probé MIN dentro de la función FILTER, y el FILTER no devuelve la tabla correcta para mí.

Eg. Esto funciona:

FILTER(CustomCol,CustomCol[RankingTOQ]=1)

SuNguyen_2-1630078206102.png

Eg. Esto no funciona:

FILTER(CustomCol,MIN(CustomCol[RankingTOQ]))

SuNguyen_3-1630078242344.png

Sería genial si me puedes ayudar a entender el funcionamiento de estos 2 ejemplos contradictorios, Pablo. Gracias por sus consejos para salvar vidas hasta ahora :).

Saludos

Su

Hola Amit Chandak,

Da las gracias por contestar, pero pienso que entendiste mal el problema en este hilo. El problema es cómo agregar Ordenar en ascendente o descendente a la función SUMMARIZE o a cualquier fórmula dax.

Por ejemplo, función A:

SUMMARIZE(Sales_2017,Sales_2017[CustomerKey],"TotalOrderQty",SUM(Sales_2017[OrderQuantity]))

Esta función A funciona perfectamente y devuelve una tabla con 2 columnas, que son Customer Key y TotalOrderQty, dadas tantas filas que coinciden con los criterios de la fórmula.

Sin embargo, cuando agregué 2 argumentos más a la función SUMMARIZE anterior: Name, Expression = [TotalOrderQty], DESC para ordenar la columna recién creada TotalOrderQty en orden descendente (de mayor a menor), la función SUMMARIZE no aceptó esto. Me dijo que el error mintió en el argumento Name [TotalOrderQty]. Aparentemente, mi versión de PBI solo acepta nombre de columna en este formato "ColName" (también conocido como nombre entre comillas dobles),no [ColName] (también conocido como nombre en 2 corchetes)!

Por lo tanto, ¿hay alguna manera de agregar el comando Ordenar a la fórmula Dax? Sin este comando Ordenar, los resultados de la tabla no se ordenarán y la función TopN no me dará para corregir el registro que tiene el valor más pequeño (ASC ordenado) o más grande (DESC ordenado).

Saludos

Su

@SuNguyen , Resumir crear tabla y se puede ordenar en el resultado como desee en power bi.

Si usa DAX studio, el pedido fuera del resumen debería funcionar

https://dax.guide/st/order-by/

SUMMARIZE(Sales_2017,Sales_2017[CustomerKey],"TotalOrderQty",SUM(Sales_2017[OrderQuantity]))

pedido por [TotalOrderQty]

Hola Amit Chandak,

He probado vuestro enlace y desafortunadamente nada trabajó. Creo que la fórmula de expresión DAX en Power BI no permite esta función EVALUATE,por lo que no se puede usar la palabra clave ORDER BY (una parte de la instrucción EVALUATE). Pls echa un vistazo a esta imagen de abajo:

SuNguyen_0-1630059040656.png

CustomCol = EVALUATE SUMMARIZE(AW_Sales_2017,AW_Sales_2017[CustomerKey],"TOQ",SUM(AW_Sales_2017[OrderQuantity])) ORDER BY [TOQ]

En la línea de códigos anterior, evaluate, ORDER BYy [TOQ] no se pueden usar en Power BI. La tabla se puede ver ordenada en la pestaña Vista de datos, pero de hecho, sin ninguna función clara permitida para ordenar en la línea anterior, cualquier medida creada no producirá el resultado que tiene la columna [TOQ] ordenada!

Empiezo a adivinar que no hay forma de escribir una expresión de Dax en Power BI que pueda ordenar una tabla. Todo lo que los usuarios pueden hacer es hacer clic en el botón visual de este software para ordenar y ver el resultado temporal en la vista de datos.

Saludos

Su

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.