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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
cmckinney
Helper IV
Helper IV

Cambiar un valor en la matriz para mostrar todas las filas y no solo

En el ejemplo siguiente hay una lista de reglas. Quiero que se muestren en una matriz en la fecha con la que están relacionados. Lo que quiero decir con eso es que la matriz debe mostrar las fechas en la parte superior y luego todas las reglas asociadas con esa fecha en una lista debajo de ella. Actualmente sólo muestra la primera. ¿Hay alguna manera de mostrarlos todos? Gracias.

Aquí hay algunas capturas de pantalla relacionadas.

Matrix First 2.pngMatrix First.png

1 ACCEPTED SOLUTION
Greg_Deckler
Super User
Super User

@cmckinney - Puede utilizar CONCATENATEX para concatenar todas las reglas:

Measure = CONCATENATEX('Table',[Rule],",")

Pero tal vez poner fecha y regla columnas en una jerarquía en filas sería mejor?


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

12 REPLIES 12
Greg_Deckler
Super User
Super User

@cmckinney - Puede utilizar CONCATENATEX para concatenar todas las reglas:

Measure = CONCATENATEX('Table',[Rule],",")

Pero tal vez poner fecha y regla columnas en una jerarquía en filas sería mejor?


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Hola @Greg_Deckler

Gracias por la respuesta. Probé el CONCATENATEX, según su dirección, y encontré que no funcionará para esta situación. La razón es que necesito que cada uno sea una celda individual para poder mostrar si ha habido un cambio de una fecha a la siguiente. Tal vez poner todas las reglas en una columna no es la obra en esta situación.

Estaba pensando que podría ser mejor poner las reglas en las filas y las fechas en las columnas, así:

Rules.png

A continuación, cree una medida que muestre si la regla ha cambiado de una fecha a la siguiente. Hay una columna en el origen de datos que se denomina "Valor hash". Cuando cambia esa regla, también lo hace el valor hash. Esta es esencialmente la bandera que tenemos que mostrar ha cambiado en la Medida que se pondrá en los valores de la matriz. ¿Tiene sentido? Por favor, hágamelo saber si tiene más preguntas.

En esta página se muestra la columna de valores hash en los datos:

Rules 2.png

@cmckinney Sí, en realidad estaba pensando lo mismo cuando estaba respondiendo, pero estaba tratando de "responder al correo"!


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

@Greg_Deckler ¡Gracias!

¿Podría por casualidad mostrarme cómo hacer una medida que iría en la parte de valores de la matriz que muestra si hubo o no un cambio en la columna "Valor hash"?

Voy a aceptar su primera respuesta como una solución porque respondió a lo que mi pregunta originalmente fue.

@cmckinney - Si estoy entendiendo la situación correctamente, tal vez algo como:

Measure =
  VAR __Rule = MAX([Rule])
  VAR __CurrentDate = MAX([Analysis Run])
  VAR __CurrentHash = MAX([Hash])
  VAR __PreviousDate = MAXX(FILTER(ALL('Table'),[Analysis Run]<__CurrentDate),[Analysis Run])
  VAR __PreviousHash = MAXX(FILTER(ALL('Table'),[Analysis Run]=__PreviousDate && [Rule]=__Rule),[Hash])
RETURN
  IF(__PreviousHash <> __CurrentHash,1,BLANK())

Es una mejor suposición, avísame si eso no encaja en la cuenta.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

@Greg_Deckler ¡Impresionante! ¡Esto está tan cerca de trabajar! Aquí hay una captura de pantalla de lo que veo. Sólo necesito la primera columna para mostrar 0s y no 1s. ¿Tiene sentido? ¿Cómo modifico el DAX para que siempre muestre esa primera fila como 0?

Rules 3.png

@Greg_Deckler Olvidé mencionar esto, agregué una declaración if antes del final, pero desde entonces la he eliminado.

@cmckinney - OK, creo:

Measure =
  VAR __Rule = MAX([Rule])
  VAR __CurrentDate = MAX([Analysis Run])
  VAR __CurrentHash = MAX([Hash])
  VAR __PreviousDate = MAXX(FILTER(ALL('Table'),[Analysis Run]<__CurrentDate),[Analysis Run])
  VAR __PreviousHash = MAXX(FILTER(ALL('Table'),[Analysis Run]=__PreviousDate && [Rule]=__Rule),[Hash])
RETURN
  SWITCH(TRUE(),
    ISBLANK(__PreviousDate)||__PreviousDate<0||YEAR(__PreviousDate)<1900,0,
    __PreviousHash <> __CurrentHash,1,BLANK(),
    2
  )

