Saltar al contenido

¿Cómo simular una tabla dinámica con BigQuery?

Contamos con la contestación a esta inconveniente, al menos eso creemos. Si presentas dudas puedes dejarlo en el apartado de comentarios y sin dudarlo te ayudaremos

Solución:

actualización 2020: fhoffa.x.pivot()

  • https://towardsdatascience.com/easy-pivot-in-bigquery-one-step-5a1f13c6c710

Use sentencias condicionales para organizar los resultados de una consulta en filas y columnas. En el siguiente ejemplo, los resultados de una búsqueda de la mayoría de los artículos revisados ​​de Wikipedia que comienzan con el valor ‘Google’ se organizan en columnas donde se muestran los recuentos de revisiones si cumplen varios criterios.

SELECT
  page_title,
  /* Populate these columns as True or False, depending on the condition */
  IF(page_title CONTAINS 'search', INTEGER(total), 0) AS search,
  IF(page_title CONTAINS 'Earth' OR page_title CONTAINS 'Maps', INTEGER(total), 0) AS geo,
FROM
  /* Subselect to return top revised Wikipedia articles containing 'Google'
   * followed by additional text.
   */
  (SELECT
    TOP(title, 5) as page_title,
    COUNT(*) as total
   FROM
     [publicdata:samples.wikipedia]
   WHERE
     REGEXP_MATCH (title, r'^Google.+') AND wp_namespace = 0
  );

Resultado:

+---------------+--------+------+
|  page_title   | search | geo  |
+---------------+--------+------+
| Google search |   4261 |    0 |
| Google Earth  |      0 | 3874 |
| Google Chrome |      0 |    0 |
| Google Maps   |      0 | 2617 |
| Google bomb   |      0 |    0 |
+---------------+--------+------+

Un ejemplo similar, sin usar una subconsulta:

SELECT SensorType, DATE(DTimestamp), AVG(data) avg, 
FROM [data-sensing-lab:io_sensor_data.moscone_io13]
WHERE DATE(DTimestamp) IN ('2013-05-16', '2013-05-17')
GROUP BY 1, 2
ORDER BY 2, 3 DESC;

Genera una tabla de 3 columnas: tipo de sensor, fecha y datos promedio. Para “pivotar” y tener las fechas como columnas:

SELECT
  SensorType,
  AVG(IF(DATE(DTimestamp) = '2013-05-16', data, null)) d16,
  AVG(IF(DATE(DTimestamp) = '2013-05-17', data, null)) d17
FROM [data-sensing-lab:io_sensor_data.moscone_io13]
GROUP BY 1
ORDER BY 2 DESC;

Reseñas y puntuaciones del tutorial

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *