March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
Estoy tratando de usar la función COALESCE para completar los valores que faltan en una columna.
Hacer eso fue simple, pero cuando intento usar los valores de esa nueva medida, las agregaciones muestran valores como si fuera la columna original, por lo que debo estar haciendo algo mal.
Preparé estos datos de muestra (sample_data.pbix) que tienen estas tablas:
Tabla A:
Tabla B:
y una tercera tabla que utilizo para enlazar ambas así:
La medida que he creado se llama "coalesce_measure":
Y como puede ver, los valores de cada día son correctos, pero el total sigue siendo 11207 como si no se hubiera agregado el valor 9084. Intenté usar una tarjeta para mostrar la suma de la columna y es el mismo valor que aparece en el total de la matriz.
¿Qué debo hacer para poder usar la suma correcta? (14249)
¿Qué otras consideraciones debo tener al tratar con esta función? (Estoy asumiendo aquí que cualquier otra agregación que me gustaría hacer tendrá que ser tratada de una manera similar a la suma)
Muchas gracias de antemano.
Me alegro de haber ayudado 🙂
Claro, aquí hay una explicación:
Un punto general importante: dentro de un objeto visual, el cálculo de una medida en el nivel "total" es independiente del cálculo de la misma medida en los niveles de "fila" individuales.
La medida original era la siguiente:
coalesce_measure =
COALESCE (
SUM ( 'Table A'[value_A] ),
SUM ( 'Table_B'[value_B] )
)
Esta medida
Para fechas individuales, esto le dio el resultado esperado porque la granularidad de 'Tabla A' y 'Tabla B' resulta ser la fecha.
Sin embargo, a nivel total, ambas sumas no están en blanco porque, aunque pueden faltar fechas, existe al menos una fecha tanto en la 'Tabla A' como en la 'Tabla B'. Por lo tanto, se devuelve la suma de value_A.
En otras palabras, a nivel total,
La medida actualizada evita este problema mediante la iteración de una tabla de valores de fecha de la tabla de fechas mediante SUMX.
Para cada fecha, se calculan las sumas y se fusionan, luego se suman los resultados de cada fecha.
coalesce_measure by date =
SUMX (
VALUES ( dates[date] ), -- dates would also work
COALESCE( [Value A Sum], [Value B Sum] )
)
Para una fecha individual, los resultados son los mismos que los de la medida original.
Pero para varias fechas, el resultado ahora es correcto porque COALESCE se aplica por fecha.
Aquí hay un artículo relevante que recomendaría leer para comprender los iteradores y el contexto de las filas:
https://www.sqlbi.com/articles/row-context-in-dax/
¡Espero que eso ayude! 🙂
Saludos
Hola @ramasaurio
Si la lógica es fusionarse en el nivel de fecha, escribiría las medidas de la siguiente manera:
Value A Sum =
SUM ( 'Table A'[value_A] )
Value B Sum =
SUM ( Table_B[value_B] )
coalesce_measure by date =
SUMX (
VALUES ( dates[date] ), -- dates would also work
COALESCE( [Value A Sum], [Value B Sum] )
)
¿Te funciona a ti?
Esto funcionó perfectamente.
Creo que entiendo por qué funciona esta solución, estoy haciendo una tabla basada en los valores de la columna "fecha" de las fechas de la tabla y luego calculando el valor de cada fila fusionando las medidas de los valores A y B. Pero, ¿puedo preguntar por qué mi enfoque inicial no funciona? Soy bastante nuevo en Power BI, por lo que probablemente me falte algún concepto básico sobre cómo funcionan las medidas.
¡Gracias!
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.