Expresiones regulares para la creación de campos nuevos en Looker Studio

Este post es un poco distinto a los demás. Esta vez no vamos a entrar en Looker Studio, sino que vamos a repasar algo que nos puede facilitar muchísimo la vida a la hora de crear campos dentro de la herramienta. Se trata de las expresiones regulares. Son tan importantes que creo que es oportuno entender qué son y ver ejemplos antes de entrar en la creación de dimensiones personalizadas.

Las expresiones regulares son una herramienta muy potente que nos permiten encontrar una combinación de caracteres dentro de un texto utilizando patrones. Explicado así puede que sea difícil de entender si es la primera vez que oyes hablar de ellas, así que vamos a verlas con un ejemplo.

Has realizado una encuesta sobre tu (hipotético) restaurante y una de las preguntas es de texto libre, por lo que el encuestado puede escribir la respuesta que quiera. Han contestado 5000 personas y te interesan en especial aquellas que hablen sobre tu perfil de Instagram.

La gente puede hablar de Instagram escribiendo la palabra en mayúsculas, minúsculas, con siglas, con .com… Podrías crear un filtro como lo vimos en el post sobre filtros en Looker Studio e ir añadiendo una a una todas las condiciones. O podrías, para ahorrar mucho tiempo, usar expresiones regulares.

Estas son algunas de las que más uso.

Expresiones regulares básicas que yo uso con frecuencia

Barra vertical |

Significa O.

Ejemplo: instagram|instagram.com|Instagram|Instagram.com|IG|ig

Coincide con: instagram O instagram.com O Instagram O Instagram.com O IG O ig

Al crear un filtro nuevo puedes elegir en este la condición Coincide con la expresión regular e incluir el ejemplo de arriba, en lugar de añadir una línea por cada manera en la que Instagram puede escribirse.

Punto y asterisco .*

Coincide con cualquier caracter o conjunto de caracteres.

Ejemplo: instagram.*|Instagram.*|IG|ig

Coincide con lo mismo que el ejemplo anterior. Instagram.* sirve tanto para Instagram como para Instagram.com, ya que .* coincidirá con cualquier cosa que haya escrito después de Instagram.

Punto .

Coincide con cualquier caracter, en singular.

Ejemplo: .nstagram.*|IG|ig

Coincide con lo mismo que el ejemplo anterior. En lugar de escribir el nombre de la red social tanto con la i mayúscula y minúscula, puedes escribir un punto, lo que significa cualquier letra. Mientras que el punto representa un único carácter, el punto con el asterisco representa 1 o varios caracteres.

Sombrerito ^

Ahora lo que quieres es filtrar todas aquellas respuestas que empiecen por Instagram. Para ello puedes usar ^, que coincide con textos cuyo inicio sean las letras después de este caracter.

Ejemplo: ^Instagram

Coincide con todos las respuestas de texto libre que empiezan por Instagram.

Signo del dólar $

¿Y si solo quiero las respuestas que terminen con la palabra Instagram? Para eso puedes usar $, que coincide con textos cuyo final sean las letras anteriores a este símbolo.

Ejemplo: Instagram$

Mi objetivo al mostrarte algunas expresiones regulares no es que las aprendas todas, sino que te familiarices con ellas compartiendo las que a mí me resultan más útiles. Por ahora hemos visto sólo 5 de ellas, pero hay muchísimas más.

Las 2 siguientes que vamos a ver son un poco más avanzadas. No las muestro para que las memorices, pero sí para que cuando veas las expresiones regulares del siguiente post, estas tengan más sentido.

Ejemplos de expresiones regulares intermedias

Barra invertida seguida de d \d

Aquí vale la pena explicar que se usa la barra invertida antes de un caracter para que NO funcione como expresión regular. Por ejemplo, si quieres buscar todos los comentarios en los que se mencionan el signo del dólar, tienes que usar \$. Sino Looker Studio estará entendiendo el caracter $ como expresión regular.

La barra invertida seguida de d (\d) coincide con 1 dígito. Coincide con: “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, o “9”.

También puede ser expresado como [0-9].

El problema es que usando \d o [0-9] solo va a buscar números de 1 dígito y el precio mínimo del restaurante es de 20 dólares, por lo que seguramente hablen de números con más de un dígito.

Si quieres especificar que sea 1 o más dígitos, puedes usar \d+ o [0-9]+

O si quieres especificar que sean números de exactamente 2 dígitos puedes usar \d{2}. El número entre los corchetes determina la cantidad de dígitos seguidos.

Si te olvidas de poner la barra invertida y escribes d{2}, la expresión regular coincidirá con la letra d 2 veces seguidas, es decir, dd.

Barra invertida seguida de w \w

Funciona igual que el caso anterior, pero con caracteres alfanuméricos y guiones bajos.

También puede ser representado así [0-9a-zA-Z], aunque no incluiría los guiones bajos.

[a-z] Coincide con 1 caracter en minúscula entre la a y la z.

[A-Z] Coincide con 1 caracter en mayúscula entre la A y la Z.

Añadiendo + al final estarás diciendo que puede coincidir con 1 o más caracteres, en lugar de solo con 1 (sin el +).

Lo dicho, hay multitud de expresiones regulares y estas son solo un puñado de ellas. Mi recomendación es que intentes recordar los ejemplos expuestos aquí, ya que te ayudarán a la hora de crear campos nuevos en Looker Studio. En el post sobre cómo crear dimensiones veremos ejemplos con expresiones regulares avanzadas que, a no ser que tengas especial interés, no es necesario que las memorices, pero entendiendo las que hemos visto aquí, comprenderás mejor de qué van.

Fórmulas con las que usaras expresiones regulares

A la hora de crear campos, Looker Studio tiene disponibles una serie de fórmulas que son las que usarás con las expresiones regulares.

a. REGEXP_MATCH(campo, expresión regular)

Devuelve Verdadero si los valores del campo coinciden exactamente con la expresión regular. Sino devuelve Falso.

Ejemplo

REGEXP_MATCH(Pregunta abierta, 'Instagram')

Devolverá verdadero si la pregunta abierta es exactamente Instagram. Es poco probable que la respuesta contenga únicamente Instagram, por lo que puedes usar una de las expresiones vistas anteriormente para que busque todas las respuestas que tengan texto antes o después de Instagram.

REGEXP_MATCH(Pregunta abierta, '.*Instagram.*')

Para mantener el ejemplo simple, no he añadido variaciones en la palabra Instagram (mayúsculas, minúsculas, etc…).

No lo he dicho antes, pero las cadenas de texto van siempre entre comillas simples. Por eso escribo las expresiones regulares entre ellas (ej. ‘.*Instagram.*’).

b. REGEXP_CONTAINS(campo, expresión regular)

Devuelve Verdadero si los valores del campo contienen la expresión regular. Sino devuelve Falso.

Ejemplo

REGEXP_CONTAINS(Pregunta abierta, 'Instagram')

Devolverá verdadero para todas aquellas respuestas que CONTENGAN Instagram. No tiene que ser como en el ejemplo anterior que tenga únicamente la palabra Instagram.

c. REGEXP_EXTRACT(campo, expresión regular)

Devuelve los valores del campo que coincidan exactamente con la expresión regular.

Ejemplo

Si quieres extraer el primer directorio de una URL, puedes usar:

REGEXP_EXTRACT( URL , '^https://[^/]+/([^/]+)/' )

Para extraerlo de https://elpais.com/educacion/los-conocimientos-son-competencias.html, sería así:

REGEXP_REPLACE(https://elpais.com/educacion/los-conocimientos-son-competencias.html, '^https://[^/]+/([^/]+)/' )

Devolverá educación.

Aquí la expresión regular es ^https://[^/]+/([^/]+)/

Avanzada, ¿eh? Como dije antes, no hace falta que te preocupes por aprenderla. Hay muchas de ellas que puedes encontrarlas con una simple búsqueda en Google, aunque sí que es importante entender más o menos de qué va.

Aquí cabe destacar que es la parte entre paréntesis ([^/]+) la que la función buscará reemplazar.

d. REGEXP_REPLACE(campo, expresión regular, texto de reemplazo)

Sustituye los valores del campo que coincidan con la expresión regular con el nuevo texto de sustitución.

Ejemplo

Si quieres reemplazar Instagran, que está mal escrito, por la palabra correcta, Instagram, puedes hacerlo con:

REGEXP_REPLACE(Pregunta abierta, 'Instagran', 'Instagram')

En el siguiente capítulo veremos ejemplos con expresiones regulares más avanzadas que usan estas fórmulas.

e. CASE WHEN

Con esta fórmula puedes usar expresiones regulares o no. Yo la uso mucho en conjunto con las 4 fórmulas anteriores, pero no tienen que ir siempre juntas.

CASE WHEN es una versión más avanzada del IF.

IF te permite trabajar con 1 condición y te puede devolver 2 resultados distintos. Si es cierto → resultado 1, si no lo es → resultado 2.

CASE WHEN da la posibilidad de añadir más condiciones.

La estructura es la siguiente:

CASE WHEN campo condición valor THEN resultado

WHEN campo condición valor THEN resultado

WHEN campo condición valor THEN resultado

ELSE resultado si no cumple ninguna de las condiciones anteriores

END

Y ahora con un ejemplo:

CASE WHEN producto = ‘camiseta’ THEN ‘Ropa’

WHEN producto = ‘falda’ THEN ‘Ropa’

WHEN producto = ‘zapato’ THEN ‘Calzado’

ELSE ‘Otra categoría’

END

Las expresiones regulares y las fórmulas pueden parecer bastante complicadas. Vamos a ponerlas en práctica en el siguiente post creando dimensiones personalizadas en Looker Studio y verás como son mucho más fáciles de lo que parecen.

Leave a comment