arrow_back

Trabaja con JSON, arrays y structs en BigQuery

Unirse Acceder
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Trabaja con JSON, arrays y structs en BigQuery

Lab 1 hora 15 minutos universal_currency_alt 5 créditos show_chart Intermedio
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP416

Labs de autoaprendizaje de Google Cloud

Descripción general

BigQuery es la base de datos analítica de bajo costo, no-ops y completamente administrada de Google. Con BigQuery, puedes consultar muchos terabytes de datos sin tener que administrar infraestructuras y sin necesitar un administrador de base de datos. BigQuery usa SQL y puede aprovechar el modelo de pago por uso. BigQuery te permite enfocarte en el análisis de datos para buscar estadísticas valiosas.

En este lab, trabajarás en profundidad con datos semiestructurados (transferencia de archivos de tipo JSON y arrays) dentro de BigQuery. Desnormalizar tu esquema en una sola tabla con campos repetidos y anidados puede mejorar el rendimiento, pero puede ser difícil usar la sintaxis de SQL para trabajar con arrays. Practicarás cómo cargar, consultar y desanidar diversos conjuntos de datos semiestructurados, además de cómo solucionar problemas en ellos.

Configuración

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
Nota: Usa una ventana de navegador privada o de Incógnito para ejecutar este lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab: Recuerda que, una vez que comienzas un lab, no puedes pausarlo.
Nota: Si ya tienes un proyecto o una cuenta personal de Google Cloud, no los uses en este lab para evitar cargos adicionales en tu cuenta.

Cómo iniciar su lab y acceder a la consola de Google Cloud

  1. Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab que tiene estos elementos:

    • El botón Abrir la consola de Google
    • Tiempo restante
    • Las credenciales temporales que debe usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haga clic en Abrir la consola de Google. El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ve el diálogo Elegir una cuenta, haga clic en Usar otra cuenta.
  3. Si es necesario, copie el nombre de usuario del panel Detalles del lab y péguelo en el cuadro de diálogo Acceder. Haga clic en Siguiente.

  4. Copie la contraseña del panel Detalles del lab y péguela en el cuadro de diálogo de bienvenida. Haga clic en Siguiente.

    Importante: Debe usar las credenciales del panel de la izquierda. No use sus credenciales de Google Cloud Skills Boost. Nota: Usar su propia Cuenta de Google podría generar cargos adicionales.
  5. Haga clic para avanzar por las páginas siguientes:

    • Acepte los términos y condiciones.
    • No agregue opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No se registre para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Cloud en esta pestaña.

Nota: Para ver el menú con una lista de los productos y servicios de Google Cloud, haga clic en el Menú de navegación que se encuentra en la parte superior izquierda de la pantalla. Ícono del menú de navegación

Cómo abrir la consola de BigQuery

  1. En la consola de Google Cloud, seleccione elmenú de navegación > BigQuery.

Se abrirá el cuadro de mensaje Te damos la bienvenida a BigQuery en la consola de Cloud. Este cuadro de mensaje contiene un vínculo a la guía de inicio rápido y las notas de la versión.

  1. Haga clic en Listo.

Se abrirá la consola de BigQuery.

Tarea 1: Crea un nuevo conjunto de datos para almacenar las tablas

  1. En BigQuery, haz clic en los tres puntos que aparecen junto al ID del proyecto y selecciona Crear conjunto de datos:

Se destaca la opción Crear conjunto de datos

  1. Asígnale el nombre fruit_store al nuevo conjunto de datos. Deja las otras opciones con sus valores predeterminados (Ubicación de los datos y Vencimiento predeterminado).

  2. Haz clic en Crear conjunto de datos.

Tarea 2: Practica cómo trabajar con arrays en SQL

Normalmente, en SQL habrá un único valor para cada fila, como en esta lista de frutas:

Fila

Fruit

1

raspberry

2

blackberry

3

strawberry

4

cherry

¿Qué pasaría si quisieras tener una lista de frutas para cada persona que hay en la tienda? Tal vez se vería así:

Fila

Fruit

Person

1

raspberry

sally

2

blackberry

sally

3

strawberry

sally

4

cherry

sally

5

orange

frederick

6

apple

frederick

En cualquier base de datos relacional SQL, tomarías inmediatamente la decisión de dividir la tabla en dos diferentes (Fruta y Persona) al ver los nombres que se repiten. Ese proceso se denomina normalización (pasar de una tabla a muchas) y es un enfoque frecuente para bases de datos transaccionales como MySQL.

Para el almacenamiento de datos, los analistas de datos suelen hacer lo opuesto (desnormalización) y unen muchas tablas distintas para crear una gran tabla de informes.

Ahora, aprenderás un enfoque distinto que utiliza campos repetidos para almacenar datos con distintos niveles de detalle en una sola tabla:

Fila

Fruit (array)

Person

1

raspberry

sally

blackberry

strawberry

cherry

2

orange

frederick

apple

¿Qué tiene de extraño la tabla anterior?

  • Solo tiene dos filas.
  • Hay muchos valores de campo para Fruit en una sola fila.
  • Las personas y todos los valores de campo están asociados.

¿Cuál es la estadística clave? El tipo de datos array.

Esta es una forma más sencilla de interpretar el array Fruit:

Fila

Fruit (array)

Person

1

[raspberry, blackberry, strawberry, cherry]

sally

2

[orange, apple]

frederick

Ambas tablas son exactamente iguales. De aquí surgen dos aprendizajes clave:

  • Básicamente, un array es una lista de elementos entre corchetes [ ].
  • BigQuery muestra los arrays visualmente como acoplados. Solo ordena los valores del array verticalmente (ten en cuenta que todos esos valores siguen perteneciendo a una sola fila).

Compruébalo.

  1. Ingresa lo siguiente en el editor de consultas de BigQuery:
#standardSQL SELECT ['raspberry', 'blackberry', 'strawberry', 'cherry'] AS fruit_array
  1. Haz clic en Ejecutar.

  2. Ahora prueba ejecutar esta:

#standardSQL SELECT ['raspberry', 'blackberry', 'strawberry', 'cherry', 1234567] AS fruit_array

Deberías ver un error parecido al siguiente:

Error: Array elements of types {INT64, STRING} do not have a common supertype at [3:1]

Los arrays solo pueden compartir un tipo de datos (todas las strings, todos los números).

  1. Esta es la tabla final para ejecutar la consulta:
#standardSQL SELECT person, fruit_array, total_cost FROM `data-to-insights.advanced.fruit_store`;
  1. Haz clic en Ejecutar.

  2. Después de ver los resultados, haz clic en la pestaña JSON para visualizar la estructura anidada de los resultados.

resultados en la página con pestañas de JSON

Cómo cargar archivos JSON semiestructurados a BigQuery

¿Se pregunta cómo puede transferir un archivo JSON a BigQuery?

Crea una nueva tabla fruit_details en el conjunto de datos.

  1. Haz clic en el conjunto de datos fruit_store.

Ahora verás la opción Crear tabla.

Nota: Es posible que debas ampliar la ventana del navegador para ver la opción Crear tabla.
  1. Agrega los siguientes detalles a la tabla:
  • Fuente: Selecciona Google Cloud Storage en el menú desplegable Crear tabla desde
  • Selecciona un archivo del bucket de Cloud Storage: data-insights-course/labs/optimizing-for-performance/shopping_cart.json
  • Formato de archivo: JSONL (JSON delimitado por líneas nuevas)
  1. Asigna el nombre fruit_details a la nueva tabla.

  2. Marca la casilla de verificación Esquema (Detección automática).

  3. Haz clic en Crear tabla.

En el esquema, observa que fruit_array está marcado como REPEATED, lo cual indica que es un array.

Resumen

  • BigQuery admite arrays de forma nativa.
  • Los valores de los arrays deben tener un mismo tipo de datos.
  • Los arrays se llaman campos REPETIDOS en BigQuery.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear un nuevo conjunto de datos y una tabla para almacenar nuestros datos

Tarea 3: Crea tus propios arrays con ARRAY_AGG()

Si aún no tienes arrays en tus tablas, puedes crearlos.

  1. Copia y pega la siguiente consulta para explorar este conjunto de datos públicos:
SELECT fullVisitorId, date, v2ProductName, pageTitle FROM `data-to-insights.ecommerce.all_sessions` WHERE visitId = 1501570398 ORDER BY date
  1. Haz clic en Ejecutar y visualiza los resultados.

Ahora usa la función ARRAY_AGG() para agregar los valores de nuestra cadena a un array.

  1. Copia y pega la siguiente consulta para explorar este conjunto de datos públicos:
SELECT fullVisitorId, date, ARRAY_AGG(v2ProductName) AS products_viewed, ARRAY_AGG(pageTitle) AS pages_viewed FROM `data-to-insights.ecommerce.all_sessions` WHERE visitId = 1501570398 GROUP BY fullVisitorId, date ORDER BY date
  1. Haz clic en Ejecutar y visualiza los resultados.

  1. A continuación, usa la función ARRAY_LENGTH() para contar la cantidad de páginas y productos que se visualizaron:
SELECT fullVisitorId, date, ARRAY_AGG(v2ProductName) AS products_viewed, ARRAY_LENGTH(ARRAY_AGG(v2ProductName)) AS num_products_viewed, ARRAY_AGG(pageTitle) AS pages_viewed, ARRAY_LENGTH(ARRAY_AGG(pageTitle)) AS num_pages_viewed FROM `data-to-insights.ecommerce.all_sessions` WHERE visitId = 1501570398 GROUP BY fullVisitorId, date ORDER BY date

  1. Luego, anula el duplicado de las páginas y los productos para ver cuántos productos únicos se visualizaron. Para ello, agrega DISTINCT a ARRAY_AGG():
SELECT fullVisitorId, date, ARRAY_AGG(DISTINCT v2ProductName) AS products_viewed, ARRAY_LENGTH(ARRAY_AGG(DISTINCT v2ProductName)) AS distinct_products_viewed, ARRAY_AGG(DISTINCT pageTitle) AS pages_viewed, ARRAY_LENGTH(ARRAY_AGG(DISTINCT pageTitle)) AS distinct_pages_viewed FROM `data-to-insights.ecommerce.all_sessions` WHERE visitId = 1501570398 GROUP BY fullVisitorId, date ORDER BY date

Haz clic en Revisar mi progreso para verificar el objetivo. Ejecutar la consulta para ver cuántos productos únicos se visualizaron

Resumen

Puedes hacer cosas muy útiles con los arrays, como las siguientes:

  • calcular la cantidad de elementos con ARRAY_LENGTH(<array>)
  • anular el duplicado de elementos con ARRAY_AGG(DISTINCT <field>)
  • ordenar elementos con ARRAY_AGG(<field> ORDER BY <field>)
  • limitar ARRAY_AGG(<field> LIMIT 5)

Tarea 4: Consulta conjuntos de datos que ya tienen arrays

El conjunto de datos públicos de BigQuery para Google Analytics bigquery-public-data.google_analytics_sample tiene muchos más campos y filas que el conjunto de datos de nuestro curso, data-to-insights.ecommerce.all_sessions. Lo más importante es que ya almacena valores de campo, como productos, páginas y transacciones, de forma nativa como ARRAYS.

  1. Copia y pega la siguiente consulta para explorar los datos disponibles y comprobar si puedes encontrar campos con valores repetidos (arrays):
