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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
orbs
Helper I
Helper I

matriz ordenar filas DATE mientras toda la matriz está ordenada por otra columna - ¿cómo?

hola a todos, novato aquí.

Estoy creando un objeto visual de matriz, con una de las filas como FECHA (sin jerarquía de año/qtr/mes/día). la matriz se ordena utilizando una de las columnas, por lo que naturalmente, la columna "filas" (la columna situada más a la izquierda, que contiene la jerarquía de dimensiones) no está ordenada.

ahora, cuando expando las filas hasta el nivel DATE (que puede o no ser el último nivel), las fechas obviamente no están ordenadas, porque toda la matriz está ordenada por otra columna.

mi deseo es tener sólo las pocas filas del nivel DATE ordenadas (en orden descendente, es decir, la última fecha primero), pero dejar el resto de la matriz todavía ordenada como estaba. ¿cómo lograría eso?

gracias de antemano!

13 REPLIES 13
amitchandak
Super User
Super User

@orbs , La ordenación múltiple no se admite en el objeto visual de matriz. Puede registrar una idea :https://ideas.powerbi.com/ideas/

No es compatible, pero puede solucionarlo.

image.png
Cree una medida y devuelva el Importe para los totales. Y las fechas numéricas para las fechas individuales.

Ordene por esta columna, desactive el ajuste de palabras para los encabezados de columna, los valores y, a continuación, oculte la columna:

image.png
Br
J


Connect on LinkedIn

gracias @tex628, sí, eso es lo que quiero decir.

pero, ¿cómo puedo medir de manera diferente en función de la fila? para cualquier fila que no sea DATE, simplemente puedo devolver el valor de la columna de ordenación original; pero¿cómo puedo detectar que la fila es una fecha para que pueda devolver el valor numérico de la fecha?

tex628
Community Champion
Community Champion

La medida que utilicé en mi ejemplo es la siguiente:

Measure 2 = IF( SELECTEDVALUE('Table (2)'[Date]) = BLANK() , SUM('Table (2)'[Amount]) , SELECTEDVALUE('Table (2)'[Date]))


¿Puede aplicar esto a su modelo?

/ J


Connect on LinkedIn

ok, en mi caso la columna "Importe" no es una columna original en la tabla de origen, sino una medida que i definió en el objeto visual de matriz. Traté de referirse a eso como [Amount] en lugar de 'table'[Amount] pero eso no funciona, porque SUM() funciona en columnas 😞

también, debo confesar que no sigo muy bien la lógica (nuevo en DAX y todo...). parece que en esta nueva medida, todos los niveles jerárquicos por encima de DATE se rellenan con el mismo valor, que es la suma de toda la representación numérica de las fechas incluidas. ¿Es eso correcto?

tex628
Community Champion
Community Champion

Simplemente reemplace toda la declaración SUM() con su medida y creo que debería funcionar!

Measure 2 = IF( SELECTEDVALUE('Table (2)'[Date]) = BLANK() , [Measure] , SELECTEDVALUE('Table (2)'[Date]))


La idea con esta medida, es identificar las filas individuales que se correlacionan con una fecha específica y devolver algo que no sea la medida prevista. El objetivo es crear una para que las fechas individuales devuelvan valores numéricos que corresponden a su orden, al tiempo que devuelve el cálculo de medida real para cada otra fila.

Br
J


Connect on LinkedIn

ok veo, gracias!

hasta ahora tan bueno para que la sintaxis haga referencia a una medida en el objeto visual, en lugar de una columna en la tabla de origen. yay 🙂

sin embargo, las otras cuestiones siguen existiendo:

1) todos los niveles de categoría dentro de una fecha específica también reciben ese valor numérico de fecha, en lugar de su medida (fecha no es el último nivel jerárquico). empíricamente veo que están ordenados alfabéticamente, mientras que me gustaría que se ordenen por su medida.

2) si un nivel de categoría tiene sólo una fecha dentro (incluso si se debe al filtro), ese nivel de categoría también recibe ese valor numérico de fecha, y también lo hacen todos los niveles por encima de él, hasta la parte superior.

puede ser que el método para detectar la fila de fecha si no es suficiente. ¿puede explicar cómo funciona esa condición?

¿podría estar relacionado con que la medida que estoy usando no es una suma de cosas, sino una relación entre dos columnas?

tex628
Community Champion
Community Champion

Puede que no tenga tiempo hoy para proporcionar la solución completa, pero te voy a ejecutar a través de la idea central del dax que necesitamos para hacer esto.

La parte central de la medida es la sintaxis SELECTEDVALUE(). SELECTEDVALUE evalúa una columna, y si solo hay un valor único en esa columna, obtendrá ese valor- de lo contrario obtendrá BLANK().

La medida que usamos en la matriz se evaluará en cada fila de la matriz, tanto en totales como en filas individuales. Dependiendo de dónde se encuentra en la herencia SELECTEDVALUE(Table[Date]) devolverá la fecha o blank().

Si se evalúa junto a una fecha individual, solo habrá una fecha en la columna date durante el cálculo que se devolverá. Si se evalúa en el total general, habrá muchas fechas presentes en la columna de fecha, lo que significa que el valor seleccionado devolverá BLANK() en su lugar.


Así es básicamente como diferenciamos en qué parte de la fila-heirachy estamos.

Con respecto a sus problemas.

1. Si solo hay una fecha presente en una categoría más arriba, obtendrá la fecha en lugar del valor De medida. Esto puede evitar el uso de una instrucción IF y un recuento de filas para la tabla de fechas.

2. En cuanto a los niveles más bajos de la jerarquía es un poco difícil proponer algo sin conocer realmente la estructura exacta. Pero generalmente usaría la misma lógica que con las fechas, para identificar si desea devolver el valor de medida o algo más.


¡Te llamaré mañana y podremos echar un vistazo a cómo resolveremos esto exactamente!

Br
J


Connect on LinkedIn

Lo siento, no pensé que esta pregunta aparentemente simple evolucionaría en un desastre... 🙂

usted dice que:

"SELECTEDVALUE evalúa una columna, y si solo hay un valor único en esa columna, obtendrá ese valor - de lo contrario se obtiene BLANK(). "

Creo que la parte de "un solo valor" es la principal causa de la cuestión. tal vez se debe utilizar una función diferente para determinar el nivel de jerarquía? Me tropecé con la función IsInScope, va a investigar.

gracias de nuevo por todo su esfuerzo!

ok, por lo que IsInScope() es realmente bastante útil - devuelve true si la fila es una fila de fecha o inferior en la jerarquía. que resuelve para los niveles *arriba* la fila de fecha. ahora se centra en la identificación de filas *below* la fila de fecha...

tex628
Community Champion
Community Champion

Algo en la línea de esto es lo que estoy pensando que debería trabajar para la clasificación.

image.png

¡Incorpore el siguiente nivel de la jerarquía en el cálculo de ordenación para devolver los valores correctos para esas filas!

Br
J



Connect on LinkedIn

corrección: en esta nueva medida, todos los niveles jerárquicos *BELOW* DATE se rellenan con el valor numérico de la fecha a la que pertenecen. y si tengo un elemento con solo una fila DATE dentro, ese elemento también acepta ese valor numérico de fecha.

tex628
Community Champion
Community Champion

Veamos si te entiendo correctamente,

image.png

Tomando esta imagen como ejemplo. Desea que la cateogry se ordene por los totales. Pero, ¿las fechas deben ordenarse por el orden de las fechas en lugar de los importes individuales?

Br
J


Connect on LinkedIn

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors