mostrar elementos sin datos como 0 en lugar de espacios en blanco

Un usuario Pregunto ✅

ukeasyproj

temp 1.PNG

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! Smiley feliz

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?

ericcamingao_0-1618385906942.png

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:

error4.PNG

¡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.

Table.PNG

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.

ericcamingao_0-1618385513003.png

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! Smiley feliz

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 🙂

Deja un comentario

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