SELECT * FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170801` WHERE visitId = 1501570398
  1. Ejecuta la consulta.

  2. Desplázate hacia la derecha sobre los resultados hasta que veas el campo hits.product.v2ProductName (en breve hablaremos sobre los distintos alias de campo).

Puede resultar abrumador analizar todos los campos disponibles en el esquema de Google Analytics.

  1. Intenta consultar solo los campos de nombre de las visitas y las páginas como hiciste anteriormente:
SELECT visitId, hits.page.pageTitle FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170801` WHERE visitId = 1501570398

Verás el siguiente error: Error:Cannot access field page on a value with type ARRAY<STRUCT<hitNumber INT64, time INT64, hour INT64, ...>> at [3:8]

Para consultar campos REPETIDOS (arrays) normalmente, primero deberás volver a dividir los arrays en filas.

Por ejemplo, el array de hits.page.pageTitle está almacenado como una sola fila, de la siguiente manera:

['homepage','product page','checkout']

Sin embargo, tiene que verse así:

['homepage', 'product page', 'checkout']

¿Cómo lo hacemos con SQL?

Respuesta: Utiliza la función UNNEST() en el campo de array:

SELECT DISTINCT visitId, h.page.pageTitle FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170801`, UNNEST(hits) AS h WHERE visitId = 1501570398 LIMIT 10

Hablaremos sobre UNNEST() más adelante en detalle, pero, por ahora, debes saber lo siguiente:

  • Tienes que utilizar UNNEST() para desanidar los arrays y volver a organizar sus elementos en filas.
  • UNNEST() siempre aparece después del nombre de la tabla en su cláusula FROM (piénsalo como una tabla previamente unida).

Haz clic en Revisar mi progreso para verificar el objetivo. Ejecutar la consulta para usar UNNEST() en el campo del array

Tarea 5: Introducción a los STRUCTS

Quizás te hayas preguntado por qué el alias de campo hit.page.pageTitle se ve como tres campos en uno, separados con puntos. Del mismo modo que los valores de los ARRAYS te otorgan flexibilidad para analizar en más profundidad el nivel de detalle de tus campos, otros tipos de datos te permiten ampliar el esquema agrupando campos relacionados. Ese tipo de datos SQL es el tipo de datos STRUCT.

La manera más fácil de pensar en un STRUCT es considerarlo una tabla separada que se unió previamente a su tabla principal.

Un STRUCT puede tener lo siguiente:

  • Uno o muchos campos
  • Los mismos tipos de datos o tipos distintos de datos para cada campo
  • Su propio alias

Parece igual a una tabla, ¿verdad?

Explora un conjunto de datos con STRUCT

  1. Para abrir el conjunto de datos bigquery-public-data, haz clic en +AGREGAR, selecciona Destaca un proyecto por nombre y, luego, ingresa el nombre bigquery-public-data

  2. Haz clic en Destacar.

El proyecto bigquery-public-data aparecerá en la sección Explorador.

  1. Abre bigquery-public-data.

  2. Busca y abre el conjunto de datos google_analytics_sample.

  3. Haz clic en la tabla ga_sessions(366)_.

  4. Comienza a desplazarte por el esquema y responde la siguiente pregunta usando la función de búsqueda en tu navegador.

Como puedes imaginar, hay una cantidad enorme de datos de sesión del sitio web almacenados para un sitio web moderno de comercio electrónico.

La ventaja principal de tener 32 STRUCTS en una sola tabla es que te permite ejecutar consultas como esta sin tener que realizar UNIONES:

SELECT visitId, totals.*, device.* FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170801` WHERE visitId = 1501570398 LIMIT 10 Nota: La sintaxis .* le indica a BigQuery que devuelva todos los campos para ese STRUCT (como lo haría si totals.* fuera una tabla independiente que unimos).

Almacenar tus tablas grandes de informes como STRUCTS (“tablas” previamente unidas) y ARRAYS (gran nivel de detalle) te permite hacer lo siguiente:

  • Evitar 32 UNIONES de tabla para obtener ventajas significativas en cuanto al rendimiento
  • Obtener datos detallados a partir de los ARRAYS cuando lo necesites, sin que haya consecuencias si no lo haces (BigQuery almacena cada columna de forma individual en el disco)
  • Tener todo el contexto comercial en una tabla, en lugar de preocuparte por las claves de UNIÓN y por recordar qué tablas tienen los datos que necesitas

