La función CASE es fundamental en Data Studio para el tratamiento de datos: los manipula totalmente a nuestro antojo para poder tener tablas y gráficas personalizadas.

Ya en un post anterior hablamos de la anatomía de CASE en Data Studio. Pero básicamente es una concatenación de  en caso de ….si…entonces… y aplicar la lógica griega.

Te dejamos un vídeo para recordar cómo funciona.

Pero la mejor opción para entender cómo funciona CASE es ver 3 ejemplos prácticos que nos pueden dar más consistencia y veracidad a nuestros paneles de control.

Función Case métricas: valor null o sin valor

Data Studio toma el valor null cuando cuando la entrada está vacía o bien es nulo.

Y cuando ponemos un campo calculado donde una métrica arroje un valor y la otra no, nos dará null.

Por ello, uno de los primeros campos calculados que tenemos que crear es el de convertir null en 0, para que en la tabla nos cuadre.

Data Studio valor Null
Ejemplo de tabla de data studio con valor null. Fuente: Adroll

Otra opción es cuando queremos contabilizar una dimensión con la fórmula count, y no existe el que buscamos en particular:

Data Studio da la alternativa para que sea él mismo el que haga este campo calculado y no tengas que ir dimensión por dimensión ni métrica por métrica. Basta hacerlo desde el estilo (style):

Data Studio permite convertir null en 0 sin el campo calculado case
Data Studio permite convertir null en 0 sin el campo calculado case

Función Case dimensiones: agrupar dimensiones

Cuando aplicamos la función case para las dimensiones, nos permite crear un nuevo campo calculado donde organizar nuestras dimensiones de una manera más personalizada.

El ejemplo más claro es el de las campañas de Google Ads. Donde existen diferentes nomenclaturas. Muchas agencias o gestores de marketing digital eligen nombres de campaña donde se ponga:

  1. Localización / idiomas
  2. Network / Dispositivo
  3. Nombre del producto

En la cuenta demo de Google Analytics podemos ver dos ejemplos de nombres de campañas de Google Ads que son díficil de entender:

Campañas de Google Ads desde Google Analytics
Nombre de campañas de Google Ads siguiendo una nomenclatura privada

Tienen un código, GA – que podríamos deducir como Google Analytics – idioma, tipo de campaña, red y tipo de anuncio.

Para presentar un reporte a alguien enfocado en negocio o lejos del día de las campañas de Google Ads es un nombre poco amistoso. Un código oculto. Y es aquí donde entra la función CASE de Data Studio. Presentaremos la información limpia y ordenada, lista para que alguien la pueda procesar de una manera sencilla y  efectiva. Mutaremos el nombre por otro enfocado en negocio.

O por ejemplo si tenemos un negocio con centro de atención a ciertas horas, podríamos crear una dimensión en función a sus horas laborales y cómo funcionan las campañas cuando tenemos ese servicio y cuando no lo tenemos. De

Aquí podemos ver el ejemplo de la función CASE con dimensiones y nombrando esas campañas de una manera más amigable:

Para hacer esto, simplemente hemos creado esta función:

REGEXP_MATCH(Campaign,".*Page.*") then "DSA"
when REGEXP_MATCH(Campaign,".*AW.*") then "Keywords"
else "Others"
End

Lo importante aquí es entender qué dimensión queremos (Campaña, Ciudad, País, Día de la Semana, etc…) y ver cuántos patrones tiene.

Best Practices Data Studio con CASE

Para mejorar el uso de la función CASE deberíamos:

Expresiones regulares

  • Aprender y explotar las expresiones regulares para escalar la selección de las dimensiones o métricas

Nivel fuente de datos

  • Hacer el campo calculado con la función CASE a nivel fuente de datos.
campo calculado en fuente de datos Data Studio
Los campos calculados o fórmulas en Data Studio tienen el icono de Fx en la fuente de datos original

Hacer campos calculados de datos no originales

Cuando creamos nuevos campos calculados podemos tener problemas con datos que no son de orígenes pero creemos que sí. Por ejemplo el CTR de las campañas de Google Ads.

Data Studio importa el valor del CTR, no la fórmula.

Al crear una agrupación de campañas y ponerle el CTR, Data Studio no va a sumar los clics, las impresiones y hacer la división clics/impresiones.

Lo que va a hacer Data Studio es devolvernos un error de en la tabla o números falseados:

función case ejemplo en data studio
Ejemplo función case cuando no actualizamos métricas no primarias. En la tabla superior tenemos un CTR imposible: 269,12% cuando realmente es 1,83%. Ve el ejemplo en la Plantilla.

Por ello siempre habrá que crear CTR, CPC, Conversion Rate, Costo por Adquisición, etc… Y todas aquellas métricas formadas por otras dos métricas.

El consejo es ponerle en el nombre CF – de Calculated Field – o cualquier otro agregado que nos indique que es el CTR calculado y no importado. Porque tendremos dos métricas con el mismo nombre.

Conclusión

La función CASE dentro de Data Studio es una obligación de aprender como las fórmulas if o vlookup de Google Sheet. Nos permitirán afinar nuestros tableros y hacer más rápido el análisis de información.

