ukeasyproj
Solo un pequeño resumen de la tabla de arriba:
El nombre del proyecto, el nombre de la categoría y el nombre de la cartera son de una tabla llamada «Proyectos».
Real, comprometido son de una tabla llamada ‘Gastos’
Los proyectos son una relación de uno a muchos con los gastos.
En el escenario anterior, el proyecto «proyecto de prueba de cáncer 5» no tiene registros relacionados en la tabla Gastos, por lo que se muestra en blanco, ¿hay alguna manera de mostrar 0 en su lugar?
Intenté hacer lo siguiente en la tabla Proyectos, pero obtuve resultados inesperados: Actual = IF (ISBLANK (SUMX (RELATEDTABLE (‘Gastos’), [Actual])) = FALSO (), SUMX (RELATEDTABLE (‘Gastos’), [Actual]), 0)
Vvelarde
@ukeasyproj
Hola, prueba con esta fórmula Dax en una medida:
ActualM = IF ( CALCULATE ( SUM ( Expenses[Actual] ) ) = BLANK (), 0, CALCULATE ( SUM ( Expenses[Actual] ) ) )
Sean
En respuesta a Vvelarde
Incluso más fácil sería agregue cero a su medida
Entonces no necesitas una declaración IF para comprobar si la expresión devuelve EN BLANCO ()
Entonces, si su medida SUMX funciona, elimine la declaración IF y simplemente agregue » + 0 «al final
lo mismo con si usa cualquier otra expresión (algo como esto, por ejemplo)
Measure = CALCULATE ( SUM (table[column] ), FILTER (... ) ) + 0
¡Esto asegurará que obtenga un 0 cuando esté en blanco!
¡Buena suerte!
ACTUALIZACIÓN: marzo de 2020
Nueva función DAX COALESCE: devuelve el primer argumento que no está en blanco.
Si todos los argumentos vuelven en blanco, entonces COALESCE también vuelve en blanco.
Entonces si necesita un cero devuelto y no en blanco y sus Medidas no abordan los espacios en blanco por sí solas
Agrega un cero como último argumento en caso de que todas las medidas devuelvan espacios en blanco!
COALESCE ( [Measure1], [Measure2], 0 )
Tonymaclaren
Hola
Existe una solución aún más limpia con el nuevo comando COALESCE Dax. No se requiere CALCULAR:
ActualM :=
COALESCE ( SUM ( Expenses[Actual] ), 0 )
Puedes hacerlo aún más poderoso:
COALESCE ( [MyMeasure], [DefaultMeasure] )
Marque como una solución.
Sean
En respuesta a Tonymaclaren
¿Se da cuenta de que su solución «aún más poderosa» podría volver a aparecer en blanco, verdad?
A menos que agregue un cero como tercer argumento o cada una de sus 2 medidas aborde cómo manejar el espacio en blanco por su cuenta.
Regrese y lea el párrafo justo debajo de la solución «aún más poderosa» que copió desde aquí …
https://www.sqlbi.com/articles/the-coalesce-function-in-dax/
ericcamingao
En respuesta a Sean
Hola,
La idea de COALESCE fue genial. Pero, ¿cómo puedo ocultar los meses anteriores a la fecha de inicio y los meses posteriores a la última fecha?
Gracias.
Anónimo
Hola,
¿Hay alguna idea de cómo reflejar «0» cuando hay una lista de países en la tabla, pero un país no tiene ningún resultado?
El objetivo es mostrar que todos los países tienen algo, incluso si solo es cero, por lo que el mal resultado lo empujaría a agregar algunos productos también.
Ni siquiera puedo ver el país en la tabla que obtengo de la base de datos a través de Power bi, pero sé que está allí 🙂
mdawesdigitalk
También tengo un problema similar que no puedo entender … y el método «+0» no lo ha resuelto.
Tengo un modelo complejo, pero para este propósito lo he despojado de lo básico y aún no puedo resolverlo, aunque creo que lo hice anteriormente.
En términos simples, tenemos una base de clientes que no está activa todos los meses en todos los productos.
Por lo tanto, al comparar un mes de Ventas con otro, obtiene entradas en blanco en la base de datos como parte de la carga de datos relacionada con los Clientes, como se indica a continuación (eliminando la variable de producto para simplificar aún más las cosas);
1 tabla (DATOS) con 3 miembros como sigue Cliente, Mes y Ventas
Cliente1, mes1, 100
Cliente1, mes2, 200
Cliente1, Mes3, 50
Cliente2, mes1, 75
Cliente2, Mes3, 40
Cliente3, Mes2, 78
Cliente3, Mes3, 80
Por lo tanto, Cust1 está activo es todos los meses, Cust2 está activo en todos los meses menos Month2 y Cust3 activo es todos los meses menos Month1.
Mi problema es que estoy tratando de generar un informe simple de variación de ventas (mes actual – mes anterior) en todos los meses para todos los clientes. Mi saldo total, pero en el análisis del Cliente faltan filas en las que el Cliente no está activo en el «Mes actual»; tabla de ejemplo a continuación para el mes 2 como mes actual
Cust1 CntMth = 200, PrvMth = 100, SalesMove = 100
Cust3 CntMth = 78, PrvMth = 0, SalesMove = 78
Totales CntMnth = 278, PrvMnth = 175, SalesMove = 103
Lo que falta es la línea Cust2 de CntMnth = en blanco (por lo que no se incluye), PrvMnth 75, SalesMove = -75
[Note in my model I have actual dates of «01/09/2019, 01/10/2019, 01/11/2019» respectively but have kept things generic here.]
Las medidas que he utilizado son las siguientes, pero la adición de «+0» no ha resuelto los problemas ya que quedan los espacios en blanco;
CntMnth = CALCULAR (suma (DATOS[Sales]), DATEADD (DATOS[Month], 0, MES)) + 0
PrvMnth = CALCULAR (suma (DATOS[Sales]), DATEADD (DATOS[Month], 0, MES)) + 0
SalesMove = CALCULAR([CntMnth] – [PrvMnth]) + 0
Cualquier orientación, que supongo que es muy básica y simple, se agradece, ya que acabo de tener un bloqueo total en esto, y no debería haberlo hecho …
Gracias
Marcos
Sean
En respuesta a mdawesdigitalk
@mdawesdigitalk
No necesita agregar un cero para calcular el actual frente al anterior si eso es todo lo que está tratando de hacer.
¿Las medidas que ha enumerado para el aspecto actual y anterior son exactamente iguales? (excepto los nombres de las medidas)
Dateadd solo funciona si tiene una lista de fechas consecutivas, así que supongo que tiene una tabla de calendario.
Tenga en cuenta que las medidas actual y anterior hacen referencia a la columna Fecha en la tabla Calendario en el ejemplo siguiente que sería ‘Fecha'[Date]
Sin embargo, no usaría dateadd en este caso.
Más bien, crearía estas 4 medidas
Sales Amount = SUM ( Data[Sales] )
Current Month = TOTALMTD ( [Sales Amount], 'Date'[Date] )
Previous Month = CALCULATE( [Sales Amount], PREVIOUSMONTH ( 'Date'[Date] ) )
Cur - Prev = [Current Month] - [Previous Month]
La medida final debería proporcionarle el resultado que busca.
¡Espero que esto ayude! 🙂
Aks-1
Hola @ sphillips22,
Muchas gracias por la respuesta. ¡Funcionó! . Aunque tengo una pregunta, también estoy mirando los elementos que no están presentes en la base de datos, tengo una situación en la que hay una medida calculada que cae en un cuadrante específico (período) pero como los datos no están en la base de datos, se muestra como en blanco pero quiero mostrarlo o mostrarlo tiene 0.00.
Lo que estoy tratando de decir es que cuando lo exporto a Excel, ese período o registro no está presente en la base de datos.
Consulte la captura de pantalla:
¡Cualquier ayuda es muy apreciada!
Gracias.
sphillips22
En respuesta a Aks-1
@ Aks-1 para su pregunta sobre los cuadrantes que muestran espacios en blanco, ¿puede publicar la fórmula dax que le corresponde?
Aks-1
En respuesta a sphillips22
Hola @ sphillips22,
Muchas gracias por la respuesta. La fórmula DAX que estoy usando es
CALCULAR (SUMA (POC[Money_Paid]), FILTRO (TODOS (POC), POC[ACCTG_Period] <= MAX (POC[ACCTG_Period])), VALORES (POC[LY]) +0
Tenga en cuenta que para los datos que no tienen un valor en la fila, se muestran como 0.00 como se muestra en la captura de pantalla, pero dado que la parte del encabezado se deriva, no tiene datos en la base de datos que me gustaría mostrar como 0.00 en lugar de en blanco.
Gracias.
sphillips22
En respuesta a Aks-1
@ Aks-1 es un poco difícil de determinar sin ver las definiciones de la tabla, sin embargo, comenzaría por eliminar la cláusula VALUES () al final de la función CALCULATE. La nueva medida de dax se leería de la siguiente manera:
Medida: =
CALCULAR(
SUM (POC[Money_Paid]),
FILTRO (TODO (POC), POC[ACCTG_Period] <= MAX (POC[ACCTG_Period]))
) + 0
También puede ser que necesite usar el «+ 0» después de la paréntesis de cierre de la función CALCULAR.
Al utilizar la función VALORES, está filtrando efectivamente la función CALCULAR para aplicar solo a los valores únicos «LY» en la tabla POC. Esto puede estar causando el resultado no deseado de valores en blanco, para aquellos valores LY que no están en la tabla POC.
Avísame si eso funciona para ti.
Ashish_Mathur
En respuesta a Aks-1
Hola,
Comparta algunos datos y muestre el resultado esperado.
Aks-1
En respuesta a Ashish_Mathur
Hola @Ashish_Mathur,
Encuentre un ejemplo que tengo a continuación que muestra valores en blanco en las celdas 9, 12, 30 y 33, etc., ya que los datos para estos períodos trimestrales no hay datos o no hay registros presentes en la base de datos, el requisito es completar estas celdas con 0.00 en lugar de dejarlo en blanco.
Gracias
Vvelarde
@ukeasyproj
Hola, prueba con esta fórmula Dax en una medida:
ActualM = IF ( CALCULATE ( SUM ( Expenses[Actual] ) ) = BLANK (), 0, CALCULATE ( SUM ( Expenses[Actual] ) ) )
adhikari707
En respuesta a Vvelarde
Hola @Vvelarde
Estoy usando la misma lógica que funciona siempre que tengamos datos provenientes de la tabla dimensional.
Si agregamos campos de 2 o más tablas, ¿está duplicando los datos?
¿Cómo podemos eliminar los duplicados?
Gracias
Simo
En respuesta a Vvelarde
ActualM = SUM ( Expences[Actual]) +0
ericcamingao
En respuesta a Vvelarde
Hola,
Esto fue útil. Sigo este DAX, pero ¿cómo puedo ocultar los meses antes del mes de inicio y después del mes de finalización? También aparecen con ceros.
Gracias.
Anónimo
En respuesta a Vvelarde
Gracias funcionó
Sean
En respuesta a Vvelarde
Incluso más fácil sería agregue cero a su medida
Entonces no necesitas una declaración IF para comprobar si la expresión devuelve EN BLANCO ()
Entonces, si su medida SUMX funciona, elimine la declaración IF y simplemente agregue » + 0 «al final
lo mismo con si usa cualquier otra expresión (algo como esto, por ejemplo)
Measure = CALCULATE ( SUM (table[column] ), FILTER (... ) ) + 0
¡Esto asegurará que obtenga un 0 cuando esté en blanco!
¡Buena suerte!
ACTUALIZACIÓN: marzo de 2020
Nueva función DAX COALESCE: devuelve el primer argumento que no está en blanco.
Si todos los argumentos vuelven en blanco, entonces COALESCE también vuelve en blanco.
Entonces si necesita un cero devuelto y no en blanco y sus Medidas no abordan los espacios en blanco por sí solas
Agrega un cero como último argumento en caso de que todas las medidas devuelvan espacios en blanco!
COALESCE ( [Measure1], [Measure2], 0 )
MylèneB
En respuesta a Sean
¡Hola!
Usé el ‘+0’ para mostrar) en lugar de espacios en blanco y estaba funcionando bien. Pero, hoy usé lo mismo y ahora se muestra en blanco en lugar de 0, ¿hay alguna actualización o configuración en la tabla que deba cambiar? ¡Gracias!
KarthikKV
En respuesta a Sean
Gracias por la solucion 🙂