Mostrar una medida como una columna en la matriz visual

Un usuario Pregunto ✅

ameyabhave

Quiero agregar una medida como una columna en una matriz visual de la siguiente forma:

La columna Suma es la medida que suma todos los valores de las siguientes columnas.

Photo8.png

No puedo poner la medida en el campo de la columna. Así que lo dejé caer en el campo de valor.

Photo9.png

DN-UP es el valor que se mostrará en todas las columnas restantes (es una columna calculada) y sum_all es la medida que estoy tratando de mostrar.

Sin embargo, obtengo la tabla en el siguiente formato:

Photo10.png

La fórmula que he usado para la medida es la siguiente:

SUMX('Table1','Table1'[DN-UP])

Por favor, dígame cómo podría mostrar la medida en forma de columna.

Cmcmahan

En respuesta a ameyabhave

¿Fueron correctas mis suposiciones sobre cómo se almacenan sus datos? Si no, ¿podría compartir cómo es almacenado? Además, como nota al margen, PUEDE cambiar la etiqueta en la columna de la matriz para que diga algo diferente a Total, si ese es el problema que tiene con la solución anterior. Verifique las opciones de formato de subtotales.

El método rápido y sucio

No estoy seguro de por qué lo necesita como una medida en lugar de como el total de la matriz, pero podemos hacerlo. Sin embargo, tendrá que ponerse un poco raro con la configuración de sus datos en ese momento. Esencialmente, lo que desea es una quinta categoría falsa que sea «Fila total» para cada Level3Type con datos en blanco, que luego use una medida para cambiar el método de cálculo de la celda según su categoría.

snipa.PNG

Y luego creé algunas medidas. Uno que sumaba todos los valores dentro de un Tipo de Nivel 3, uno que actuaba como un interruptor para mostrar la suma o la suma de la fila, según el contexto:

Sum Row = CALCULATE(SUM(Table3[DN-Up]), ALLEXCEPT(Table3, Table3[Level3Type]))
DN-Up Matrix Sum = IF(SELECTEDVALUE(Table3[Custom])="TheMeasure",[Sum Row], SUM(Table3[DN-Up]))

Y con eso obtienes este resultado:

snipb.PNG

Lo que le brinda el resultado que desea, pero agregar filas de basura a sus datos solo para una imagen es una forma realmente tonta de hacer las cosas.

La mejor manera

En su lugar, puede agregar una nueva tabla calculada que enumere cada uno de los tipos personalizados y agregar manualmente el nombre de la columna de suma de filas especial como un valor aquí. Relacione eso con su tabla original y utilícelo como sus columnas de matriz, junto con «Mostrar elementos sin datos» para mostrar la columna de la matriz.

Debe realizar modificaciones menores en la medida lógica IF para que verifique el SELECTEDVALUE de la nueva tabla. La matriz resultante se ve igual, pero es una LOTE más limpio desde la perspectiva de la gestión de datos.

Si necesita ayuda con la expresión DAX de creación de tablas, o si esto no tiene sentido para usted, haga más preguntas. Lo que estás haciendo suena fácil al principio, pero hacerlo Derecha requiere un poco de esfuerzo.

Cmcmahan

Así que mucho de esto depende de cómo estén configuradas las tablas. Si sus tablas están configuradas como su hoja de Excel, no funcionará muy bien, pero a partir de las imágenes que tomó de las opciones visuales, parece que está configurado más como esto:

Level3Name Personalizado DN-Up
Activos Param1 100
Activos Param2 50
Activos Param3 60
Activos Param4 90
Pasivo Param1 200
Pasivo Param2 100
Pasivo Param3 300
Pasivo Param4 100

Usando esos datos, simplemente los puse en una matriz visual y obtuve esto:

snipa.PNG

Si realmente está buscando que el valor 300 se repita en cada categoría, cambiaría su medida de esta manera:

Sum all = CALCULATE(SUM(Table3[DN-Up]), FILTER(ALLEXCEPT(Table3, Table3[Level3Type]),TRUE()))

y agréguelo como un valor en la tabla:

snipb.PNG

ameyabhave

En respuesta a Cmcmahan

Quiero una columna similar a la columna total en su primera tabla. Solo quiero que sea en forma de medida. También quiero que el nombre de la columna sea diferente.

Cmcmahan

En respuesta a ameyabhave

¿Fueron correctas mis suposiciones sobre cómo se almacenan sus datos? Si no, ¿podría compartir cómo es almacenado? Además, como nota al margen, PUEDE cambiar la etiqueta en la columna de la matriz para que diga algo diferente a Total, si ese es el problema que tiene con la solución anterior. Verifique las opciones de formato de subtotales.

El método rápido y sucio

No estoy seguro de por qué lo necesita como una medida en lugar de como el total de la matriz, pero podemos hacerlo. Sin embargo, tendrá que ponerse un poco raro con la configuración de sus datos en ese momento. Esencialmente, lo que desea es una quinta categoría falsa que sea «Fila total» para cada Level3Type con datos en blanco, que luego use una medida para cambiar el método de cálculo de la celda según su categoría.

snipa.PNG

Y luego creé algunas medidas. Uno que sumaba todos los valores dentro de un Tipo de Nivel 3, uno que actuaba como un interruptor para mostrar la suma o la suma de la fila, según el contexto:

Sum Row = CALCULATE(SUM(Table3[DN-Up]), ALLEXCEPT(Table3, Table3[Level3Type]))
DN-Up Matrix Sum = IF(SELECTEDVALUE(Table3[Custom])="TheMeasure",[Sum Row], SUM(Table3[DN-Up]))

Y con eso obtienes este resultado:

snipb.PNG

Lo que le brinda el resultado que desea, pero agregar filas de basura a sus datos solo para una imagen es una forma realmente tonta de hacer las cosas.

La mejor manera

En su lugar, puede agregar una nueva tabla calculada que enumere cada uno de los tipos personalizados y agregar manualmente el nombre de la columna de suma de filas especial como un valor aquí. Relacione eso con su tabla original y utilícelo como sus columnas de matriz, junto con «Mostrar elementos sin datos» para mostrar la columna de la matriz.

Debe realizar modificaciones menores en la medida lógica IF para que verifique el SELECTEDVALUE de la nueva tabla. La matriz resultante se ve igual, pero es una LOTE más limpio desde la perspectiva de la gestión de datos.

Si necesita ayuda con la expresión DAX de creación de tablas, o si esto no tiene sentido para usted, haga más preguntas. Lo que estás haciendo suena fácil al principio, pero hacerlo Derecha requiere un poco de esfuerzo.

ameyabhave

En respuesta a Cmcmahan

Hola Cmcmahan.

Gracias por su rápida respuesta.

Sí, la tabla está dispuesta de la misma forma.

Probaré los dos métodos que ha descrito y actualizaré la publicación.

Definitivamente es mucho más complicado de lo que parece la primera vez.

Cmcmahan

En respuesta a ameyabhave

El gran problema que lo dificulta es cómo se configura la matriz de PowerBI para determinar cuáles deben ser los valores para las filas / columnas en un punto dado.

Cuando agrega un campo al depósito de columnas, recorre en iteración todos los valores de ese campo para crear cada columna. Básicamente está llamando VALORES (Tabla[Column]) para determinar qué está disponible. Cuando todos sus valores deseados están en una columna de datos, esto es rápido y fácil. Desafortunadamente, no hay una manera fácil de agregar una sola columna adicional de datos a la matriz, ya que no puede agregar medidas como una columna. Las medidas no tienen múltiples valores para iterar, solo se evalúan de manera diferente según el contexto.

La mala forma simplemente regresa y agrega esos datos a la tabla original, donde la buena forma crea una nueva tabla que enumera los nombres de columna deseados y los vincula a la tabla original. Luego, la matriz itera a través de todos los valores posibles en la tabla para determinar las columnas que deben mostrarse. La medida determina cuándo se está evaluando en una categoría normal a través de relaciones de tabla frente a cuándo se está evaluando y la categoría es la categoría especial de «suma de filas».

ameyabhave

En respuesta a Cmcmahan

La nueva tabla calculada estaría en este formato, ¿verdad?

Photo11.png

¿Cómo agrego otra fila a una columna personalizada en la tabla calculada?

La tabla calculada debe crearse usando ADDCOLUMNS o SUMMARIZE?

Cmcmahan

En respuesta a ameyabhave

La tabla calculada se ve así esta:

Índice CustomVal
0 Parámetro1
1 Parámetro2
2 Parámetro3
3 Parámetro4
4 Sum_all

Y el índice no es del todo necesario. Lo usé para ordenar el orden de las columnas en la matriz. Puede crear la columna requerida con este dax:

Table 2 = UNION(VALUES(Table3[Custom]), {"Sum_all"})

VALUES devuelve una tabla de valores distintos en [Custom] y {} define una nueva tabla, en este caso con un valor «Sum_all». UNION une las columnas.

Puede usar GENERATE_SERIES al agregar una columna para crear un índice si eso le resulta útil.

Aessam

Solo estaba haciendo exactamente la misma pregunta, ¡espero que obtengamos una respuesta!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *