Forum Discussion
Matriz de Power BI
Hola
Tengo una tabla con datos
| SLNO | ARTÍCULO | PLACE_CODE |
| 1 | A | 100 |
| 1 | A | 101 |
| 1 | A | 102 |
| 1 | A | 103 |
| 1 | A | 104 |
| 1 | B | 105 |
| 1 | B | 106 |
| 1 | D | 107 |
| 1 | C | 108 |
| 1 | C | 109 |
| 1 | C | 110 |
| 2 | D | 111 |
| 2 | D | 112 |
| 2 | A | 113 |
| 2 | A | 114 |
| 2 | A | 115 |
| 2 | C | 116 |
| 2 | C | 117 |
| 2 | C | 118 |
| 2 | B | 119 |
| 2 | A | 120 |
| 2 | B | 121 |
| 3 | C | 122 |
| 3 | C | 123 |
| 3 | C | 124 |
| 3 | A | 125 |
| 3 | A | 126 |
| 3 | D | 127 |
| 3 | D | 128 |
y estoy usando una matriz visual para visualizar los datos como
| SLNO | A | B | C | D |
| 1 | 5 | 2 | 3 | 1 |
| 2 | 4 | 2 | 3 | 2 |
| 3 | 2 | 3 | 2 |
y según mis requisitos, quiero usar colores para establecer el valor máximo y la brecha entre el valor máximo y el 2º valor máximo
es decir,
Gustar
En SLNO-1
5 es grande y 3 es el segundo grande
Así que Gap = 5-3 = 2 -> Color - Naranja oscuro
En SLNO -2
4 es grande y 3 es segundo grande
por lo que Gap = 4-3 = 1 -> Color - Naranja claro
Como sabio....
¿Hay alguna forma de lograrlo?
Gracias y saludos.
16 Replies
- Syndicate_Admin
Administrator
No creo que haya una manera de hacer esto directamente en el objeto visual de matriz actual. Puede intentar usar charticulator para crear un objeto visual de matriz personalizado. Puede establecer el color de fondo de cada "celda" usando una fórmula.
- Syndicate_Admin
Administrator
@BIswajit_Das
¿Qué pasa si la brecha no es 1 o 2?
¿Qué muestra el color verde en tu ejemplo?
¿Qué pasa si se encuentran los mismos valores para MAX o 2nd MAX? - Syndicate_Admin
Administrator
@BIswajit_Das , basándome en los datos de su muestra, se me ocurre lo siguiente.
1. Cree la siguiente medida.
Measure_Item = COUNT('Table'[ITEM])2. Cree la siguiente medida.
Gap = VAR A = CALCULATE(COUNTX(FILTER('Table','Table'[ITEM]="A"),'Table'[ITEM]),REMOVEFILTERS('Table'[ITEM])) VAR B = CALCULATE(COUNTX(FILTER('Table','Table'[ITEM]="B"),'Table'[ITEM]),REMOVEFILTERS('Table'[ITEM])) VAR C = CALCULATE(COUNTX(FILTER('Table','Table'[ITEM]="C"),'Table'[ITEM]),REMOVEFILTERS('Table'[ITEM])) VAR D = CALCULATE(COUNTX(FILTER('Table','Table'[ITEM]="D"),'Table'[ITEM]),REMOVEFILTERS('Table'[ITEM])) VAR MAX1 = MAX(MAX(MAX(A,B),C),D) VAR MAX2 = MINX(TOPN(2,SELECTCOLUMNS({A,B,C,D},"Value",[Value]),[Value],DESC),[Value]) RETURN IF([Measure_Item]=MAX1,MAX1-MAX2)3. Construye tu matriz de la siguiente manera.
4. Aplique la siguiente regla de formato condicional a [Measure_Item].
Después de ocultar los subtotales, tendrías la siguiente matriz.
No estoy seguro de por qué se muestra en verde para SLNO 3 Item C. Puede modificar el código en [Gap] o cambiar la configuración de formato condicional para satisfacer sus necesidades.
- Syndicate_Admin
Administrator
Hola @Fowmy , @johnyip , @Analytics1
Gracias por responder
Según el requisito
Cada artículo tiene colores específicos
es decir, para A es de color naranja oscuro a claro en función del espacio
y para C es de color verde oscuro a verde claro.
¿Qué pasa si la brecha no es 1 o 2?
Tomemos un valor medio, es decir, 5 y Gap >5 color oscuro y Gap < 5 claro
¿Qué muestra el color verde en tu ejemplo?
Como he escrito, cada elemento tiene un color específico¿Qué pasa si se encuentran los mismos valores para MAX o 2nd MAX?
Tómalo como un dibujo o un espacio en blanco, supongoGracias y saludos...
- Syndicate_Admin
Administrator
@BIswajit_Das
Creé una medida para el formato condicional llamada CF. También hice una tabla para elegir los colores de los elementos con colores que van del 1 al 10. Puede modificar esta tabla según sea necesario. Aquí está la medida.
El archivo se adjunta a continuación.CF = VAR __Item = SELECTEDVALUE( 'Table'[ITEM] ) VAR __T = ADDCOLUMNS( ALLSELECTED( 'Table'[ITEM] ) , "@Max" , [Count] ) VAR __Max1 = MAXX( __T , [@Max] ) VAR __Max2 = MAXX( FILTER( __T , [@Max] < __Max1 ) , [@Max] ) VAR __Gap = __Max1 - __Max2 VAR __Color = LOOKUPVALUE( Colors[Color] , Colors[Item] , __Item , Colors[Code] , __Gap ) RETURN IF( [Count] = __Max1 , __Color)- Syndicate_Admin
Administrator
Hola @Fowmy Gracias por el contenido
pero
Quiero colorear de acuerdo con el grupo Gap, pero cuando estoy modificando el contenido, no funciona
Uso de DAX :CF =FUERON __Artículo = SELECTEDVALUE( 'Mesa'[ARTÍCULO] )FUERON __T = ADDCOLUMNS( TODOS SELECCIONADOS( 'Mesa'[ARTÍCULO] ) , "@Max" , [Conteo] )FUERON __Max1 = MAXX( __T , [@Max] )FUERON __Max2 = MAXX( FILTRO( __T , [@Max] < __Max1 ) , [@Max] )FUERON __Hueco = __Max1 - __Max2FUERON _gapgroup = SI(__Hueco >= 0 && __Hueco <= 0.05,"0-5%",SI(__Hueco > 0.05 && __Hueco <= 0.1,"6-10%",""))VAR _check = IF(_gapgroup = "0-5%",1,IF(_gapgroup = "6-10%",2,0))FUERON __Color = LOOKUPVALUE( Colores[Color] , Colores[Artículo] , __Artículo , Colores[GRUPO] , _gapgroup )DEVOLUCIÓNSI( [Conteo] = __Max1 , __Color)
- Syndicate_Admin
Administrator
@BIswajit_Das , ¿es esto lo que estás buscando?
1. Cree la siguiente medida.
Measure_Item = COUNT('Table'[ITEM])2. Cree la siguiente medida.
Gap = VAR A = CALCULATE(COUNTX(FILTER('Table','Table'[ITEM]="A"),'Table'[ITEM]),REMOVEFILTERS('Table'[ITEM])) VAR B = CALCULATE(COUNTX(FILTER('Table','Table'[ITEM]="B"),'Table'[ITEM]),REMOVEFILTERS('Table'[ITEM])) VAR C = CALCULATE(COUNTX(FILTER('Table','Table'[ITEM]="C"),'Table'[ITEM]),REMOVEFILTERS('Table'[ITEM])) VAR D = CALCULATE(COUNTX(FILTER('Table','Table'[ITEM]="D"),'Table'[ITEM]),REMOVEFILTERS('Table'[ITEM])) VAR MAX1 = MAX(MAX(MAX(A,B),C),D) VAR MAX2 = MINX(TOPN(2,SELECTCOLUMNS({A,B,C,D},"Value",[Value]),[Value],DESC),[Value]) RETURN IF([Measure_Item]=MAX1,MAX1-MAX2)3.Cree la siguiente medida
Conditional formating = VAR i = SWITCH(MAX('Table'[Item]), "A",0.1, "B",0.2, "C",0.3, "D",0.4 ) VAR Result = [Gap]+i RETURN SWITCH(Result, 1.1, "#FFCB8F", // A: light orange (gap=1) 2.1, "#FF7F27", // A: orange (gap=2) 1.2, "#FFFEAA", // B: light yellow (gap=1) 2.2, "#FFF200", // B: Yellow (gap=2) 1.3, "#B5E61D", // C: light green (gap=1) 2.3, "#22B14C", // C: green (gap=2) 1.4, "#99D9EA", // light blue (gap=1) 2.4, "#00A2E8" // blue (gap=2) )4. Construya su matriz de la siguiente manera.
4. Aplique la siguiente regla de formato condicional a [Measure_Item].
Después de ocultar los subtotales, tendrías la siguiente matriz.
- Syndicate_Admin
Administrator
Hola , @johnyip no realmente
Tomemos su consulta anterior
CF = VAR __Item = SELECTEDVALUE( 'Table'[ITEM] ) VAR __T = ADDCOLUMNS( ALLSELECTED( 'Table'[ITEM] ) , "@Max" , [Count] ) VAR __Max1 = MAXX( __T , [@Max] ) VAR __Max2 = MAXX( FILTER( __T , [@Max] < __Max1 ) , [@Max] ) VAR __Gap = __Max1 - __Max2 VAR __Color = LOOKUPVALUE( Colors[Color] , Colors[Item] , __Item , Colors[Code] , __Gap ) RETURN IF( [Count] = __Max1 , __Color)Esto funciona bien con los valores de recuento
Pero según mi requisito, necesito valores porcentuales
A continuación, es necesario agruparlos
luego cree la matriz mencionada y
Agregue fondo en función del MAX% VAL y Gap_Group.