CASE

Obtener dimensiones y métricas basadas en expresiones condicionales

Las instrucciones CASE le permiten crear campos en los que se use la lógica condicional para determinar sus valores. CASE se suele utilizar para crear categorías o grupos de datos. Por ejemplo, puede crear una instrucción CASE como la que se indica a continuación para agrupar valores de países seleccionados en una dimensión denominada Región de ventas:

CASE 
    WHEN País IN ("EE. UU.","Canadá","México")THEN "Norteamérica" 
    WHEN País IN ("Inglaterra","Francia")THEN "Europa" 
    ELSE "Otro" 
END

Para crear instrucciones CASE, debe poder editar una fuente de datos.

En este artículo:

Crear una instrucción CASE

Siga estos pasos para crear una instrucción CASE:

  1. Edite su fuente de datos.
  2. Haga clic en el signo + para crear un campo calculado.
  3. Dé un nombre al campo.
  4. En el campo de fórmula, introduzca la instrucción CASE.

Sintaxis de las instrucciones CASE

CASE
    WHEN condición THEN resultado
    WHEN condición THEN resultado
    WHEN condición THEN resultado
    ... 
    ELSE resultado 
END

Parámetros:

  1. condición: una expresión que da como resultado un valor booleano (verdadero o falso). Las condiciones pueden incluir dimensiones o métricas, pero no ambas.
  2. resultado: el valor que devuelve la expresión. Puede ser una dimensión, una métrica o un valor literal.
  3. ELSE resultado: es opcional y se corresponde con el valor predeterminado que devuelve la expresión si no se cumple otra condición.

Una instrucción CASE consiste en una o más condiciones lógicas (cláusula WHEN), seguidas del resultado que devuelve la expresión si se cumple la condición (cláusula THEN). Si no se cumple ninguna condición, la instrucción CASE devuelve el valor de la cláusula ELSE.

Condiciones WHEN

Una condición WHEN evalúa los datos y devuelve el valor "true" si se cumple la condición especificada o, si no se cumple, el valor "false". Las condiciones WHEN válidas pueden tener las siguientes funciones:

  • Comparar una dimensión o métrica con un valor literal utilizando un operador compatible.
  • Aplicar una concordancia de expresión regular a una dimensión o métrica.
  • Determinar si el valor de una dimensión o métrica es nulo (is null).
  • Determinar si una dimensión o métrica contiene un valor especificado en una lista.
  • Determinar si una dimensión o métrica no contiene un valor especificado en una lista.

Notas

No se pueden comparar las dimensiones ni las métricas entre sí. Es necesario compararlas con valores literales.

No puede mezclar dimensiones y métricas en las condiciones WHEN. Por ejemplo, no se admite lo siguiente:

CASE
    WHEN Color favorito = "rojo" AND Número secreto = 42 THEN ... // Fórmula no válida

Las condiciones WHEN contienen una dimensión o una métrica. No puede crear una condición que contenga únicamente un valor literal. Por ejemplo, no se admite lo siguiente:

CASE
    WHEN 1 THEN ... // Fórmula no válida

No es posible calcular ni usar funciones de campo calculado en las condiciones WHEN. Por ejemplo, no se admite lo siguiente:

CASE
    WHEN métrica1 + métrica2 > 4 THEN ... // error

Para evitar esta restricción, cree primero un campo calculado con la fórmula que desee usar. A continuación, utilice ese campo en la instrucción CASE. Por ejemplo:

1) Cree un campo calculado (Mi campo) con la siguiente fórmula:

métrica1 + métrica2

2) Utilice Mi campo en la instrucción CASE:

CASE
    WHEN Mi campo > 4 THEN ...

Resultados THEN

Las condiciones WHEN deben corresponderse con una cláusula WHEN, que especifica el valor que se devuelve si la condición se cumple. Si hay varias condiciones WHEN, se devuelve el resultado de la primera condición que se cumple.

Todos los posibles resultados de una instrucción CASE deben ser del mismo tipo. Por ejemplo, si la primera cláusula THEN devuelve texto, las demás cláusulas THEN y la cláusula ELSE también deben devolver texto.

Resultados ELSE

La cláusula ELSE le permite especificar un resultado predeterminado que se devuelve si no se cumple ninguna cláusula WHEN. Las instrucciones CASE solo pueden contener una cláusula ELSE.

Operadores de comparación

Puede incluir los siguientes operadores en las cláusulas WHEN:

  • =
  • !=
  • >
  • >=
  • <
  • <=

Los operandos que aparecen a ambos lados de los operadores de comparación deben ser del mismo tipo: de texto, numéricos o booleanos. Al menos uno de los operandos debe ser un campo, mientras que el otro puede ser de texto, numérico o booleano.

