Índice:
- ¿Cómo desanidar (unnest) los parámetros de evento?
- ¿Qué sucede sí elijo un value incorrecto?
- ¿Qué sucede si en una variable tengo varios tipos de datos?
- ¿Cómo resuelvo estos inconvenientes?
Al acceder a la consola de BigQuery, tienes que localizar tu conjunto de datos, identificado como 'analytics_xxxxx', y la tabla correspondiente, nombrada como 'events_'. Aquí es donde se almacenan todos los eventos capturados por GA4, listos para ser consultados y analizados según tus necesidades.
Con los parámetros normales, basta con arrastrarlos o invocarlos en el código para poder usarlos, sin embargo, los event_params no los puedes usar de esta forma, por que su estructura es diferente. Este campo contiene datos organizados en tablas dentro de otras dimensiones; es decir, son variables que están 'anidadas'.
¿Cómo desanidar (unnest) los parámetros de evento?
Para desanidar esta dimensión y acceder a la información, debemos que utilizar una sentencia SQL como esta:/*UNNEST EVENT PARAMS*/
SELECT
(select value.string_value
from unnest(event_params)
where key = 'NOMBRE_DE_VARIABLE') AS NOMBRE_VARIABLE_UNNESTED
FROM `TU_BASE_DATOS`
Con 'SELECT value.string_value', indicamos que queremos extraer el valor de la dimensión (value) y que este valor es de tipo texto (string_value). BigQuery almacena los valores en cuatro tipos diferentes:
- string_value: Datos almacenados como texto.
- int_value: Números enteros.
- float_value: Números con hasta dos decimales.
- double_value: Números con más de dos decimales.
La cláusula 'FROM UNNEST(event_params)' indica que queremos extraer el valor seleccionado de event_params. Como esta tabla está anidada, utilizamos la función UNNEST para desanidar los event params y obtener el valor deseado.
Finalmente, con 'WHERE key = 'NOMBRE_DE_VARIABLE', especificamos qué dimensión queremos obtener. Por ejemplo, si queremos extraer la URL de la página, escribiríamos: WHERE key = 'page_location'.
Con esta sentencia, ya podemos acceder a los datos de los parámetros de los eventos y aprovechar la información almacenada en BigQuery a partir de GA4.
Si ejecuto el código, se ejecutará sin errores, pero no obtendremos ningún resultado. Cada dimensión almacena su contenido en una columna distinta, string_value, int_value, float_value o double_value, según cada caso. Por lo que si estamos llamando a una variable que tiene valores de texto (string) pero le pedimos que saque los valores de la columna int_vaue, no obtendremos ningún resultado porque estamos intentando extraer datos de una columna incorrecta.
Al buscar en una columna que no corresponde al tipo de dato almacenado, la query no devolverá los resultados esperados.
Es muy importante saber que estamos seleccionando la columna adecuada en función del tipo de dato que queremos extraer.
Puede ser frecuente que en una variable almacenes un dato que tú consideres siempre de un tipo específico, como texto o número, pero al insertarlo en BigQuery, este sistema puede interpretar que se trata de otro tipo de dato completamente diferente. Esto se debe a la forma en que BigQuery analiza y clasifica los datos.
Por ejemplo, si estás trabajando con el modelo de un coche, como un 'Peugeot 307' y un 'Audi Q3', BigQuery los almacenará de manera distinta. En este caso, '307' será interpretado como un número entero (integer) debido a su naturaleza numérica, mientras que 'Q3' será considerado un texto (string) porque contiene caracteres alfabéticos. Esta diferencia en la interpretación puede llevar a problemas si no se tiene en cuenta al escribir las sentencias SQL para desanidar los datos. Si en la sentencia para desanidar elijo un tipo de valor, como string, y dejo fuera al otro, como integer, estaré omitiendo datos para analizar desde su extracción.
Este tipo de discrepancia puede afectar significativamente el análisis de datos si no se tiene en cuenta, ya que podrías perder información valiosa o generar resultados incorrectos en tus consultas. Por lo tanto, es muy importante entender cómo BigQuery clasifica los datos y asegurarse de que las consultas SQL estén diseñadas para manejar estas diferencias de manera efectiva.
Hay diferentes formas de resolverlo, pero una muy eficaz es la siguiente:
/*UNNEST ALL VALUES FROM EVENT PARAMS*/
(select COALESCE(
value.string_value,
cast(value.int_value as string),
cast(value.double_value as string),
cast(value.float_value as string))
from unnest(event_params)
where key = 'NOMBRE_DE_VARIABLE') AS NOMBRE_VARIABLE_UNNESTED
- COALESCE: se utiliza para devolver el primer valor no NULL de una lista de expresiones.
- CAST: se utiliza para convertir un valor de un tipo de datos a otro.
Después de saber como desanidar los event_params, tenemos que conocer que valores pueden tomar las diferentes variables dentro deevent_params. Para ello puedes consultar este articulo: BigQuery: como consultar que parámetros hay dentro de un campo anidado. Otra función muy importante para todo Analista Digital es saber como programar consultas con BigQuery, aprende a hacerlo en este articulo.
David Hernández
Digital Analyst
Soy un apasionado de los datos, la tecnología, la ciencia y el aprendizaje continuo.
Trabajo como Digital Analyst desde 2020.
Participo en el ciclo completo de los datos: definición e implementación de recolección, procesado y distribución, análisis de datos y reporting.