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.

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):

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:
- Localización / idiomas
- Network / Dispositivo
- 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:

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.

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:

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.
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
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
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.
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
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.
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
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
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
Hola necesito hacer una doble formula condicional. O sea si A y B entonces que traiga tal cosa. Que formula debería usar? Gracias
Hola Verónica,
Tendrías que usar
Case when Métrica/Dimension >/contains then X
else Y
end
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
Hola Alfonso,
En este post aparece arriba un gif sobre cómo añadir valores null, ¿no te sale así?
Saludos
PD:Además de la página, tenemos el canal de youtube, por si te quieres suscribir 🙂
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!
Hola Alfonso,
Si puedes subir el gif, mejor 🙂 así lo entiendo más.
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
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
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
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
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
Hola
Quisiera con función Case agrupar entre fechas. Como sería??
Saludos
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
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 .
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
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!
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?
Hola Luciana,
no, si compartes un dashboard, no puedes enviar información filtrada por persona. Tendrías que crear diferentes dashboards.
Saludos