Skip to content

Uso de BigQuery desde Cloud Shell

BigQuery puede utilizarse desde la interfaz web de Google Cloud Platform, pero también desde la terminal integrada llamada Cloud Shell. Esta es una guía paso a paso para crear un dataset, cargar datos en una tabla y realizar consultas usando comandos desde Cloud Shell.

Comenzaremos por crear y consultar nuestra propia tabla y, luego, aprenderemos a acceder a datos públicos.


1️⃣ Activar Cloud Shell

Haz clic en el ícono de terminal en la esquina superior derecha de la consola de Google Cloud Platform para abrir Cloud Shell.


2️⃣ Verificar cuenta activa

Muestra la cuenta de usuario actualmente autenticada:

bash
gcloud auth list

3️⃣ Verificar y preparar el entorno de trabajo

Antes de crear un dataset, asegúrate de estar en el proyecto correcto:

bash
gcloud config list project

Si necesitas cambiar de proyecto:

bash
gcloud config set project [PROJECT_ID]

Luego, puedes verificar si ya existen datasets dentro del proyecto:

bash
bq ls

Ejemplo de salida si no existen datasets:

Dataset list for project [tu-proyecto]:

Ejemplo de salida si existe al menos un dataset:

Dataset list for project [tu-proyecto]:
+------------+
| datasetId  |
+------------+
| babynames  |
+------------+

4️⃣ Crear un nuevo dataset

Crea un dataset llamado babynames:

bash
bq mk babynames

5️⃣ Crear una tabla y cargar datos

Descargar el archivo ZIP con datos reales:

bash
wget http://www.ssa.gov/OACT/babynames/names.zip

Descomprimir el archivo:

bash
unzip names.zip

Cargar los datos en una nueva tabla llamada names2010:

bash
bq load babynames.names2010 yob2010.txt name:string,gender:string,count:integer

6️⃣ Crear tabla e insertar datos manualmente

Puedes crear una tabla vacía y luego ingresar datos manualmente desde Cloud Shell:

Crear la tabla:

bash
bq mk --table babynames.names2010 name:STRING,gender:STRING,count:INTEGER

Insertar registros manuales:

bash
bq insert babynames.names2010 name="Luna",gender="F",count=1500
bq insert babynames.names2010 name="Mateo",gender="M",count=1350

💡 Ten en cuenta que bq insert puede requerir el componente beta de gcloud y tiene limitaciones. Alternativamente puedes usar la consola web.


7️⃣ Crear tabla e importar CSV desde tu computador

Si tienes un archivo CSV local (por ejemplo, nombres.csv), puedes cargarlo así:

  1. Sube el archivo a Cloud Shell usando el botón Upload file.
  2. Luego, crea la tabla manualmente:
bash
bq mk --table babynames.names2010 name:STRING,gender:STRING,count:INTEGER
  1. Finalmente, carga el contenido del archivo:
bash
bq load --skip_leading_rows=1 --source_format=CSV babynames.names2010 ./nombres.csv

Asegúrate de que el archivo tenga encabezados (name,gender,count) y esté codificado en UTF-8.


8️⃣ Verificar si existe una tabla dentro de un dataset

Para listar todas las tablas dentro del dataset babynames y confirmar que se haya creado correctamente:

bash
bq ls babynames

Ejemplo de salida esperada:

Tables in dataset [tu-proyecto:babynames]:
+------------+--------+
| tableId    | Type   |
+------------+--------+
| names2010  | TABLE  |
+------------+--------+

9️⃣ Consultar la tabla creada

Nombres femeninos más comunes:

bash
bq query "SELECT name, count FROM babynames.names2010 WHERE gender = 'F' ORDER BY count DESC LIMIT 5"

Resultado esperado:

+-----------+--------+
| name      | count  |
+-----------+--------+
| Isabella  | 22951  |
| Sophia    | 20612  |
| Emma      | 17289  |
| Olivia    | 17091  |
| Ava       | 15300  |
+-----------+--------+

Nombres masculinos menos comunes:

bash
bq query "SELECT name, count FROM babynames.names2010 WHERE gender = 'M' ORDER BY count ASC LIMIT 5"

Resultado esperado:

+----------+-------+
| name     | count |
+----------+-------+
| Adron    | 5     |
| Agapito  | 5     |
| Alix     | 5     |
| Anel     | 5     |
| Ardie    | 5     |
+----------+-------+


🔟 Examinar la tabla creada (estructura y metadatos)

Para ver los detalles de la tabla names2010, incluyendo el esquema, la cantidad de filas y la fecha de modificación:

bash
bq show babynames.names2010

Ejemplo de salida esperada:

Table babynames:names2010

   Last modified          Schema               Total Rows
 ----------------- ------------------------  -------------
  2025-08-01 21:00   |- name: string         34000
                     |- gender: string
                     |- count: integer

También puedes ver los metadatos en formato JSON:

bash
bq show --format=prettyjson babynames.names2010

Esto es útil si necesitas procesar los resultados programáticamente o integrarlos con otras herramientas.


1️⃣1️⃣ Eliminar dataset y sus tablas

bash
bq rm -r babynames

⚠️ Esto eliminará el dataset babynames y todas las tablas asociadas. Úsalo con precaución.