Ejemplos

CASE WHEN Medio != "CPC" THEN "gratis" ELSE "de pago" END

CASE WHEN Tiempo en la página <= 90 THEN 1 ELSE 0 END

Operadores lógicos

Puede añadir condiciones AND y OR a las condiciones WHEN. Utilice paréntesis para agrupar condiciones y definir el orden de precedencia.

Ejemplos

CASE WHEN Código ISO del país = "US" AND Medio = "CPC" THEN "US: de pago" ELSE "Otro" END

CASE WHEN REGEXP_MATCH(Título del vídeo, ".*Google Analytics*")  AND is_livestream = TRUE OR Duración del vídeo > 120 THEN "GA LIVE or LONG" END

Funciones de las instrucciones CASE

Puede utilizar las siguientes funciones en las condiciones WHEN.

¿Por qué no puedo usar otras funciones en las instrucciones CASE?

Las condiciones WHEN deben ser expresiones booleanas. Excepto en el caso de REGEXP_MATCH, las funciones de campo calculado devuelven resultados no booleanos (es decir, números, texto, fechas o códigos geográficos).

IS NULL

Devuelve el valor verdadero si el campo de entrada está vacío o es nulo.

Esta función solo está disponible dentro de las instrucciones CASE. No puede utilizar IS NULL en campos calculados independientes.

Sintaxis

campo IS NULL

Parámetros:

campo: la dimensión o métrica que se debe evaluar.

Ejemplos

El campo contiene Fórmula Resultados
b Campo IS NULL falso
  Campo IS NULL verdadero

IN

Devuelve el valor verdadero si el campo de entrada contiene alguno de los valores de la lista. Los valores del campo y de la lista deben ser del mismo tipo. La función IN devuelve valores completos y distingue entre mayúsculas y minúsculas. Para obtener concordancias de valor parcial o que no distingan entre mayúsculas y minúsculas, utilice la función REGEXP_MATCH.

Esta función solo está disponible dentro de las instrucciones CASE. No puede utilizar IN en campos calculados independientes.

Sintaxis

campo IN (Valor1, Valor2, ... ValorN)

Parámetros:

campo: la dimensión o métrica que se debe evaluar.

Ejemplos

El campo contiene Tipo de campo Fórmula Resultados
Roberto Texto Campo IN ('Roberto', 'Alicia') verdadero
Alicia Texto Campo IN ('Roberto', 'Alicia') verdadero
Jorge Texto Campo IN ('Roberto', 'Alicia') falso
20 Número Campo IN (10, 20) verdadero
10 Número Campo IN (10, 20) verdadero
100 Número Campo IN (10, 20) falso
Roberto Texto Campo IN ('Roberto', 20) error, porque el campo es de texto y 20 es un número. Para solucionar el problema, escriba "20" entre comillas.

NOT IN

Devuelve el valor "true" (verdadero) si el campo de entrada no contiene ningún valor de la lista. Los valores del campo y de la lista deben ser del mismo tipo. La función IN devuelve valores completos y distingue entre mayúsculas y minúsculas. Para obtener concordancias de valor parcial o que no distingan entre mayúsculas y minúsculas, utilice la función REGEXP_MATCH.

Esta función solo está disponible dentro de las instrucciones CASE. No puede utilizar NOT IN en campos calculados independientes.

Sintaxis

campo NOT IN (valor1, valor2, ...valorN)

Parámetros:

campo: la dimensión o métrica que se debe evaluar.
valor1,valor2, ...valorN: valores que se deben buscar.

Ejemplos

El campo contiene Tipo de campo Fórmula Resultados
Jorge Texto Campo NOT IN ('Roberto', 'Alicia') verdadero
Alicia Texto Campo NOT IN ('Roberto', 'Alicia','David') verdadero
Roberto Texto Campo NOT IN ('Roberto', 'Alicia') falso
20 Número Campo NOT IN (10, 20) falso
10 Número Campo NOT IN (10, 20) falso
100 Número Campo NOT IN (10, 20) verdadero
Roberto Texto Campo NOT IN ('Roberto', 20) error*

* El error se produce porque el tipo de campo es texto y 20 es un número. La fórmula sería válida si "20" estuviera entre comillas.

REGEXP_MATCH

Devuelve el valor "true" (verdadero) si el campo de entrada coincide con la expresión regular. El uso de esta función no se limita a las instrucciones CASE y se puede utilizar en otros tipos de campos calculados.

Más información sobre REGEXP_MATCH

¿Te ha resultado útil esta información?
¿Cómo podemos mejorar esta página?