SWITCH

La función SWITCH evalúa una expresión y devuelve un resultado u otro en función del valor resultante de la evaluación, valor que se encontrará entre una lista de opciones.

Sintaxis
Hay dos posibles sintaxis para esta función:

SWITCH(
    expression,
    value, result
    [, value, result]…
    [, else]
)

SWITCH(
    TRUE(),
    condition, result
    [, condition, result]…
    [, else]
)

Parámetros
  • expression: Expresión a evaluar. Debe devolver un escalar.
  • condition: Expresión a evaluar. Debe devolver un booleano.
  • value: Valor constante con el que se comparará el resultado de la evaluación de la expresión.
  • result: Valor a devolver por la función si value coincide con el resultado de la evaluación de expression o si se satisface la condición incluida en el argumento condition previo.
  • else: Argumento opcional. Resultado a devolver si el resultado de la evaluación de expression no coincide con ningún value o si no se satisface ninguna de las condiciones incluidas en condition.
Valor devuelto

Un valor escalar de entre la lista de valores incluidos en value o en else.

Información adicional

Si no se incluye el argumento else y el resultado de la evaluación de expression no coincide con ningún value, SWITCH devuelve un Blank.

Si se añade como primer argumento la función TRUE(), los argumentos value pueden sustituirse por expresiones condicionales, devolviéndose el primer argumento result para el que se cumpla la condición correspondiente (véase ejemplo más adelante).

Ejemplos

En el siguiente ejemplo se evalúa el país al que se asocia la venta para generar una columna personalizada que contenga el continente:

Función SWITCH. Ejemplo de uso

Los valores con los que se compara el resultado de la evaluación de la expresión y los valores devueltos no tienen por qué ser del mismo tipo. En el siguiente ejemplo se calcula el coste de transporte como un porcentaje del valor de venta, porcentaje que varía para cada país:

Función SWITCH. Ejemplo de uso

Para probar la función no ya con valores, sino con expresiones condicionales, supongamos que definimos la medida

Ventas = SUM(FactSales[SalesAmount])

...sumando las ventas en el contexto actual. Si llevamos el campo conteniendo la lista de subcategorías y esta medida a una tabla, el resultado es el siguiente:

Función SWITCH. Ejemplo de uso

Si quisiéramos clasificar cada categoría según la cifra total de ventas con una escala del 1 al 3 (indicándolo con símbolos "$", por ejemplo), podríamos hacerlo usando la función SWITCH de la siguiente manera:

Clasificación = SWITCH(
    TRUE(),
    [Ventas]>1000000000, "$$$",
    [Ventas]>100000000, "$$",
    [Ventas]>0, "$",
    BLANK()
)

En esta medida, comparamos las ventas totales (en el contexto actual) con una cifra, y devolvemos un valor u otro en función de que la comparación se cumpla o no. El resultado es el siguiente:

Función SWITCH. Ejemplo de uso

Es de destacar que el resultado devuelto por la función es el primero para el que se cumpla la condición. Así, si la medida [Clasificación] se definiese de la siguiente forma (cambiando el orden de las comparaciones):

Clasificación = SWITCH(
    TRUE(),
    [Ventas]>0, "$",
    [Ventas]>100000000, "$$",
    [Ventas]>1000000000, "$$$",
    BLANK()
)

...el resultado sería el siguiente:

Función SWITCH. Ejemplo de uso

Como vemos, al cumplirse la primera condición para todas las subcategorías mostradas ([Ventas]>0), la función SWITCH devuelve siempre el resultado "$", que no es lo que buscamos.

Categoría
Lógicas
Enviado por admin el Mar, 04/12/2018 - 00:16