Tarea 6: Practica con los STRUCTS y ARRAYS

El próximo conjunto de datos incluirá los tiempos de corredores en sus vueltas alrededor de una pista. A cada vuelta la llamaremos “fracción”.

Corredores en una pista de atletismo

  1. Para esta consulta, prueba la sintaxis de STRUCT y observa los distintos tipos de campos dentro del contenedor de struct:
#standardSQL SELECT STRUCT("Rudisha" as name, 23.4 as split) as runner

Fila

runner.name

runner.split

1

Rudisha

23.4

¿Qué puedes observar sobre los alias de campo? Puesto que el struct contiene campos anidados (los nombres y las fracciones son un subconjunto del corredor), se obtiene una notación de puntos.

¿Qué sucede si el corredor tiene varias fracciones de tiempo para una sola carrera (como el tiempo por vuelta)?

Usaremos un array, por supuesto.

  1. Ejecuta la siguiente consulta para confirmar esto:
#standardSQL SELECT STRUCT("Rudisha" as name, [23.4, 26.3, 26.4, 26.1] as splits) AS runner

Fila

runner.name

runner.splits

1

Rudisha

23.4

26.3

26.4

26.1

En resumen:

  • Los structs son contenedores que pueden tener varios tipos de datos y nombres de campos anidados.
  • Los arrays pueden ser uno de los tipos de campos dentro de un struct (como se mostró antes con el campo “fracciones”).

Practica transferir los datos de JSON

  1. Crea un nuevo conjunto de datos llamado racing.

  2. Haz clic en el conjunto de datos racing y haz clic en Crear tabla.

Nota: Es posible que debas ampliar la ventana del navegador para ver la opción Crear tabla.
  • Fuente: Selecciona Google Cloud Storage en el menú desplegable Crear tabla desde
  • Selecciona un archivo del bucket de Cloud Storage: data-insights-course/labs/optimizing-for-performance/race_results.json
  • Formato de archivo: JSONL (JSON delimitado por líneas nuevas)
  • En Esquema, haz clic en el control deslizante Editar como texto y agrega lo siguiente:
[ { "name": "race", "type": "STRING", "mode": "NULLABLE" }, { "name": "participants", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "name", "type": "STRING", "mode": "NULLABLE" }, { "name": "splits", "type": "FLOAT", "mode": "REPEATED" } ] } ]
  1. Asígnale a la tabla el nuevo nombre race_results.

  2. Haz clic en Crear tabla.

  3. Una vez que se complete el trabajo de carga, obtén una vista previa del esquema de la tabla creada recientemente:

Página con pestañas de Esquema race_results

¿Cuál es el campo STRUCT?, ¿cómo lo sabes?

El campo participants es el STRUCT porque es del tipo RECORD.

¿Qué campo es el ARRAY?

El campo participants.splits es un array de floats dentro del struct principal participants. Tiene un modo REPEATED, lo que indica que es un array. Los valores de este array se llaman valores anidados porque hay varios valores dentro de un solo campo.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear un conjunto de datos y una tabla para transferir datos de JSON

Practica cómo consultar campos repetidos y anidados

  1. Veamos los tiempos de los corredores para la carrera de 800 metros:
#standardSQL SELECT * FROM racing.race_results

¿Cuántas filas muestra la consulta?

Respuesta: 1

Resultados de la consulta en la página con pestañas de Resultados, con la fila número (1) destacada.

¿Qué pasaría si quisieras mostrar el nombre de cada corredor y el tipo de carrera?

  1. Ejecuta el siguiente esquema y ve qué sucede:
#standardSQL SELECT race, participants.name FROM racing.race_results

