Resolución del ejercicio

Este escenario -variación del anterior- supone evaluar varias condiciones (si la categoría del producto cuya venta se está iterando es igual a “Hardware”, o a “Software”, etc.). Para esto podríamos usar funciones IF anidadas o, mucho mejor, la función SWITCH.

El enfoque más simple podría ser el hacer las comparaciones y devolver el resultado aplicando el IVA correspondiente. Es decir:

Total IVA = 
SUMX(
   Sales,
   VAR __category = RELATED(Category[Category])
   RETURN
      SWITCH(
         TRUE(),
         __category = "Hardware", [Amount] * (1 - Sales[Discount]) * 0.11,
         __category = "Software", [Amount] * (1 - Sales[Discount]) * 0.12,
         __category = "Furniture", [Amount] * (1 - Sales[Discount]) * 0.13,
         __category = "Services", [Amount] * (1 - Sales[Discount]) * 0.14
      )
)

La expresión evaluada como primer argumento de SWITCH es TRUE(), por lo que será este valor el que se compare con el resultado de evaluar las condiciones que ocupan los argumentos pares de SWITCH. El primero que coincida (es decir, la primera condición que se cumpla) será lo que determine el valor a devolver. Y estos resultados parciales (recordemos que estamos trabajando en el contexto de fila provocado por la función SUMX) se van a sumar para obtener el resultado final.

La medida, llevada a una tarjeta, devuelve el siguiente valor:

Total IVA