---
title: "BigQuery: Como pivotar una tabla como un Pro"
description: Aprende a pivotar tablas en BigQuery como un PRO. Pivota de forma estática y dinámica para analizar datos y obtener visualizaciones potentes.
image: https://www.webappanalyz.ing/hubfs/Blog/BQ_pivot%20table/a-photo-of-a-digital-analyst-pivot-table.jpeg
---

# Analítica Digital y MarTech | Web App Analyzing

<https://www.linkedin.com/in/david-hernandez-jimenez-digital-analyst>

[![Web App Analyzing](https://www.webappanalyz.ing/hs-fs/hubfs/Paginas/comunes/330x330.png?width=330&height=330&name=330x330.png "Web App Analyzing")](https://www.webappanalyz.ing)

 Español

- [Home](https://www.webappanalyz.ing)
- [Martech](https://www.webappanalyz.ing/martech)
- [Blog](https://www.webappanalyz.ing/entradas-blog)
- [About](https://www.webappanalyz.ing/about-me)
- [Contact](https://www.webappanalyz.ing/contacto)

- [Home](https://www.webappanalyz.ing/)
- Blog Details

- [Bigquery](https://www.webappanalyz.ing/blog/tag/bigquery)
- enero 11 2025

# BigQuery: Como pivotar una tabla como un Pro

![](https://app.hubspot.com/settings/avatar/da811a22b10423c1f2dbdb70197cb715)

Blog By

#### [David Hernandez](https://www.webappanalyz.ing/blog/author/david-hernandez)

![](https://www.webappanalyz.ing/hubfs/Blog/BQ_pivot%20table/a-photo-of-a-digital-analyst-pivot-table.jpeg)

En el mundo del análisis de datos, la capacidad de transformar y reorganizar datos es esencial para obtener insights valiosos. En este artículo, te mostraremos cómo pivotar una tabla en [BigQuery](https://console.cloud.google.com/bigquery), optimizando tus consultas y mejorando la presentación de tus datos. 

---

**Índice:**

- [Cómo pivotar de manera estática](https://www.webappanalyz.ing/blog/bigquery-como-pivotar-tabla-como-un-pro#a-pivotar-estatico)
- [Cómo pivotar de manera dinámica](https://www.webappanalyz.ing/blog/bigquery-como-pivotar-tabla-como-un-pro#b-pivot-dinamico)
- [Conclusión](https://www.webappanalyz.ing/blog/bigquery-como-pivotar-tabla-como-un-pro#c-conclusion)

---

 

Cuando trabajamos con tablas de [BigQuery](https://console.cloud.google.com/bigquery), una necesidad habitual es la de ver los datos en forma de tabla cruzada. Este tipo de visualización nos permite comparar dos dimensiones diferentes y las métricas que se derivan de ambas, lo cual es esencial para un análisis más profundo y detallado de los datos. Al observar los datos en este formato, podemos identificar patrones, tendencias y relaciones que no serían evidentes en una tabla tradicional.

Esta acción, conocida como pivotar una variable, implica dejar una dimensión fija mientras se mueve la otra a columnas para visualizar sus resultados de manera más clara y comprensible. Pivotar es una técnica muy común y también bastante sencilla de realizar dentro de [BigQuery](https://console.cloud.google.com/bigquery), aunque la forma de implementarla puede variar dependiendo de lo que queramos lograr con nuestros datos. Por ejemplo, podríamos querer analizar cómo se distribuyen ciertos eventos a lo largo de diferentes plataformas o cómo varían las métricas en función de diferentes categorías.

Vamos a ver un avance en video para entender la logica y luego pasamos a verlo de forma detallada:

<iframe width="256" height="144.64" src="https://www.youtube.com/embed/UMQaTxG6lPs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen title="BigQuery Como Pivotar Tablas Como Un Pro" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; border: none;"></iframe>

## Cómo pivotar de manera estática

Una acción que podríamos querer realizar es, sobre una dimensión específica, ver solamente los valores pivotados de una serie de dimensiones seleccionadas. Por ejemplo, si tenemos la variable de eventos, podríamos estar interesados en ver solamente algunos de los eventos y no todos. Esto nos permitiría visualizar de forma gráfica un funnel, que es una representación visual del proceso por el cual pasan los usuarios, o analizar algún tipo de evolución de una variable en función de las fechas. Este tipo de análisis es importante para entender el comportamiento de los usuarios y optimizar estrategias de negocio.

Para llevar a cabo esta primera acción, la forma de pivotar una tabla en [BigQue](https://console.cloud.google.com/bigquery)[ry](https://console.cloud.google.com/bigquery) es utilizando el código que se muestra a continuación:

---

##### `-- Pivotar tabla de manera estática:`

`   WITH a AS (`

`       SELECT DISTINCT event_date, event_name, count(*) AS n_events`

`       FROM `[PROJECT_id].[DATASET_ID].[TABLA_EVENTS_YYYYMMDD]``

`       GROUP BY all`

       `)`

`    SELECT * FROM a PIVOT(sum(n_events) AS s_events FOR event_name IN ('Pageview','screen_view'));`

---

En este código, estamos extrayendo dos dimensiones, event\_date y event\_name, y generando una métrica, n\_events, a traves de una subconsulta.

A continuación, recogemos las dimensiones de la subconsulta anterior y comenzamos a pivotar una de ellas,  event\_name, seleccionando esta dimensión cuando event\_name tome los valores de Pageview o screen\_view.

Además, deseamos que la métrica generada anteriormente, n\_events, sea la base para agregar los resultados, sumandose en una metrica s\_events.

Al ejecutar esta consulta, obtendremos una tabla cruzada donde las columnas mostrarán estos dos valores de las dimensiones Pageview y screen\_view, y las filas mostrarán el volumen de cada una de estos event\_name para cada event\_date.

De esta forma, logramos pivotar una tabla de manera estática, lo que significa que el proceso se realiza únicamente en función de los parámetros que hemos especificado previamente en el código. Esto implica que debemos conocer de antemano los valores que queremos pivotar y definirlos explícitamente en nuestra consulta. Al hacerlo, limitamos el análisis a un conjunto específico de datos, lo cual es útil cuando tenemos un objetivo claro y definido.

Podemos añadir tantas dimensiones como queramos o tratar de complicar la tabla al gusto, pero la mecánica será siempre similar.

Sin embargo, esta metodología puede ser restrictiva si los valores de las dimensiones que deseamos analizar son variables o desconocidos, ya que requeriría modificar el código cada vez que se presenten nuevos valores o cambios en los datos.

## Cómo pivotar de manera dinámica

La aproximación anterior para pivotar tablas, tiene sus restricciones y una de ellas es cuando queremos pivotar una dimensión entera, de la cual no conocemos todos los posibles valores que puede tomar. En este caso la aproximación que hemos realizado en el código anterior no será útil, ya que tenemos que nosotros previamente facilitarle cuáles son los valores de la variable a pivotar.

 

Si queremos pivotar una tabla por una dimensión de forma dinámica tendremos que tomar el código anterior y darle un salto de complejidad para que, sean cuales sean los valores que tenga dentro la variable, pivoten directamente sin ninguna acción adicional por nuestra parte.

 

Para pivotar de manera dinámica, el código que necesitamos se compone de dos secciones. En la primera, definimos la consulta que deseamos ejecutar e incluimos una variable que contendrá el contenido de la dimensión a pivotar. En la segunda, generamos el contenido de la dimensión que vamos a pivotar.

A continuación, vamos a ver el código de ejemplo y lo explicaremos detalladamente paso a paso:

---

##### `-- Pivotar tabla de manera dinámica:`

`EXECUTE IMMEDIATE`

`FORMAT(   """     with a as` `(`

`SELECT DISTINCT event_date, event_name, count(*) AS n_events FROM `[PROJECT_id].[DATASET_ID].[TABLA_EVENTS_YYYYMMDD]` GROUP BY all`

`)     select * from a pivot(sum(n_events) as s_events for event_name in %s);   """, (select concat("(",string_agg(distinct concat("'",event_name,"'")),")") FROM `[PROJECT_id].[DATASET_ID].[TABLA_EVENTS_YYYYMMDD]`) );`

---

La sentencia **`EXECUTE IMMEDIATE`** es una función de SQL en BigQuery que permite ejecutar consultas dinámicas. En lugar de ejecutar una consulta fija escrita directamente en el código, permite construir la consulta de forma dinámica durante la ejecución del script.

 

La función **`FORMAT`**se utiliza para construir una consulta SQL dinámica, donde se inserta un valor calculado dentro de una plantilla SQL.

 

La primera sección de esta función, la consulta que vamos a ejecutar de manera dinámica, hay que meterla dentro de unas **triples comillas**. De forma general, las triples comillas permiten escribir cadenas de texto que abarcan varias líneas, lo que es útil para estructurar consultas SQL complejas de forma más clara y legible. Pero en este caso, permite que la variable **`%s`** dentro de la consulta sea reemplazado por una lista generada dinámicamente mediante la función `STRING_AGG()`, en la segunda sección de la función. 

 

Dentro de las triples comillas, insertamos la consulta que vamos a ejecutar. En este ejemplo, es la misma que empleamos para pivotar las variables de manera estática, pero con una modificación: en la cláusula PIVOT sustituimos 'event\_name IN ('Pageview','screen\_view')' por 'event\_name IN %s'. La variable añadida al final es la que contiene el contenido de la dimensión que vamos a pivotar, y se definirá en la segunda sección de la función.

En la segunda parte de la función, cogemos el contenido de la dimensión event\_name y lo metemos entre paréntesis, cada valor entre comilla simple y separado con una coma. Y para ello usamos dos funciones:

 

- **`STRING_AGG`**: Combina todos los valores distintos de `stream_platform` en una sola cadena, separados por comas. Cada valor está encerrado entre comillas simples (`'`) para que sea compatible con la sintaxis de SQL.
- **`CONCAT`**: Encierra el resultado de `STRING_AGG` entre paréntesis para que sea válido como una lista de valores en la cláusula `IN`.

Ahora que entendemos cómo funciona el código, simplemente debemos ejecutarlo para observar cómo todos los valores de la dimensión seleccionada se han pivotado, creando una tabla cruzada con la dimensión event\_date. Desde este punto, podemos comenzar a añadir más dimensiones que amplíen la información que buscamos, y una vez comprendida la mecánica, será muy fácil hacerlo.

---

### **Conclusión**

Una vez comprendida la diferencia entre pivotar de manera estática y dinámica, así como la implementación de ambas técnicas en BigQuery, podemos ver cómo esta metodología amplía las posibilidades de análisis. Pivotar tablas permite transformar datos complejos en visualizaciones claras que revelan patrones y tendencias difíciles de identificar en tablas tradicionales.

Mientras que el pivot estático resulta útil para análisis concretos y definidos, el enfoque dinámico ofrece una solución más flexible y automatizada, aunque más compleja, especialmente en entornos donde los valores de las dimensiones pueden cambiar constantemente. La combinación de funciones como `EXECUTE IMMEDIATE` y `STRING_AGG()` permite automatizar la adaptación de la consulta a cualquier conjunto de datos, simplificando el proceso y ahorrando tiempo.

Con esta base, ahora tienes las herramientas necesarias para realizar análisis más completos y ajustados a tus necesidades. La clave está en adaptar cada método a tu escenario de negocio y seguir explorando las capacidades de BigQuery para sacar el máximo provecho de tus datos.

![Como pivotar tablas como un pro](https://www.webappanalyz.ing/hs-fs/hubfs/Blog/BQ_pivot%20table/Como%20pivotar%20tablas%20como%20un%20pro.jpg?width=2752&height=1536&name=Como%20pivotar%20tablas%20como%20un%20pro.jpg)

---

[![david\_hernandez\_digital\_analyst](https://www.webappanalyz.ing/hubfs/Paginas/comunes/Perfil-2.jpeg)](https://www.linkedin.com/in/david-hernandez-jimenez-digital-analyst)

## [David Hernández](https://www.linkedin.com/in/david-hernandez-jimenez-digital-analyst)

 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.

#### Publicaciones más recientes

#### Publicaciones más visitadas

- [Bigquery](https://www.webappanalyz.ing/blog/tag/bigquery)
- [Blog](https://www.webappanalyz.ing/blog/tag/blog)

### Submit Your Comment

[![white\_on\_trans](https://www.webappanalyz.ing/hs-fs/hubfs/white_on_trans.png?width=200&height=200&name=white_on_trans.png "white_on_trans")](https://www.webappanalyz.ing)

<https://www.linkedin.com/in/david-hernandez-jimenez-digital-analyst/>

- [Home](https://www.webappanalyz.ing)
- [Martech](https://www.webappanalyz.ing/martech)
- [Blog](https://www.webappanalyz.ing/entradas-blog)
- [About](https://www.webappanalyz.ing/about-me)
- [Contact](https://www.webappanalyz.ing/contacto)
- [Política de Cookies](https://www.webappanalyz.ing/politica-de-cookies)
- [Aviso Legal](https://www.webappanalyz.ing/aviso-legal)

[Cambiar opciones de privacidad](https://www.webappanalyz.ing/blog/?cmpscreen)

Copyright © 2024. All Rights Reserved

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "David Hernandez",
    "url" : "https://www.webappanalyz.ing/blog/author/david-hernandez"
  },
  "dateModified" : "2026-03-14T15:47:32.599Z",
  "datePublished" : "2025-01-11T08:47:29.000Z",
  "headline" : "BigQuery: Como pivotar una tabla como un Pro",
  "image" : [ "https://www.webappanalyz.ing/hubfs/Blog/BQ_pivot%20table/a-photo-of-a-digital-analyst-pivot-table.jpeg" ],
  "mainEntityOfPage" : {
    "@id" : "https://www.webappanalyz.ing/blog/bigquery-como-pivotar-tabla-como-un-pro",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://www.webappanalyz.ing/hubfs/Paginas/comunes/330x330.png"
    }
  }
}
```