Error: Cannot access field name on a value with type ARRAY<STRUCT<name STRING, splits ARRAY<FLOAT64>>>> at [2:27]

Tal como sucede cuando olvidas la instrucción GROUP BY al usar funciones de suma, aquí tenemos dos niveles de detalle diferentes: una fila para la carrera y tres filas para los nombres de los participantes. ¿Qué puedes hacer para cambiar esto?

Fila

race

participants.name

1

800 m

Rudisha

2

???

Makhloufi

3

???

Murphy

…¿por esto?

Fila

race

participants.name

1

800 m

Rudisha

2

800 m

Makhloufi

3

800 m

Murphy

En SQL relacional tradicional, si tuvieras una tabla de carreras y una de participantes, ¿qué harías para obtener información de ambas tablas? Las UNIRÍAS. La STRUCT de participantes (que es conceptualmente muy similar a una tabla) ya es parte de tu tabla de carreras, pero aún no se correlaciona correctamente con tu campo “race” que no pertenece a la STRUCT.

¿Qué comando SQL de dos palabras usarías para correlacionar la carrera de 800 m con cada corredor de la primera tabla?

Respuesta: UNIÓN CRUZADA

Perfecto.

  1. Ahora intenta ejecutar lo siguiente:
#standardSQL SELECT race, participants.name FROM racing.race_results CROSS JOIN participants # this is the STRUCT (it is like a table within a table)

Table name "participants" missing dataset while no default dataset is set in the request.

Si bien el struct de participantes es como una tabla, técnicamente sigue siendo un campo de la tabla racing.race_results.

  1. Agrega el nombre del conjunto de datos a la consulta:
#standardSQL SELECT race, participants.name FROM racing.race_results CROSS JOIN race_results.participants # full STRUCT name
  1. Y haz clic en Ejecutar.

¡Bien! Mostraste correctamente la lista de todos los corredores de cada carrera.

Fila

race

name

1

800 m

Rudisha

2

800 m

Makhloufi

3

800 m

Murphy

4

800 m

Bosse

5

800 m

Rotich

6

800 m

Lewandowski

7

800 m

Kipketer

8

800 m

Berian

  1. Para simplificar la última consulta, puedes hacer lo siguiente:
  • Agregar un alias para la tabla original
  • Reemplazar las palabras "CROSS JOIN" por una coma, ya que, implícitamente, realiza la unión cruzada

El resultado de la consulta será el mismo:

#standardSQL SELECT race, participants.name FROM racing.race_results AS r, r.participants

Si tienes más de un tipo de carrera (800 m, 100 m, 200 m), ¿una UNIÓN CRUZADA no asociaría el nombre de cada corredor con todas las carreras posibles como un producto cartesiano?

Respuesta: No. Esta es una unión cruzada correlacionada que solo descomprime los elementos asociados con una sola fila. Para obtener un análisis más detallado del tema, consulta cómo trabajar con ARRAYS y STRUCTS

Resumen de los STRUCTS:

  • Un STRUCT de SQL es básicamente un contenedor de otros campos de datos que pueden ser de distintos tipos. La palabra “struct” significa “estructura de datos”. Recuerda el ejemplo de antes: STRUCT(``"Rudisha" as name, [23.4, 26.3, 26.4, 26.1] as splits``)`` AS runner
  • A los STRUCTS se les da un alias (como “runner” en el ejemplo anterior) y podemos entenderlos como una tabla dentro de una tabla principal.
  • Es necesario descomprimir los STRUCTS (y los ARRAYS) para poder usar sus elementos. Incluya UNNEST() junto al nombre del struct o del campo del struct que es un array para descomprimirlo y compactarlo.

Tarea 7: Pregunta del lab: STRUCT()

Usa la tabla racing.race_results que creaste anteriormente para responder la siguiente pregunta.

Tarea: Escribe una consulta para CONTAR cuántos corredores había en total.

  • Para comenzar, usa la siguiente consulta escrita parcialmente:
