Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and a 50 percent discount on exams.
Get startedEarn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Querida comunidad de Power BI,
He escaneado el foro pero no podría conseguir cualquier solución para trabajar para la declaración de problema siguiente:
Tengo una tabla con varias columnas cargadas en Power BI Desktop a través de Direct Query con una conexión db2. Estoy tratando de crear una matriz que muestra una combinación de columna 1 y columna 2 en las filas, por ejemplo, AAA_BBB. Debe sumar todas las filas de la combinación AAA_BBB. Esto se hace fácilmente simplemente arrastrando la columna 3 (cantidades) a valores en la matriz con una columna combinada (columna 1 y 2) en las filas. A continuación, me gustaría mostrar la combinación inversa, por ejemplo, BBB_AAA en el área Valores. El objetivo es resaltar las diferencias entre el total de combinaciones coincidentes, por ejemplo, AAA_BBB es 10 pero BBB_AAA es 8. Debe ser igual. ¿Alguien tendría alguna sugerencia para que la fórmula de medida (o columna calculada?) se mueva a la implementación deseada?
Ejemplo de datos:
Columna 1 | Columna 2 | Columna 3 |
Aaa | Ccc | 10 |
Aaa | Bbb | 5 |
Ccc | Bbb | 4 |
Bbb | Ccc | 3 |
Ccc | Aaa | 10 |
Bbb | Aaa | 8 |
Aaa | Bbb | 2 |
Aaa | Bbb | 3 |
Bbb | Ccc | 1 |
Implementación deseada:
Columna 1 x 2 | Combinación de importe 1 | Combinación de importe 2 | diferencia |
AAA_BBB | 10 | 8 | 2 |
AAA_CCC | 10 | 10 | 0 |
BBB_CCC | 4 | 4 | 0 |
Gracias de antemano por sus sugerencias.
No @An0n ,
Si desea ordenar por [Diferencia], puede hacerlo directamente.
Seleccione los puntos suspensivos, seleccione Ordenar por-[Diferencia] y ordene descendente.
Saludos
Liu Yang
Si este post ayuda, entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente
Gracias por esta sugerencia, que de hecho resolvería el problema de clasificación.
¿Podrías echar un vistazo a cómo adaptar la parte "IN AAA_BBB, AAA_CCC, BBB_CCC" a continuación? En el conjunto de datos hay muchos más (alrededor de 50) valores de AAA, BBB, etc. y la cantidad de diferentes combinaciones y nuevos valores cambia de un período a otro.
Amount Combination 1 =
CALCULATE(
SUM('Table'[Column 3]),
FILTER(ALL('Table'),'Table'[Column 1 x 2]=MAX('Table'[Column 1 x 2])&&'Table'[Column 1 x 2]IN {"AAA_BBB","AAA_CCC","BBB_CCC"}))
No @An0n ,
Estos son los pasos que puede seguir:
1. Crear columna calculada.
Column 1 x 2 = 'Table'[Column 1]&"_"&'Table'[Column 2]
2. Crear medida.
Amount Combination 1 =
CALCULATE(
SUM('Table'[Column 3]),
FILTER(ALL('Table'),'Table'[Column 1 x 2]=MAX('Table'[Column 1 x 2])&&'Table'[Column 1 x 2]IN {"AAA_BBB","AAA_CCC","BBB_CCC"}))
Amount Combination 2 =
VAR _PIN=MAX('Table'[Column 2])&"_"&MAX('Table'[Column 1])
return
IF([Amount Combination 1]=0,BLANK(),
CALCULATE(SUM('Table'[Column 3]),FILTER(ALL('Table'),[Column 1 x 2]=_PIN)))
Difference = [Amount Combination 1]-[Amount Combination 2]
3. Resultado:
Saludos
Liu Yang
Si este post ayuda, entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente
Hola Liu Yang,
Gracias por su respuesta. El AAA BBB y el CCC eran apenas como ejemplo, hay realmente alrededor 60 entradas y así un múltiplo de eso como posibilidades (no todas las combinaciones existen, e.g. XXX y TTT). Tampoco hay ningún requisito para ordenar la columna 1 x 2 de ninguna manera, lo importante es que la diferencia se puede ordenar de alto a bajo. Espero que esto ayude y esperamos su sugerencia.
Gracias por la sugerencia. Sin embargo, la combinación de AAA y BBB debe mostrarse en una columna y como una sola entrada de fila (AAA_BBB debe mostrarse, sin BBB_AAA). Hay cientos de combinaciones en el conjunto de datos original, por lo que debería ser fácil ver la diferencia de la suma para esta posible combinación.
Gracias Jihwan_Kim, la solución está tomando forma. Desafortunadamente me encontré con el siguiente error: la columna calculada Rank CC no funciona porque la función 'RANKX' no está permitida como parte de las expresiones DAX de columna calculada en los modelos DirectQuery y estoy usando un modelo DirectQuery.
https://www.dropbox.com/s/1p7uhxi1ulzsrvo/anon.pbix?dl=0
Total de la combinación de AB: =
VAR _currentrank = [Ranking]
VAR _currentaxis =
MAX ( Datos [Eje AB CC] )
VAR _currentA =
MAX ( Datos[A] )
VAR _currentB =
MAX ( Datos[B] )
VAR _newtable =
ADDCOLUMNS (
TODOS ( Datos ),
"@Rank", RANKX ( ALL ( Data[AB Axis CC] ), Data[AB Axis CC],, ASC )
)
devolución
SI (
COUNTROWS (
FILTRO (
_newtable,
Datos[EJE AB CC] <> _currentaxis
&& Datos[A] = _currentB
&& Datos[B] = _currentA
&& [@Rank] < _currentrank
)
) >= 1,
EN BLANCO (),
IF ( ISFILTERED ( Data[AB Axis CC] ), SUM ( Data[Value] ) )
)
Agradezco mucho el esfuerzo. Parece que me estoy topando con un error final: "El conjunto de resultados de una consulta a un origen de datos externo ha superado el tamaño máximo permitido de las filas '1000000'".
También estaba buscando mostrar esto en formato Matrix, para poder escalar la visualización más adelante al tener otras columnas del conjunto de datos como filas.
Tal y como yo lo entiendo actualmente, la clasificación no es necesaria. La columna AB Axis CC puede tener las combinaciones ordenadas de cualquier manera, no tiene que ser alfabéticamente. El único requisito es poder ordenar la columna Diff de alto a bajo.