Cálculo de una expresión solo si los valores involucrados no son nulos

Supongamos que estamos mostrando las ventas por mes usando la siguiente medida:

Sales = SUM(Sales[Amount])

(obviamente el campo que contiene el montante de cada venta es el campo Amount de la tabla Sales)

Y las ventas del mes anterior con la siguiente medida:

PM Sales = 
    CALCULATE(
        [Sales],
        DATEADD('Calendar'[Date], -1, MONTH)
    )

El resultado de llevar ambas medidas a una matriz mostrando por filas los meses es el siguiente:

Ventas y ventas del mes anterior por mes

Ahora queremos calcular el incremento de un mes para el siguiente, para lo que creamos una nueva medida:

MoM Sales = [Sales] - [PM Sales]

Si la llevamos a nuestra matriz obtenemos el siguiente resultado:

Incremento mensual

Vemos cómo esta última medida devuelve valores incluso cuando alguna de las dos medidas anteriores tomen un valor nulo, como ocurre en enero de 2015, mes para el que hay ventas pero, por ser el primer mes de la serie histórica, no tiene un valor asociado para el mes anterior. En estas circunstancias podríamos preferir que nuestra medida MoM Sales no devolviese ningún valor, lo que podemos conseguir fácilmente usando la función AND y comprobando si las dos medidas en las que se basa toman valores no nulos.

Concretamente, la expresión

AND([Sales], [PM Sales])

...comprueba si ambos valores son no nulos, y devuelve el booleano True en caso positivo (si no son nulos) o False en caso opuesto (si alguno es nulo), lo que nos permite reescribir nuestra medida MoM Sales para que solo devuelva un valor si se cumple dicha condición:

MoM Sales = 
    IF(
        AND([Sales], [PM Sales]),
        [Sales] - [PM Sales]
    )

Ahora, nuestra matriz muestra el aspecto deseado:

Incremento mensual solo cuando los valores involucrados no son nulos
DAX functions involved
Submitted by admin on Thu, 05/28/2020 - 15:30