#standardSQL SELECT COUNT(participants.name) AS racer_count FROM racing.race_results Nota: Recuerda que deberás realizar una unión cruzada en el nombre de tu struct como fuente adicional de datos después de FROM.

Solución posible:

#standardSQL SELECT COUNT(p.name) AS racer_count FROM racing.race_results AS r, UNNEST(r.participants) AS p

Fila

racer_count

1

8

Respuesta: 8 corredores participaron en la carrera.

Haz clic en Revisar mi progreso para verificar el objetivo. Ejecutar la consulta para CONTAR cuántos corredores había en total

Tarea 8: Pregunta del lab: Cómo descomprimir arrays con UNNEST( )

Escribe una consulta que muestre una lista del tiempo total de carrera correspondiente a los corredores cuyos nombres comiencen con R. Ordena los resultados de modo que el mejor tiempo total aparezca primero. Usa el operador UNNEST() y comienza con la consulta escrita parcialmente que figura a continuación.

  • Completa la consulta:
#standardSQL SELECT p.name, SUM(split_times) as total_race_time FROM racing.race_results AS r , r.participants AS p , p.splits AS split_times WHERE GROUP BY ORDER BY ; Nota:
  • Deberás descomprimir la struct y el array dentro de la struct como fuentes de datos después de la cláusula FROM.
  • Asegúrate de usar alias cuando corresponda.

Solución posible:

#standardSQL SELECT p.name, SUM(split_times) as total_race_time FROM racing.race_results AS r , UNNEST(r.participants) AS p , UNNEST(p.splits) AS split_times WHERE p.name LIKE 'R%' GROUP BY p.name ORDER BY total_race_time ASC;

Fila

name

total_race_time

1

Rudisha

102.19999999999999

2

Rotich

103.6

Haz clic en Revisar mi progreso para verificar el objetivo. Ejecutar la consulta que mostrará una lista del tiempo total de carrera correspondiente a los corredores cuyos nombres comiencen con R

Tarea 9: Cómo filtrar dentro de los valores de array

Descubriste que el tiempo por vuelta más rápido registrado para la carrera de 800 m fue de 23.2 segundos, pero no viste qué corredor dio esa vuelta en particular. Crea una consulta que devuelva ese resultado.

  • Completa la consulta escrita parcialmente:
#standardSQL SELECT p.name, split_time FROM racing.race_results AS r , r.participants AS p , p.splits AS split_time WHERE split_time = ;

Solución posible:

#standardSQL SELECT p.name, split_time FROM racing.race_results AS r , UNNEST(r.participants) AS p , UNNEST(p.splits) AS split_time WHERE split_time = 23.2;

Fila

name

split_time

1

Kipketer

23.2

Haz clic en Revisar mi progreso para verificar el objetivo. Ejecutar la consulta para ver qué corredor logró el tiempo por vuelta más rápido

¡Felicitaciones!

Transferiste correctamente conjuntos de datos JSON, creaste ARRAYS y STRUCTS y desanidaste datos semiestructurados para estadísticas.

Finaliza la Quest

Este lab de autoaprendizaje forma parte de la Quest BigQuery for Data Warehousing. Una Quest es una serie de labs relacionados que forman una ruta de aprendizaje. Si completas esta Quest, obtendrás la insignia que se muestra arriba como reconocimiento de tu logro. Puedes hacer públicas tus insignias y agregar vínculos a ellas en tu currículum en línea o en tus cuentas de redes sociales. Inscríbete en una Quest y obtén un crédito inmediato de finalización después de haber realizado este lab. Consulta otras Quests disponibles.

Realiza tu próximo lab

Continúa tu Quest con Crea tablas particionadas por fecha en BigQuery o consulta las siguientes sugerencias:

Próximos pasos/Más información

Capacitación y certificación de Google Cloud

Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.

Última actualización del manual: 25 de agosto de 2023

Prueba más reciente del lab: 25 de agosto de 2023

Copyright 2024 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.