Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.
¡Hola!
Actualmente estoy creando un estado de resultados y tengo algunos problemas de rendimiento con mi mesa central. Para dar un poco de contexto, tengo una tabla de hechos, que contiene todas las entradas, cada una vinculada a una cuenta específica, una tabla que contiene todos los nombres de los indicadores, con un identificador único, y una tabla que contiene todas las cuentas, cada una vinculada a un indicador específico.
Entrada:
Fecha | CuentaNo | Importe | Tipo (ACT o BGT) |
KPIDim:
Identificación | Nombre | Posición |
AccountDim :
No | Nombre | KPIIs |
Las relaciones son las siguientes:
KPIDim[Id] -> AccountDim[KPIId]
AccountDim[No] -> Entry[AccountNo]
Luego, creé una medida para cada indicador. Algunos de ellos utilizan directamente la columna KPIId de la tabla AccountDim, y otros, como el margen bruto, por ejemplo, simplemente agregan la medida de otros indicadores.
Ventas Reales = CALCULAR(SUMA(Entrada[Importe]), Entrada[Tipo]="ACT", KPIDim[Id]="ventas")
Costos Reales = CALCULAR(SUMA(Entrada[Cantidad]), Entrada[Tipo]="ACT", KPIDim[Id]="Costos")
Margen Real = [VentasReales] - [CostesReales]
Con una medida final que selecciona el indicador correcto, con un caso de interruptor:
SelectedIndicator = SWITCH(SELECTEDVALUE(KPIDim[Id],
"sales", ActualSales,
"costs", ActualCosts,
"margen", ActualMargin,
EN BLANCO())
La tabla que quiero crear usa el objeto visual Matrix de PowerBI y contiene:
Filas:
Columnas:
Valores:
La pregunta que me hago ahora es cómo hacer que la tabla muestre las cuentas (subnivel) bajo el indicador SOLO si las contiene directamente. Este sería el caso de las ventas y los costos, pero no del beneficio bruto. Así que necesitaríamos una tabla como esta (aquí solo se muestra el valor real):
Enero | Febrero | Marzo | |
Ventas | 10 | 12 | 15 |
Cuenta A | 6 | 7 | 7 |
Cuenta B | 4 | 5 | 8 |
| |||
Costos | 3 | 5 | 7 |
Cuenta C | 1 | 3 | 4 |
Cuenta D | 2 | 2 | 3 |
| |||
Margen bruto | 7 | 7 | 8 |
Pero por ahora, el resultado es el siguiente:
Enero | Febrero | Marzo | |
Ventas | 10 | 12 | 15 |
Cuenta A | 6 | 7 | 7 |
Cuenta B | 4 | 5 | 8 |
| |||
Costos | 3 | 5 | 7 |
Cuenta C | 1 | 3 | 4 |
Cuenta D | 2 | 2 | 3 |
| |||
Margen bruto | 7 | 7 | 8 |
Cuenta A | 6 | 7 | 7 |
Cuenta B | 4 | 5 | 8 |
Cuenta C | 1 | 3 | 4 |
Cuenta D | 2 | 2 | 3 |
He logrado lograr este resultado mediante el uso de un grupo de cálculo, que obliga a ocultar las cuentas para ciertos indicadores, pero la tabla tarda mucho en actualizarse cuando selecciono otro año. Los elementos del grupo de cálculo son los siguientes:
Solved! Go to Solution.
Creo que el principal problema que explica por qué la actualización de mi matriz fue tan lenta, es que calculé medidas que estaban "imbricadas". He cambiado completamente la forma de mi modelo, de modo que las reglas para calcular mis indicadores se aplican en columnas de una tabla AccountDim. Luego, al establecer las relaciones correctas, la matriz es fácil de construir y las actuaciones son excelentes.
Creo que el principal problema que explica por qué la actualización de mi matriz fue tan lenta, es que calculé medidas que estaban "imbricadas". He cambiado completamente la forma de mi modelo, de modo que las reglas para calcular mis indicadores se aplican en columnas de una tabla AccountDim. Luego, al establecer las relaciones correctas, la matriz es fácil de construir y las actuaciones son excelentes.
Hola @v-yangliu-msft,
Gracias por su respuesta.
En realidad, el modelo que creaste no se parece realmente a lo que di en mi mensaje, pero tengo la sensación de que la idea detrás de la solución que proporcionaste es la misma que la mía. Creo que me ceñiré al método que he encontrado, aunque no sea muy rápido... Realmente no encuentro ninguna otra solución aquí, desafortunadamente.
Hola @benjos23 ,
Puedes probar la siguiente medida:
Hide =
var _column=
{"grossSales", "netSales", "materialLoad", "inventoryChange", "merchandiseLoad", "margin", "margin2", "ebitda", "ebit", "operatingIncome", "netIncomeAfterTax", "cashflow" }
var _table=
SUMMARIZE(ALL('AccountDim'),[Name of indicator],[Account the indicator contains],[Id],[Month],"Value_True",SUMX(FILTER('AccountDim',NOT('AccountDim'[Id]) in _column),[Value])
)
return
IF(
HASONEVALUE('AccountDim'[Account the indicator contains]) ,
SUMX(
FILTER(_table,[Name of indicator]=MAX([Name of indicator])&&[Account the indicator contains]=MAX([Account the indicator contains])&&[Month]=MAX([Month])),[Value_True])
,
IF(
HASONEVALUE('AccountDim'[Name of indicator])&&NOT(HASONEVALUE('AccountDim'[Account the indicator contains])),SUM('AccountDim'[Value]),BLANK())
)
Si el dax anterior no cumple con sus expectativas, ¿puede compartir datos de muestra y salida de muestra en formato de tabla? O un ejemplo de pbix después de eliminar datos confidenciales. Podemos entender mejor el problema y ayudarle.
Saludos
Liu Yang
Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.