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, estoy en el proceso de dividir un informe de Power BI en dos. El Modelo Semántico 1 albergará los datos históricos de Contacto/Cuenta con las medidas asociadas y el Informe B albergará los datos de puntuación de las pruebas que deben hacer referencia al Modelo Semántico 2. Lo hacemos utilizando un modelo compuesto con una conexión en tiempo real con el modelo semántico 1.
Actualmente estoy determinando si un contacto pasó usando una medida que es una instrucción SWITCH grande que define las reglas de calificación separadas en función de cada perfil de contacto.
Certified =
SWITCH(
TRUE(),
SELECTEDVALUE('Contact'[Role]) = "Sales",1,
SELECTEDVALUE('Contact'[Role]) = "Academic",1,0
)
Mi problema es que luego uso una medida SUMX ADDCOLUMNS para agregar lo anterior, que no parece estar permitido en DirectQuery.
# Certified =
SUMX(
ADDCOLUMNS(
'Contact',
"Certified",[Certified]
),
[Certified]
)
¿Hay tal vez una mejor manera de abordar esto?
Yo probaría esto primero:
# Certified = SUMX ( 'Contact', [Certified] )
¡Gracias! De hecho, intenté esto primero, pero obtuve un error. Resultó que el error se debía a que el modelo conectado en vivo tenía un error de columna no relacionado. Ahora, cuando hago esto, no obtengo un error, pero Power BI simplemente gira. Parece ser incapaz de producir el cálculo.
Iterar a través de una tabla y hacer una transición de contexto y un cambio para cada fila es una forma realmente ineficiente de hacer este cálculo.
Recomendaría algo más como esto:
# Certified =
CALCULATE (
COUNTROWS ( Contact ),
Contact[Role] IN { "Sales", "Academic" }
)
O como esto
# Certified =
COUNTROWS (
FILTER (
Contact,
Contact[Role] IN { "Sales", "Academic" }
)
)
Gracias Alexis. Estoy de acuerdo en que probablemente haya una manera mucho mejor, pero probablemente también simplifiqué demasiado la medida Certificado en mi ejemplo. El usuario final tiene un conjunto diferente de criterios para cada uno de estos roles. Es más parecido a esto (que todavía está simplificado):
Certified =
SWITCH(
TRUE(),
SELECTEDVALUE('Contact'[Role]) = "Sales" && [Sales Test Passes]>0,1,
SELECTEDVALUE('Contact'[Role]) = "Academic" && [Academic Test Passes]>0,1,0
)
Donde cada validación de SWITCH utiliza un conjunto de reglas completamente separado para cada rol. Devuelvo un booleano y, a continuación, itero ese resultado sobre la tabla de contactos. El resultado deseado es que para cada registro de contacto, sé si están certificados o no. Tampoco puedo hacer una columna calculada, ya que requiere contexto de filtro.
En su ejemplo, eso me permitiría contar los registros de contacto en sí, pero no solo aquellos en los que el booleano Certificado = 1.
No estoy seguro, pero prueba esto
# Certified =
SUMX(
SUMMARIZE(
'Contact','Contact'[Role],
"Certified",[Certified]
),
[Certified]
)
¡Gracias! Probé esto, así como un par de otros enfoques. Parece que Power BI simplemente gira. Parece ser incapaz de producir el cálculo. Supongo que tal vez no le gusta que SUMX se use contra la fuente de datos conectada en vivo.
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.