Aprender CASE When no es una opción sino una obligación si queremos utilizar Data Studio.

Los campos calculados no se pueden importar a otras fuentes de datos. Utilizaremos en algunos casos siempre las mismas funciones case (por ejemplo para CTR), es útil tenerlas guardadas en una hoja para acelerar la implementación en nuevas fuentes de datos.

27 pensamientos en “2 Ejemplos de Función CASE When en Data Studio”

  1. AYUDA POR FAVOR !:
    he intentado hacer agrupaciones de campos usando este código y no me está funcionando:
    CASE
    WHEN REGEXP_MATCH(name, ‘.*mesero.*|.*Mesero*.’) THEN «MESERO»
    WHEN REGEXP_MATCH(name, ‘.*servilleta.*|.*Servilleta*.’) THEN «SERVILLETAS»
    WHEN REGEXP_MATCH(name, ‘.*carta.*|.*Carta*.’) THEN «CARTA»
    ELSE name
    END

    1. Hola Luis Fernando,

      Por un lado, ¿name, qué valor es?¿el campo se llama a así?
      Las comillas están mal:

      case when REGEXP_MATCH(name,».*(mesero|Mesero).*») then «MESERO»
      when REGEXP_MATCH(name,».*(servilletas|Servilleta).*») then «SERVILLETAS»
      WHEN REGEXP_MATCH(name,».*(carta.*|.*Carta).*») THEN «CARTA»
      else name
      End

      Saludos

  2. Hola buen día,
    Primero que nada felicitarte por tu post es muy completo, soy nuevo en el mundo de DataStudio y he estado buscando por todos lados como agrupar información repetida te pongo el ejemplo (Metricas: nombreAlumno, versionApp, fechasIngreso):
    Nombre alumno
    Alejandra Lopez Castro
    Alejandra Lopez Castro
    Rafael Perez Perez
    Rafael Perez Perez
    Rafael Perez Perez
    Rafael Perez Perez
    Alejandra Lopez Sandoval
    Alejandra Lopez Sandoval

    No encuentro la manera cómo agrupar por nombre repetido habrá una manera y así para cada una de las métricas mencionadas en la parte de arriba.
    Agradeceria mucho una respuesta de parte tuya.

    1. Hola Fernando,

      Los nombres de los alumnos deberían ser una Dimensión y no una métrica.
      Prueba a añadirlos como Dimensión y coméntame si te funciona, si no podemos verlo 🙂

      Saludos

  3. Que tal Fernando,
    Espero me podrias ayudar. Quisiera hacer una función con operadores matematicos. Estoy usando la siguiente formula.
    CASE
    WHEN sum(Ingresos) > 10000 THEN «>10K»
    WHEN sum(Ingresos) > 5000 THEN «>5k»
    WHEN sum(Ingreso) <= 5000 THEN "<5k"
    END
    Pero no me deja utilizarla. Me lo acepta cuando le quito la funcion sum(). Pero al quitarselo no me da el resultado correcto cuando quiero usarlo para un filtro. Espero me puedas ayudar.

    1. Hola Fredy,

      Lo que debes de hacer es crear una métrica que sea sum(ingresos). Le llamas por ejemplo suma.
      Y luego haces la funcion case con suma:
      Case
      When Suma > 10000 then >10k
      When Suma > 5000 then >5k
      else «<5k"
      End

      Saludos

      1. Buenos tengo una similar, que habla del ticket promedio
        Si la facturacion promedio por pedido es mayor a 8000 lo llamarias mayorista, y si fue inferior minorista
        Pero me arroja errores
        gracias!!

        CASE
        WHEN (SUM (Facturacion) / COUNT_DISTINCT(Id Pedido))> 8000 THEN «Mayorista»
        ELSE «Minorista»
        END

        1. Hola Martin,

          Vas a tener que realizar esto en dos pasos.
          Por un lado crear una métrica que sea (SUM (Facturacion) / COUNT_DISTINCT(Id Pedido)). Le llamas a este campo por ejemplo facturación.
          Luego ya haces la función case con la nueva dimensión.

          De todas maneras, compartiendo una captura de pantalla te podremos ayudar mejor 🙂
          Saludos

  4. hola! excelente pagina, tengo un problema, tengo una tabla dinamica en data studio que contiene una metrica de tipo numero que en algunas celdas arroja valores NULL o blank (o segun seleccione cuando no hay datos) ya que en la fuente de datos no hay valores, hice un CONTROL de lista desplegable con una dimension de un campo calculado con la funcion CASE para filtrar esos NULL, pero al usar el campo no se filtran esos valores NULL de la tabla aqui mi formula
    case
    when VOLUMEN TOTAL REF is NULL then «NULL»
    else «VALORES»
    end

      1. hola Nacho!
        Muchas gracias por responder, si revise el GIF, en el ejemplo lo que hacen es identificar los NULL y convertirlos a 0, yo lo que quiero hacer es ya identificados (en mi caso los con la funcion CASE los valores null los convierto a «nulos» y los valores los identifico como «valores», pero al insertar un CONTROL – LISTA DESPLEGABLE donde pongo ese campo calculado , no selecciona solo los «nulos» o «valores» de la tabla, pienso que es por que es una tabla dinamica, entonces no puedo filtrar esos nulos o valores, si gustas te subo un gif tambien con un ejemplo.

        y con gusto me suscribo a su canal! excelente trabajo el que hacen! slds!

  5. Hola, muchas gracias por tu post!
    Yo soy fan de la función CASE, pero estoy dándole vueltas a cómo podría eliminar de mi dashboard los ID de comercio electrónico duplicados. Tengo un problema con el ecommerce, porque analytics está duplicando varios ID’s y quisiera aplicar la función CASE para que no recoja 2 transacciones con el mismo ID en el dashboard. La transacción válida siempre es la primera que se realiza (primer ID), así que las que vienen después son las que habría que eliminar.
    Si me pudieras ayudar te lo agradecería muchísimo!
    Gracias de nuevo,
    Ruth

  6. Hola, primero agradecerte por tan genial explicación. También soy nuevo en el mundo de Google Data Studio y debo decir que estoy fascinado con las posibilidades que nos brinda.
    En mi caso lo que yo quiero hacer simplemente es el % sobre los totales de una dimensión sobre otra. Esto lo logré ya que no fue necesario usar case. Realicé las métricas «SUM A» y «SUM B» y luego la fórmula SUM A/SUM B con valor %. Ahora, lo que me sucede es que, dentro de la columna o dimensión A, hay valores que no quiero contemplar. Por ejemplo: Dimensión A tiene valores como PAN, LECHE, GALLETAS,CAJA. Al calcular la suma o «count» de esta dimensión me toma todos los valores. Pero yo quiero omitir «CAJA», ya que no está dentro de los comestibles. Entonces entiendo que aquí debiera utilizar la función CASE, pero no sabría como implementarla. Perdon por hacerlo tan largo, traté de explicarlo lo mejor posible. Espero me puedas ayudar

  7. Hola Nacho!
    Espero puedas ayudarme, intento crear una Dimensión, pero Data Studio la toma como métrica

    Case
    when SCORE<=-3 then "Muy Malo"
    when SCORE<=-1 then "Malo"
    when SCORE=0 then "Regular"
    when SCORE=3 then «Excelente»
    else «N/A»
    end

  8. Hola nacho muy buena tu publicacion.
    Tengo este inconveniente estoy tratando de crear un campo en el que me agrupe la cantidad segun el criterio y lo hace!, pero con el criterio frio que es cantidad menor a 49 me arroja todos los resultados y no el que estoy pidiendo.
    Gracias..

    CASE
    WHEN Cantidad <= 49 THEN "FRIO"
    WHEN Cantidad = 51 and Cantidad = 100 THEN » CALIENTE»
    ELSE » NO APLICA»
    END

    1. Hola Vanessa,

      Es rara la fórmula, ¿qué quieres poner en el segundo caso que caliente solo sea 51 y 100?¿o entre 51 y 100?

      Por otro lado, lo raro es que los que son más de 49 debería aparecer no aplica.

      Un tip rápido sería probar: when cantidad < 50 . Así incluye de 49 hacia abajo. Dime cómo te va para ver si te puedo ayudar más 🙂 Saludos

  9. Hola Gustavo,
    Para esto tienes que convertir las fechas en número con la función CAST(Date AS NUMBER).

    Por ejemplo:
    CASE
    WHEN CAST(FORMAT_DATETIME(«%Y%m%d», Date) AS NUMBER ) > 20210929 THEN Antes de Hoy
    ELSE NULL
    END

  10. Como puedo armar una grafica que me compare lo que se ha vendido en meses diferentes en este caso tengo una base de julio y otra de agosto , esta grafica quisiera que solo se moviera con una lista desplegable y no por fecha , pero que mis otros controles y tablas si se actualicen con la fecha .

  11. Hola Nachogb, como estas espero estes muy bien

    Quería saber si me puedes ayudar con lo siguiente cómo puedo crear una función como campo calculado en data studio que me traiga el AD id de mis campañas de facebook ads, este anuncio tiene un número que lo identifica ejemplo 6247822049062, ¿que quiero con ello? mostrar en una tabla de data studio una miniatura que deje ver todos los anuncios de todas las campañas en el que se puedan ver métricas por ejemplo del CTR, impresiones, clicks

  12. Hola, aprovecho este espacio para hacer una consulta ya que es muy completo
    Necesito saber si se puede mostrar la información de los diferentes gráficos o tablas según quién esté logeado. O en caso que no se pueda, si los gráficos o tablas pueden no mostrar información hasta que se selecciona un valor en un filtro en particular. Gracias!

  13. Hola, hace un rato envié una consulta y no la veo. La repito.
    es posible que los gráficos y tablas de mi hoja sólo muestren cierta información según quién está logeado. O en todo caso, pueden no mostrar información hasta que elijo el valor de un filtro?

    1. Hola Luciana,
      no, si compartes un dashboard, no puedes enviar información filtrada por persona. Tendrías que crear diferentes dashboards.
      Saludos

Deja una respuesta

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