Esta nota trata sobre los problemas que nos encontramos cotidianamente trabajando con Data Studio. Problemas o dificultades para generar tablas, gráficos y filtros como los imaginamos en nuestra cabeza. En la primer parte veremos los formatos wide y long y en la segunda, cómo pasar de uno a otro mediante DataPrep, BigQuery, R y Python.

Tipos de bases de datos, tablas y formatos

Las bases de datos sirven para almacenar información de muy distinto tipo. Por ello, a lo largo del tiempo, se han creado distintos tipos de bases de datos, formas de almacenamiento y de consulta para poder cubrir las distintas necesidades. Si hablamos de bases de datos estructurados solemos referirnos a aquellos que tienen un formato definido, por ejemplo una tabla con filas y columnas; a diferencia de los datos no estructurados que no tienen un patrón predeterminado (como pueden ser imágenes, videos, sonidos y texto libre).

Pero aun una misma tabla de una base de datos estructurados puede presentarse en diferentes formatos de acuerdo a las necesidades del negocio y de las herramientas de almacenamiento utilizadas. En esta nota vamos a ver particularmente el caso de los formatos denominados wide y long. Nos interesan particularmente por las implicancias prácticas de cada formato a la hora de trabajar con BigQuery y Data Studio.

¿A qué se denominan formatos wide y long? La manera más fácil de analizarlo es con un ejemplo:

Tabla en formato wide
Tabla en formato long

Como podemos observar con este sencillo ejemplo, en el formato wide las observaciones de un día se mantienen en la misma fila, agregando columnas por cada atributo y colocando las cantidades en la intersección del día y el atributo (la celda). Por otro lado, en el formato long, utilizamos 2 columnas para los atributos mientras que en la restante colocamos las cantidades; por lo tanto, vamos a tener repetidas observaciones correspondientes a un mismo día. El formato long se asocia con la forma (clave, atributo, valor) mientras que en el wide los atributos son los nombres de las diferentes columnas.

Seguramente sintamos mayor afinidad por el primer formato, el wide, ya que es el formato en el que estamos acostumbrados a trabajar y pensar en las hojas de cálculo (Excel, Sheets, etcétera). Es un formato mucho más adecuado para trabajar con información sumarizada o resumida mientras que el segundo, el formato long, permite trabajar mucho mejor con datos del tipo log (es decir registros de datos consecutivos que luego serán procesados y sumarizados). También se relaciona con matrices ralas (con muchos valores nulos), con las tablas denormalizadas (formato sugerido para trabajar en BigQuery) y en líneas generales con el modelo EAV (Entity – Attribute – Value) del cual se puede consultar más información aquí.

Ventajas y dificultades en BigQuery y Data Studio

¿Por qué este problema nos resulta de interés? Porque al trabajar con BigQuery o Data Studio resulta crucial entender estos dos tipos de formatos para sacarle el mayor provecho. Ambas herramientas están diseñadas para trabajar mucho más cómoda y eficientemente con el segundo formato, el long. ¿Es posible trabajar en BQ y DS con tablas que tengan un formato wide? Sí, claro. Pero nos encontraremos con dificultades tanto de rendimiento como, principalmente, operativas a la hora de visualizar esa información.

En el caso de BigQuery, una de las principales características que posibilita tanto su rapidez a la hora de hacer consultas como su bajo costo, reside en el almacenamiento columnar. BigQuery almacena la información contenida en las tablas comprimiendo cada columna por separado. Por eso, a la hora de hacer queries, una de las principales variables a tener en cuenta para calcular el costo y la cantidad de datos que va a tener que procesar cada una tiene que ver con la cantidad de columnas involucradas. Por este motivo, cuantas menos columnas posea nuestra tabla en BigQuery, más eficiente y menos costoso va a ser el tratamiento de los datos y por ende el formato long es el más adecuado para este tipo de almacenamiento.

Sin embargo, la mayor dificultad para las tablas wide tiene que ver con la manera de trabajar esos datos en Data Studio. Al ser una herramienta en desarrollo, hay muchas funcionalidades que se van agregando con el tiempo. Por ejemplo, en los orígenes de Data Studio en Digodat no existía el blend data y cualquier operación entre métricas que tuvieran aplicados filtros diferentes era imposible de realizar. Sin embargo, por el modelo de datos que utiliza Data Studio (dimensiones y métricas), las nuevas funcionalidades suelen estar pensadas para un formato de tabla long. Esto no quiere decir que no se puedan llevar a cabo las mismas operaciones si contamos con una tabla en formato wide pero seguramente nos encontraremos mayores obstáculos.

La principal restricción tiene que ver con la imposibilidad de realizar operaciones sobre los nombres de las columnas. Es decir, algo que en formato long sería un atributo con distintos valores (atributo: fruta; valores: manzanas, bananas, peras), en las tablas wide lo encontramos como nombres de columnas. Lo vemos en nuestro ejemplo anterior:

Tabla en formato wide
Tabla en formato long

Cuando pasamos estas tablas a Data Studio, veremos que hay una gran cantidad de visualizaciones que podemos generar para ambos formatos sin mayores dificultades. Todos los gráficos que vemos a continuación se encuentra en el siguiente reporte.

Sin embargo, el problema viene cuando queremos o bien aplicar la división por fruta en un gráfico, en un filtro para que el usuario pueda seleccionarlo o a partir de la función de apply filter en otro gráfico agrupado. Todas estas operaciones resultan imposibles de realizar con tablas wide.

Gráfico de torta según fruta
Gráfico de barras de días de pedido por fruta
Tabla de día de pedido con control de filtro por fruta

Aunque también hay algunas visualizaciones específicas en las que el formato wide resulta más útil para representar la información en Data Studio. El caso más emblemático es el siguiente:

Tabla de cantidades de fruta por día de pedido

Esta tabla es muy sencilla de generar con los datos en formato wide y sin embargo para hacerlo con el formato long debemos generar un blend data con 3 data sources que contengan diferentes filtros de la dimensión “Fruta”. A esta escala resulta fácil de resolver pero Data Studio solo permite 5 fuentes de datos diferentes en un blend data, por lo que se vuelve complicado escalar la solución.

Resumen y próxima nota

En esta nota vimos que:

  • Existen diferentes bases de datos y aun dentro de las bases de datos estructurados, podemos presentar la información en 2 formatos: wide y long
  • El formato long viene en la forma clave, atributo, valor mientras que el wide incorpora los atributos como nombres de las columnas
  • El formato long es el preferido de BigQuery y Data Studio
  • En BigQuery porque el almacenamiento es columnar y por ende va a ser más eficiente y menos costoso
  • En Data Studio porque hay ciertas operaciones imposibles de realizar con tablas wide, sobre todo las relacionadas con el o los atributos que son nombres de columnas.

En la próxima nota vamos a ver la operación llamada melt o unpivot que permite pasar de un formato de tabla a otro y cómo realizar ese procedimiento con datos de una sheet en DataPrep, Big Query, R y Python.

Tomás Reneboldi
Head of Operations