@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

@Greg_Deckler bien, así que esto se está acercando tanto a lo que necesito. Modifiqué tu DAX un poco. Esto es lo que tengo hasta ahora:

Measure = 
  VAR __Rule = MAX([Rule])
  VAR __CurrentDate = MAX([Analysis Run])
  VAR __CurrentHash = MAX([Hashed Value])
  VAR __PreviousDate = MAXX(FILTER(ALL('analysis vAnalysisRunRuleDetails'),[Analysis Run]<__CurrentDate),[Analysis Run])
  VAR __PreviousHash = MAXX(FILTER(ALL('analysis vAnalysisRunRuleDetails'),[Analysis Run]=__PreviousDate && [Rule]=__Rule),[Hashed Value])
RETURN
  SWITCH(TRUE(),
    ISBLANK(__PreviousDate), 0,
    ISBLANK(__Rule), 0,
    __PreviousHash <> __CurrentHash, 1,
    BLANK(),2
  )
La expresión no funcionaba con el "__PreviousDate<0", así que lo dejé caer. Parece que está funcionando correctamente, me estoy metiendo en un problema aparte ahora.
Permítanme retroceder un poco por un segundo y espero poder definir más claramente el alcance. Lo que se necesita es que se produzcan 3 enteros diferentes a partir de esta medida. 1 si el hash asociado a la regla ha cambiado con respecto a la fecha anterior que se muestra actualmente en la matriz. 2 (este es nuevo y aún no he mencionado) si la regla es nueva en relación con las fechas mostradas en la matriz. Y finalmente un 0 si ninguna de las declaraciones anteriores son verdaderas. Usaré estos números para crear un formato condicional aplicado a los valores que se muestran actualmente en la matriz. 1 será rojo, 2 será azul y 0 permanecerá negro.
La medida funciona cuando se aplica a la matriz como un formato condicional en el que está convirtiendo todos los valores en rojo que tienen hashes diferentes de la fecha anterior en la tabla de datos que es por sí mismo. Debe aplicarse solo a lo que se muestra actualmente en la matriz. ¿Tiene sentido? Así que no importa cuál sea la primera columna de la matriz siempre será negra, entonces la siguiente columna comparará sus hashes con la columna anterior en la matriz y NO la fecha anterior en los datos.
Por favor, hágamelo saber si tiene más preguntas y gracias de nuevo por toda la ayuda. Soy bastante nuevo en Power BI y me está ayudando a una cantidad tremenda.
Aquí hay una captura de pantalla de lo lejos que hemos llegado:
Rules 4.png

@cmckinney Claro, encantado de ayudar. Así que, para ser claros, ¿todavía hay un problema o no? Lo siento, no estaba seguro de si estabas 100% felizmente feliz o no todavía.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

@Greg_Deckler

Sí, todavía hay un problema. El problema es que la medida debe depender de la matriz y no de la tabla. Lo que significa que el formato condicional funciona de acuerdo con lo que se muestra actualmente en la matriz. ¿Tiene sentido? Actualmente se formatea de acuerdo con lo que está en los datos en sí y no lo que se muestra en la matriz.

@Greg_Deckler

Bien, entonces en este punto este hilo / lo que estoy tratando de lograr se han vuelto enrevesados y confusos. Lo siguiente es tan hervido y conciso como creo que puedo hacer mis ideas. Hopefuly ayuda a aclarar las cosas.

Aquí hay un archivo de ejemplo que creo que ayudará. https://www.dropbox.com/s/gsaucwi6iqj1upv/RulesConditionalFormatDummy.pbix?dl=0

El objetivo final es conectar la medida a un formato condicional en la matriz.

El producto de la medida debe ser un 0 , 1 o 2.

1 - Si el valor hash ha cambiado de una regla a la siguiente.

2 - Si la regla es nueva

0 - Si no hay ningún cambio y la regla no es nueva

En el formato condicional 1 será rojo, 2 será azul y 0 permanecerá negro.

La primera columna de la matriz siempre debe permanecer en negro.

Aquí hay una captura de pantalla del archivo de muestra que hice. Observe que la segunda columna es azul. No debería ser azul porque el valor hash anterior no está en blanco y tiene el mismo valor hash de la fecha mostrada anteriormente.

Los únicos dos que deben ser formateados y están formateados correctamente son el rojo 'hashchange' y el azul 'newrule'.

Rule 6.png

Cuando se selecciona el conjunto de publicación 'Prueba combinada', la columna se vuelve azul. Esto no debería suceder porque es la primera columna de la tabla.

Rule 7.png

Helpful resources

Announcements
PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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