Especifica columnas anidadas y repetidas en esquemas de tablas
En esta página, se describe cómo definir un esquema de tabla con columnas anidadas y repetidas en BigQuery. Para obtener una descripción general de los esquemas de tablas, consulta Especifica un esquema.
Define columnas anidadas y repetidas
Para crear una columna con datos anidados, establece el tipo de datos de la columna como RECORD en el esquema. Se puede acceder a un RECORD como un tipo STRUCT en GoogleSQL. Una STRUCT es un contenedor de campos ordenados.
Para crear una columna con datos repetidos, establece el modo de la columna como REPEATED en el esquema.
Se puede acceder a un campo repetido como un tipo ARRAY en GoogleSQL.
Una columna RECORD puede tener el modo REPEATED, que se representa como un arreglo de tipos STRUCT. Además, un campo dentro de un registro se puede repetir, que se representa como un STRUCT que contiene un ARRAY. Un arreglo no puede contener otro arreglo directamente. Para obtener más información, consulta Declara un tipo ARRAY.
Limitaciones
Los esquemas anidados y repetidos están sujetos a las siguientes limitaciones:
- Un esquema no puede contener más de 15 niveles de tipos
RECORDanidados. - Las columnas de tipo
RECORDpueden contener tiposRECORDanidados, también llamados registros secundarios. El límite de profundidad de anidado máximo es de 15 niveles. Este límite es independiente de si losRECORDs son escalares o basados en arrays (repetidos).
El tipo RECORD no es compatible con UNION, INTERSECT, EXCEPT DISTINCT y SELECT DISTINCT.
Esquema de ejemplo
El siguiente ejemplo presenta datos anidados y repetidos de muestra. Esta tabla contiene información sobre las personas. Consta de los siguientes campos:
idfirst_namelast_namedob(fecha de nacimiento)addresses(un campo anidado y repetido)addresses.status(actual o anterior)addresses.addressaddresses.cityaddresses.stateaddresses.zipaddresses.numberOfYears(años en la dirección)
El archivo de datos JSON debería ser similar a lo que se muestra a continuación. Observa que la columna de direcciones contiene un arreglo de valores (indicado por [ ]). Las múltiples direcciones en el arreglo son los datos repetidos. Los múltiples campos dentro de cada dirección son los datos anidados.
{"id":"1","first_name":"John","last_name":"Doe","dob":"1968-01-22","addresses":[{"status":"current","address":"123 First Avenue","city":"Seattle","state":"WA","zip":"11111","numberOfYears":"1"},{"status":"previous","address":"456 Main Street","city":"Portland","state":"OR","zip":"22222","numberOfYears":"5"}]}
{"id":"2","first_name":"Jane","last_name":"Doe","dob":"1980-10-16","addresses":[{"status":"current","address":"789 Any Avenue","city":"New York","state":"NY","zip":"33333","numberOfYears":"2"},{"status":"previous","address":"321 Main Street","city":"Hoboken","state":"NJ","zip":"44444","numberOfYears":"3"}]}
El esquema para esta tabla se ve de la siguiente manera:
[ { "name": "id", "type": "STRING", "mode": "NULLABLE" }, { "name": "first_name", "type": "STRING", "mode": "NULLABLE" }, { "name": "last_name", "type": "STRING", "mode": "NULLABLE" }, { "name": "dob", "type": "DATE", "mode": "NULLABLE" }, { "name": "addresses", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "status", "type": "STRING", "mode": "NULLABLE" }, { "name": "address", "type": "STRING", "mode": "NULLABLE" }, { "name": "city", "type": "STRING", "mode": "NULLABLE" }, { "name": "state", "type": "STRING", "mode": "NULLABLE" }, { "name": "zip", "type": "STRING", "mode": "NULLABLE" }, { "name": "numberOfYears", "type": "STRING", "mode": "NULLABLE" } ] } ]
Especifica las columnas anidadas y repetidas en el ejemplo
Para crear una tabla nueva con las columnas anidadas y repetidas anteriores, selecciona una de las siguientes opciones:
Console
Especifica la columna addresses anidada y repetida:
En la Google Cloud consola de, abre la página de BigQuery.
En el panel de la izquierda, haz clic en Explorer:

Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.
En el panel Explorador, expande tu proyecto, haz clic en Conjuntos de datos y luego, selecciona un conjunto de datos.
En el panel de detalles, haz clic en Crear tabla.
En la página Crear tabla, especifica los siguientes detalles:
- En Fuente, en el campo Crear tabla desde, selecciona Tabla vacía.
En la sección Destino, especifica los siguientes campos:
- En Conjunto de datos, selecciona el conjunto de datos en el que deseas crear la tabla.
- En Tabla, ingresa el nombre de la tabla que deseas crear.
En Esquema, haz clic en Agregar campo y, luego, ingresa el siguiente esquema de la tabla:
- En Nombre del campo (Field name), ingresa
addresses. - En Tipo (Type), selecciona REGISTRO (RECORD).
- En Modo (Mode), selecciona REPEATED.
Especifica los siguientes campos para un campo anidado:
- En el campo Nombre del campo (Field name), ingresa
status. - En Tipo (Type), selecciona STRING.
- En Modo (Mode), deja el valor configurado como NULLABLE.
Haz clic en Agregar campo para agregar los siguientes campos:
Nombre del campo Tipo Modo addressSTRINGNULLABLEcitySTRINGNULLABLEstateSTRINGNULLABLEzipSTRINGNULLABLEnumberOfYearsSTRINGNULLABLE
Como alternativa, haz clic en Editar como texto y especifica el esquema como un arreglo JSON.
- En el campo Nombre del campo (Field name), ingresa
- En Nombre del campo (Field name), ingresa
SQL
Usa la sentencia CREATE TABLE.
Especifica el esquema con la
opción de columna:
En la Google Cloud consola de, ve a la página BigQuery.
En el editor de consultas, escribe la siguiente sentencia:
CREATE TABLE IF NOT EXISTS mydataset.mytable ( id STRING, first_name STRING, last_name STRING, dob DATE, addresses ARRAY< STRUCT< status STRING, address STRING, city STRING, state STRING, zip STRING, numberOfYears STRING>> ) OPTIONS ( description = 'Example name and addresses table');
Haz clic en Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
bq
Para especificar la columna anidada y repetida addresses en un archivo de esquema JSON, usa un editor de texto a fin de crear un archivo nuevo. Pega la definición de esquema de ejemplo que se muestra arriba.
Después de crear tu archivo de esquema JSON, puedes proporcionarlo a través de la herramienta de línea de comandos de bq. Para obtener más información, consulta Usa un archivo de esquema JSON.
Ir
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.