Cargar datos JSON desde Cloud Storage
Puedes cargar datos JSON delimitados por saltos de línea (ndJSON) de Cloud Storage en una tabla o partición nuevas, o bien añadirlos a una tabla o partición ya creadas o sobrescribirlas. Cuando los datos se cargan en BigQuery, se convierten al formato de columnas de Capacitor (el formato de almacenamiento de BigQuery).
Cuando cargas datos de Cloud Storage en una tabla de BigQuery, el conjunto de datos que contiene la tabla debe estar en la misma ubicación regional o multirregional que el segmento de Cloud Storage.
El formato ndJSON es el mismo que el formato JSON Lines.
Limitaciones
Cuando cargas datos en BigQuery desde un segmento de Cloud Storage, estás sujeto a las siguientes limitaciones:
- BigQuery no garantiza la coherencia de los datos de las fuentes de datos externas. Si se modifican los datos subyacentes mientras se ejecuta una consulta, se pueden producir comportamientos inesperados.
- BigQuery no admite la gestión de versiones de objetos de Cloud Storage. Si incluyes un número de generación en el URI de Cloud Storage, el trabajo de carga fallará.
Cuando cargues archivos JSON en BigQuery, ten en cuenta lo siguiente:
- Los datos JSON deben estar delimitados por líneas nuevas (ndJSON). Cada objeto JSON debe estar en una línea independiente del archivo.
- Si usa la compresión gzip, BigQuery no puede leer los datos en paralelo. Cargar datos JSON comprimidos en BigQuery es más lento que cargar datos sin comprimir.
- No puedes incluir archivos comprimidos y sin comprimir en el mismo trabajo de carga.
- El tamaño máximo de un archivo gzip es de 4 GB.
BigQuery admite el tipo
JSON
aunque la información del esquema no se conozca en el momento de la ingestión. Un campo declarado como tipoJSON
se carga con los valores JSON sin procesar.Si usas la API de BigQuery para cargar un número entero fuera del intervalo [-253+1, 253-1] (normalmente, esto significa que es mayor que 9.007.199.254.740.991) en una columna de números enteros (INT64), pásalo como una cadena para evitar que los datos se dañen. Este problema se debe a una limitación en el tamaño de los números enteros en JSON o ECMAScript. Para obtener más información, consulta la sección Números de RFC 7159.
- Cuando cargues datos CSV o JSON, los valores de las columnas
DATE
deben usar el guion (-
) como separador y la fecha debe tener el siguiente formato:YYYY-MM-DD
(año-mes-día). - Cuando cargues datos JSON o CSV, los valores de las columnas
TIMESTAMP
deben usar un guion (-
) o una barra (/
) como separador en la parte de la fecha de la marca de tiempo. Además, la fecha debe tener uno de los siguientes formatos:YYYY-MM-DD
(año-mes-día) oYYYY/MM/DD
(año/mes/día). La partehh:mm:ss
(hora-minuto-segundo) de la marca de tiempo debe usar dos puntos (:
) como separador. Los archivos deben cumplir los límites de tamaño de archivo JSON que se describen en los límites de los trabajos de carga.
Antes de empezar
Asigna roles de gestión de identidades y accesos (IAM) que proporcionen a los usuarios los permisos necesarios para realizar cada tarea de este documento y crea un conjunto de datos para almacenar tus datos.
Permisos obligatorios
Para cargar datos en BigQuery, necesitas permisos de gestión de identidades y accesos para ejecutar un trabajo de carga y cargar datos en tablas y particiones de BigQuery. Si cargas datos desde Cloud Storage, también necesitas permisos de IAM para acceder al segmento que contiene tus datos.
Permisos para cargar datos en BigQuery
Para cargar datos en una tabla o partición de BigQuery, o bien para añadir o sobrescribir una tabla o partición, necesitas los siguientes permisos de gestión de identidades y accesos:
bigquery.tables.create
bigquery.tables.updateData
bigquery.tables.update
bigquery.jobs.create
Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye los permisos que necesitas para cargar datos en una tabla o partición de BigQuery:
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
(incluye el permisobigquery.jobs.create
)bigquery.user
(incluye el permisobigquery.jobs.create
)bigquery.jobUser
(incluye el permisobigquery.jobs.create
)
Además, si tienes el permiso bigquery.datasets.create
, puedes crear y actualizar tablas mediante un trabajo de carga en los conjuntos de datos que crees.
Para obtener más información sobre los roles y permisos de IAM en BigQuery, consulta el artículo sobre funciones y permisos predefinidos.
Permisos para cargar datos desde Cloud Storage
Para obtener los permisos que necesitas para cargar datos desde un segmento de Cloud Storage, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de Storage (roles/storage.admin
) en el segmento.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para cargar datos desde un segmento de Cloud Storage. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para cargar datos desde un segmento de Cloud Storage, se necesitan los siguientes permisos:
-
storage.buckets.get
-
storage.objects.get
-
storage.objects.list (required if you are using a URI wildcard)
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Crear conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tus datos.
Compresión JSON
Puedes usar la utilidad gzip
para comprimir archivos JSON. Ten en cuenta que gzip
realiza una compresión completa de los archivos, a diferencia de la compresión del contenido de los archivos que realizan los códecs de compresión para otros formatos de archivo, como Avro. Usar gzip
para comprimir tus archivos JSON puede afectar al rendimiento. Para obtener más información sobre las ventajas y desventajas, consulta Cargar datos comprimidos y sin comprimir.
Cargar datos de JSON en una tabla nueva
Para cargar datos JSON de Cloud Storage en una tabla de BigQuery, sigue estos pasos:
Consola
En la Google Cloud consola, ve a la página BigQuery.
- En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
- En la sección Información del conjunto de datos, haz clic en Crear tabla.
- En el panel Crear tabla, especifica los siguientes detalles:
- En la sección Fuente, selecciona Google Cloud Storage en la lista Crear tabla a partir de.
A continuación, siga estos pasos:
- Selecciona un archivo del segmento de Cloud Storage o introduce el URI de Cloud Storage.
No puedes incluir varias URIs en la consola Google Cloud , pero sí caracteres comodín. El segmento de Cloud Storage debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que quieres crear, añadir o sobrescribir.
- En Formato de archivo, selecciona JSONL (JSON delimitado por líneas nuevas).
- Selecciona un archivo del segmento de Cloud Storage o introduce el URI de Cloud Storage.
No puedes incluir varias URIs en la consola Google Cloud , pero sí caracteres comodín. El segmento de Cloud Storage debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que quieres crear, añadir o sobrescribir.
- En la sección Destino, especifica los siguientes detalles:
- En Conjunto de datos, selecciona el conjunto de datos en el que quieras crear la tabla.
- En el campo Tabla, introduce el nombre de la tabla que quieras crear.
- Verifica que el campo Tipo de tabla sea Tabla nativa.
- En la sección Schema (Esquema), introduce la definición de schema.
Para habilitar la detección automática de un esquema, selecciona Detectar automáticamente.
Puede introducir la información del esquema manualmente mediante uno de los siguientes métodos:
- Opción 1: Haz clic en Editar como texto y pega el esquema en forma de matriz JSON. Cuando usas una matriz JSON, generas el esquema siguiendo el mismo proceso que para crear un archivo de esquema JSON.
Para ver el esquema de una tabla en formato JSON, introduce el siguiente comando:
bq show --format=prettyjson dataset.table
- Opción 2: Haz clic en Tipo y Modo de cada campo. Añadir campo e introduce el esquema de la tabla. Especifica el Nombre,
- Opción 1: Haz clic en Editar como texto y pega el esquema en forma de matriz JSON. Cuando usas una matriz JSON, generas el esquema siguiendo el mismo proceso que para crear un archivo de esquema JSON.
Para ver el esquema de una tabla en formato JSON, introduce el siguiente comando:
- Opcional: Especifica la configuración de partición y clúster. Para obtener más información, consulta los artículos sobre cómo crear tablas con particiones y cómo crear y usar tablas agrupadas en clústeres.
- Haz clic en Opciones avanzadas y haz lo siguiente:
- En Write preference (Preferencia de escritura), deja seleccionada la opción Write if empty (Escribir si está vacía). Con esta opción se crea una tabla y se cargan los datos en ella.
- En Número de errores permitidos, acepta el valor predeterminado
0
o introduce el número máximo de filas que contengan errores que se pueden ignorar. Si el número de filas con errores supera este valor, el trabajo mostrará un mensajeinvalid
y fallará. Esta opción solo se aplica a los archivos CSV y JSON. - En Zona horaria, introduzca la zona horaria predeterminada que se aplicará al analizar los valores de marca de tiempo que no tengan una zona horaria específica. Consulta aquí más nombres de zonas horarias válidos. Si no se incluye este valor, las marcas de tiempo sin una zona horaria específica se analizan con la zona horaria predeterminada UTC. Vista previa.
- En Formato de fecha, introduce los
elementos de formato que definen cómo se formatean los valores DATE en los archivos de entrada. Este campo espera el formato de estilos SQL (por ejemplo,
MM/DD/YYYY
). Si este valor está presente, este formato es el único compatible con DATE. La detección automática de esquemas también decidirá el tipo de columna DATE en función de este formato en lugar del formato actual. Si no se incluye este valor, el campo DATE se analiza con los formatos predeterminados. Vista previa. - En Formato de fecha y hora, introduce los
elementos de formato que definen cómo se formatean los valores DATETIME en los archivos de entrada.
Este campo espera el formato de estilos SQL (por ejemplo,
MM/DD/YYYY HH24:MI:SS.FF3
). Si se incluye este valor, este formato será el único compatible con DATETIME. La detección automática de esquemas también decidirá el tipo de columna DATETIME en función de este formato en lugar del formato actual. Si este valor no está presente, el campo DATETIME se analiza con los formatos predeterminados. Vista previa. - En Formato de hora, introduzca los
elementos de formato que definen cómo se formatean los valores TIME en los archivos de entrada. Este campo espera el formato de estilos SQL (por ejemplo,
HH24:MI:SS.FF3
). Si se incluye este valor, será el único formato TIME compatible. La detección automática de esquemas también determinará el tipo de columna TIME en función de este formato en lugar del formato actual. Si no se incluye este valor, el campo TIME se analiza con los formatos predeterminados. Vista previa. - En Formato de marca de tiempo, introduzca los
elementos de formato que definen cómo se formatean los valores TIMESTAMP en los archivos de entrada.
Este campo espera el formato de estilos SQL (por ejemplo,
MM/DD/YYYY HH24:MI:SS.FF3
). Si se incluye este valor, este formato será el único compatible con TIMESTAMP. La detección automática de esquemas también determinará el tipo de columna TIMESTAMP en función de este formato en lugar del formato actual. Si no se incluye este valor, el campo TIMESTAMP se analiza con los formatos predeterminados. Vista previa. - Si quieres ignorar los valores de una fila que no estén presentes en el esquema de la tabla, selecciona Valores desconocidos.
- En Encriptado, haz clic en Clave gestionada por el cliente para usar una clave de Cloud Key Management Service. Si dejas el ajuste Google-managed key, BigQuery cifra los datos en reposo.
- Haz clic en Crear tabla.
SQL
Usa la
LOAD DATA
instrucción DDL.
En el siguiente ejemplo se carga un archivo JSON en la nueva tabla mytable
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
LOAD DATA OVERWRITE mydataset.mytable (x INT64,y STRING) FROM FILES ( format = 'JSON', uris = ['gs://bucket/path/file.json']);
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
bq
Usa el comando bq load
, especifica NEWLINE_DELIMITED_JSON
con la marca --source_format
e incluye un URI de Cloud Storage.
Puede incluir un solo URI, una lista de URIs separados por comas o un URI que contenga un comodín.
Proporciona el esquema de forma insertada, en un archivo de definición de esquema o usa la detección automática de esquemas.
(Opcional) Proporcione la marca --location
y asigne el valor a su ubicación.
Otras marcas opcionales son:
--max_bad_records
: número entero que especifica el número máximo de registros incorrectos que se permiten antes de que falle todo el trabajo. El valor predeterminado es0
. Se devuelven como máximo cinco errores de cualquier tipo, independientemente del valor de--max_bad_records
.--ignore_unknown_values
: cuando se especifica, permite e ignora los valores adicionales no reconocidos en los datos CSV o JSON.--time_zone
: (Vista previa) Una zona horaria predeterminada opcional que se aplicará al analizar los valores de marca de tiempo que no tengan una zona horaria específica en los datos CSV o JSON.--date_format
: (Vista previa) Cadena personalizada opcional que define cómo se formatean los valores DATE en los datos CSV o JSON.--datetime_format
: (Vista previa) Cadena personalizada opcional que define cómo se formatean los valores DATETIME en los datos CSV o JSON.--time_format
: (Vista previa) Cadena personalizada opcional que define cómo se formatean los valores de TIME en los datos CSV o JSON.--timestamp_format
: (Vista previa) Cadena personalizada opcional que define el formato de los valores TIMESTAMP en los datos CSV o JSON.--autodetect
: Cuando se especifica, habilita la detección automática de esquemas para datos CSV y JSON.--time_partitioning_type
: habilita la creación de particiones basadas en el tiempo en una tabla y define el tipo de partición. Los valores posibles sonHOUR
,DAY
,MONTH
yYEAR
. Esta marca es opcional cuando se crea una tabla con particiones en una columnaDATE
,DATETIME
oTIMESTAMP
. El tipo de partición predeterminado para la partición basada en tiempo esDAY
. No puedes cambiar la especificación de partición de una tabla que ya tengas.--time_partitioning_expiration
: número entero que especifica (en segundos) cuándo se debe eliminar una partición basada en el tiempo. El tiempo de caducidad se calcula como la fecha UTC de la partición más el valor entero.--time_partitioning_field
: columnaDATE
oTIMESTAMP
que se usa para crear una tabla con particiones. Si se habilita la creación de particiones basadas en tiempo sin este valor, se creará una tabla con particiones por hora de ingestión.--require_partition_filter
: cuando se habilita esta opción, los usuarios deben incluir una cláusulaWHERE
que especifique las particiones que se van a consultar. Si usas este filtro, es posible que rebajes los costes y mejores el rendimiento. Para obtener más información, consulta Requerir un filtro de partición en las consultas.--clustering_fields
: lista separada por comas de hasta cuatro nombres de columna que se usa para crear una tabla agrupada en clústeres.--destination_kms_key
: la clave de Cloud KMS para cifrar los datos de la tabla.Para obtener más información sobre las tablas con particiones, consulta los siguientes artículos:
Para obtener más información sobre las tablas agrupadas en clústeres, consulta los siguientes enlaces:
Para obtener más información sobre el cifrado de tablas, consulta los siguientes artículos:
Para cargar datos JSON en BigQuery, introduce el siguiente comando:
bq --location=LOCATION load \ --source_format=FORMAT \ DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Haz los cambios siguientes:
LOCATION
: tu ubicación. La marca--location
es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes asignar el valorasia-northeast1
a la marca. Puedes definir un valor predeterminado para la ubicación mediante el archivo.bigqueryrc.FORMAT
:NEWLINE_DELIMITED_JSON
.DATASET
: un conjunto de datos.TABLE
: el nombre de la tabla en la que vas a cargar los datos.PATH_TO_SOURCE
: un URI de Cloud Storage completo o una lista de URIs separados por comas. También se admiten comodines.SCHEMA
: un esquema válido. El esquema puede ser un archivo JSON local o se puede escribir directamente como parte del comando. Si usas un archivo de esquema, no le asignes ninguna extensión. También puedes usar la marca--autodetect
en lugar de proporcionar una definición de esquema.
Ejemplos:
El siguiente comando carga datos de gs://mybucket/mydata.json
en una tabla llamada mytable
en mydataset
. El esquema se define en un archivo de esquema local llamado myschema
.
bq load \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
./myschema
El siguiente comando carga datos de gs://mybucket/mydata.json
en una tabla con particiones por tiempo de ingestión llamada mytable
en mydataset
. El esquema se define en un archivo de esquema local llamado myschema
.
bq load \
--source_format=NEWLINE_DELIMITED_JSON \
--time_partitioning_type=DAY \
mydataset.mytable \
gs://mybucket/mydata.json \
./myschema
El siguiente comando carga datos de gs://mybucket/mydata.json
en una tabla particionada llamada mytable
en mydataset
. que cuenta con particiones por la columna mytimestamp
. El esquema se define en un archivo de esquema local
llamado myschema
.
bq load \
--source_format=NEWLINE_DELIMITED_JSON \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.json \
./myschema
El siguiente comando carga datos de gs://mybucket/mydata.json
en una tabla llamada mytable
en mydataset
. El esquema se detecta automáticamente.
bq load \
--autodetect \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json
El siguiente comando carga datos de gs://mybucket/mydata.json
en una tabla llamada mytable
en mydataset
. El esquema se define de forma insertada en el formato FIELD:DATA_TYPE, FIELD:DATA_TYPE
.
bq load \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
qtr:STRING,sales:FLOAT,year:STRING
RECORD
El siguiente comando carga datos de varios archivos de gs://mybucket/
en una tabla llamada mytable
de mydataset
. El URI de Cloud Storage usa un comodín. El esquema se detecta automáticamente.
bq load \
--autodetect \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata*.json
El siguiente comando carga datos de varios archivos de gs://mybucket/
en una tabla llamada mytable
de mydataset
. El comando incluye una lista de URIs de Cloud Storage separados por comas con comodines. El esquema se define en un archivo de esquema local llamado myschema
.
bq load \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
"gs://mybucket/00/*.json","gs://mybucket/01/*.json" \
./myschema
API
Crea una tarea
load
que apunte a los datos de origen en Cloud Storage.(Opcional) Especifica tu ubicación en la propiedad
location
de la secciónjobReference
del recurso de empleo.La propiedad
source URIs
debe estar totalmente cualificada y tener el formatogs://BUCKET/OBJECT
. Cada URI puede contener un carácter comodín "*".Especifique el formato de datos
JSON
asignando el valorNEWLINE_DELIMITED_JSON
a la propiedadsourceFormat
.Para comprobar el estado del trabajo, llama a
jobs.get(JOB_ID*)
, sustituyendoJOB_ID
por el ID del trabajo devuelto por la solicitud inicial.- Si
status.state = DONE
, el trabajo se ha completado correctamente. - Si la propiedad
status.errorResult
está presente, significa que se ha producido un error en la solicitud y que el objeto incluye información que describe lo que ha fallado. Si una solicitud falla, no se crea ninguna tabla y no se cargan datos. - Si no aparece
status.errorResult
, significa que el trabajo se ha completado correctamente, aunque es posible que se hayan producido algunos errores no críticos, como problemas al importar algunas filas. Los errores no críticos se indican en la propiedadstatus.errors
del objeto job devuelto.
- Si
Notas sobre la API:
Las tareas de carga son atómicas y coherentes: si una tarea de carga falla, no habrá datos disponibles, y si se completa correctamente, todos los datos estarán disponibles.
Como práctica recomendada, genera un ID único y pásalo como
jobReference.jobId
al llamar ajobs.insert
para crear un trabajo de carga. Este enfoque es más sólido ante fallos de red, ya que el cliente puede sondear o volver a intentar la operación con el ID de trabajo conocido.Llamar a
jobs.insert
en un ID de trabajo determinado es idempotente. Puedes volver a intentarlo tantas veces como quieras con el mismo ID de trabajo y, como máximo, una de esas operaciones se completará correctamente.
C#
Antes de probar este ejemplo, sigue las C#instrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API C# de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Usa el métodoBigQueryClient.CreateLoadJob()
para iniciar un trabajo de carga
desde Cloud Storage. Para usar JSONL, crea un objeto CreateLoadJobOptions
y asigna el valor FileFormat.NewlineDelimitedJson
a su propiedad SourceFormat
.
Go
Antes de probar este ejemplo, sigue las Goinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Usa el método LoadJobConfiguration.builder(tableId, sourceUri) para iniciar una tarea de carga desde Cloud Storage. Para usar JSON delimitado por líneas nuevas, usa LoadJobConfiguration.setFormatOptions(FormatOptions.json()).
Node.js
Antes de probar este ejemplo, sigue las Node.jsinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
PHP
Antes de probar este ejemplo, sigue las PHPinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API PHP de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Antes de probar este ejemplo, sigue las Pythoninstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Usa el método Client.load_table_from_uri() para iniciar un trabajo de carga desde Cloud Storage. Para usar JSONL, define la propiedad LoadJobConfig.source_format como la cadenaNEWLINE_DELIMITED_JSON
y pasa la configuración de la tarea como argumento job_config
al método load_table_from_uri()
.
Ruby
Antes de probar este ejemplo, sigue las Rubyinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Ruby de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Usa el método Dataset.load_job() para iniciar una tarea de carga desde Cloud Storage. Para usar JSONL, asigna el valor"json"
al parámetro format
.
Cargar datos anidados y repetidos en JSON
BigQuery admite la carga de datos anidados y repetidos de formatos de origen que admiten esquemas basados en objetos, como JSON, Avro, ORC, Parquet, Firestore y Datastore.
En cada línea debe aparecer un objeto JSON, incluidos los campos anidados o repetidos.
En el siguiente ejemplo se muestran datos anidados o repetidos. Esta tabla contiene información sobre personas. Consta de los siguientes campos:
id
first_name
last_name
dob
(fecha de nacimiento)addresses
(un campo anidado y repetido)addresses.status
(actual o anterior)addresses.address
addresses.city
addresses.state
addresses.zip
addresses.numberOfYears
(años en la dirección)
El archivo de datos JSON tendría el siguiente aspecto. Observa que el campo de dirección contiene un array de valores (indicado por [ ]
).
{"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 de esta tabla sería el siguiente:
[ { "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" } ] } ]
Para obtener información sobre cómo especificar un esquema anidado y repetido, consulta Especificar campos anidados y repetidos.
Cargar datos JSON semiestructurados
BigQuery permite cargar datos semiestructurados, en los que un campo puede tomar valores de diferentes tipos. En el siguiente ejemplo se muestran datos similares al ejemplo anterior de datos JSON anidados y repetidos, con la diferencia de que el campo address
puede ser un STRING
, un STRUCT
o un ARRAY
:
{"id":"1","first_name":"John","last_name":"Doe","dob":"1968-01-22","address":"123 First Avenue, Seattle WA 11111"} {"id":"2","first_name":"Jane","last_name":"Doe","dob":"1980-10-16","address":{"status":"current","address":"789 Any Avenue","city":"New York","state":"NY","zip":"33333","numberOfYears":"2"}} {"id":"3","first_name":"Bob","last_name":"Doe","dob":"1982-01-10","address":[{"status":"current","address":"789 Any Avenue","city":"New York","state":"NY","zip":"33333","numberOfYears":"2"}, "321 Main Street Hoboken NJ 44444"]}
Puede cargar estos datos en BigQuery con el siguiente esquema:
[ { "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": "address", "type": "JSON", "mode": "NULLABLE" } ]
El campo address
se carga en una columna de tipo JSON
que permite que contenga los tipos mixtos del ejemplo. Puede ingerir datos como JSON
, tanto si contienen tipos mixtos como si no. Por ejemplo, puedes especificar JSON
en lugar de STRING
como tipo del campo first_name
. Para obtener más información, consulta el artículo Trabajar con datos JSON en GoogleSQL.
Añadir datos JSON a una tabla o sobrescribirla
Puedes cargar datos adicionales en una tabla desde archivos de origen o añadiendo resultados de consultas.
En la Google Cloud consola, usa la opción Preferencia de escritura para especificar qué acción se debe llevar a cabo cuando cargues datos de un archivo de origen o de un resultado de consulta.
Cuando cargas datos adicionales en una tabla, tienes las siguientes opciones:
Opción de consola | Marca de la herramienta bq | Propiedad de la API de BigQuery | Descripción |
---|---|---|---|
Escribir si está vacía | No compatible | WRITE_EMPTY |
Escribe los datos solo si la tabla está vacía. |
Añadir a tabla | --noreplace o --replace=false . Si no se especifica --[no]replace , el valor predeterminado es "append". |
WRITE_APPEND |
Predeterminado: Añade los datos al final de la tabla. |
Sobrescribir tabla | --replace o --replace=true |
WRITE_TRUNCATE |
Borra todos los datos de una tabla antes de escribir los nuevos datos. Esta acción también elimina el esquema de la tabla, la seguridad a nivel de fila y cualquier clave de Cloud KMS. |
Si cargas datos en una tabla, la tarea de carga puede añadir los datos o sobrescribir la tabla.
Puede añadir o sobrescribir una tabla de una de las siguientes formas:
- La Google Cloud consola
- Comando
bq load
de la herramienta de línea de comandos bq - El método de la API
jobs.insert
y la configuración de un trabajoload
- Las bibliotecas de cliente
Consola
En la Google Cloud consola, ve a la página BigQuery.
- En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
- En la sección Información del conjunto de datos, haz clic en Crear tabla.
- En el panel Crear tabla, especifica los siguientes detalles:
- En la sección Fuente, selecciona Google Cloud Storage en la lista Crear tabla a partir de.
A continuación, siga estos pasos:
- Selecciona un archivo del segmento de Cloud Storage o introduce el URI de Cloud Storage.
No puedes incluir varias URIs en la consola Google Cloud , pero sí caracteres comodín. El segmento de Cloud Storage debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que quieres crear, añadir o sobrescribir.
- En Formato de archivo, selecciona JSONL (JSON delimitado por líneas nuevas).
- Selecciona un archivo del segmento de Cloud Storage o introduce el URI de Cloud Storage.
No puedes incluir varias URIs en la consola Google Cloud , pero sí caracteres comodín. El segmento de Cloud Storage debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que quieres crear, añadir o sobrescribir.
- En la sección Destino, especifica los siguientes detalles:
- En Conjunto de datos, selecciona el conjunto de datos en el que quieras crear la tabla.
- En el campo Tabla, introduce el nombre de la tabla que quieras crear.
- Verifica que el campo Tipo de tabla sea Tabla nativa.
- En la sección Schema (Esquema), introduce la definición de schema.
Para habilitar la detección automática de un esquema, selecciona Detectar automáticamente.
Puede introducir la información del esquema manualmente mediante uno de los siguientes métodos:
- Opción 1: Haz clic en Editar como texto y pega el esquema en forma de matriz JSON. Cuando usas una matriz JSON, generas el esquema siguiendo el mismo proceso que para crear un archivo de esquema JSON.
Para ver el esquema de una tabla en formato JSON, introduce el siguiente comando:
bq show --format=prettyjson dataset.table
- Opción 2: Haz clic en Tipo y Modo de cada campo. Añadir campo e introduce el esquema de la tabla. Especifica el Nombre,
- Opción 1: Haz clic en Editar como texto y pega el esquema en forma de matriz JSON. Cuando usas una matriz JSON, generas el esquema siguiendo el mismo proceso que para crear un archivo de esquema JSON.
Para ver el esquema de una tabla en formato JSON, introduce el siguiente comando:
- Opcional: Especifica la configuración de partición y clúster. Para obtener más información, consulta los artículos sobre cómo crear tablas con particiones y cómo crear y usar tablas agrupadas en clústeres. No puedes convertir una tabla en una tabla particionada o agrupada añadiéndole datos o sobrescribiéndola. La consola de Google Cloud no admite añadir datos a tablas particionadas o agrupadas, ni sobrescribirlas, en una tarea de carga.
- Haz clic en Opciones avanzadas y haz lo siguiente:
- En Preferencia de escritura, elija Añadir a la tabla o Sobrescribir tabla.
- En Número de errores permitidos, acepta el valor predeterminado
0
o introduce el número máximo de filas que contengan errores que se pueden ignorar. Si el número de filas con errores supera este valor, el trabajo mostrará un mensajeinvalid
y fallará. Esta opción solo se aplica a los archivos CSV y JSON. - En Zona horaria, introduzca la zona horaria predeterminada que se aplicará al analizar los valores de marca de tiempo que no tengan una zona horaria específica. Consulta aquí más nombres de zonas horarias válidos. Si no se incluye este valor, las marcas de tiempo sin una zona horaria específica se analizan con la zona horaria predeterminada UTC. Vista previa.
- En Formato de fecha, introduce los
elementos de formato que definen cómo se formatean los valores DATE en los archivos de entrada. Este campo espera el formato de estilos SQL (por ejemplo,
MM/DD/YYYY
). Si este valor está presente, este formato es el único compatible con DATE. La detección automática de esquemas también decidirá el tipo de columna DATE en función de este formato en lugar del formato actual. Si no se incluye este valor, el campo DATE se analiza con los formatos predeterminados. Vista previa. - En Formato de fecha y hora, introduce los
elementos de formato que definen cómo se formatean los valores DATETIME en los archivos de entrada.
Este campo espera el formato de estilos SQL (por ejemplo,
MM/DD/YYYY HH24:MI:SS.FF3
). Si se incluye este valor, este formato será el único compatible con DATETIME. La detección automática de esquemas también decidirá el tipo de columna DATETIME en función de este formato en lugar del formato actual. Si este valor no está presente, el campo DATETIME se analiza con los formatos predeterminados. Vista previa. - En Formato de hora, introduzca los
elementos de formato que definen cómo se formatean los valores TIME en los archivos de entrada. Este campo espera el formato de estilos SQL (por ejemplo,
HH24:MI:SS.FF3
). Si se incluye este valor, será el único formato TIME compatible. La detección automática de esquemas también determinará el tipo de columna TIME en función de este formato en lugar del formato actual. Si no se incluye este valor, el campo TIME se analiza con los formatos predeterminados. Vista previa. - En Formato de marca de tiempo, introduzca los
elementos de formato que definen cómo se formatean los valores TIMESTAMP en los archivos de entrada.
Este campo espera el formato de estilos SQL (por ejemplo,
MM/DD/YYYY HH24:MI:SS.FF3
). Si se incluye este valor, este formato será el único compatible con TIMESTAMP. La detección automática de esquemas también determinará el tipo de columna TIMESTAMP en función de este formato en lugar del formato actual. Si no se incluye este valor, el campo TIMESTAMP se analiza con los formatos predeterminados. Vista previa. - Si quieres ignorar los valores de una fila que no estén presentes en el esquema de la tabla, selecciona Valores desconocidos.
- En Encriptado, haz clic en Clave gestionada por el cliente para usar una clave de Cloud Key Management Service. Si dejas el ajuste Google-managed key, BigQuery cifra los datos en reposo.
- Haz clic en Crear tabla.
SQL
Usa la
LOAD DATA
instrucción DDL.
En el siguiente ejemplo se añade un archivo JSON a la tabla mytable
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
LOAD DATA INTO mydataset.mytable FROM FILES ( format = 'JSON', uris = ['gs://bucket/path/file.json']);
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
bq
Usa el comando bq load
, especifica NEWLINE_DELIMITED_JSON
con la marca --source_format
e incluye un URI de Cloud Storage.
Puede incluir un solo URI, una lista de URIs separados por comas o un URI que contenga un comodín.
Proporciona el esquema de forma insertada, en un archivo de definición de esquema o usa la detección automática de esquemas.
Especifica la marca --replace
para sobrescribir la tabla. Usa la marca --noreplace
para añadir datos a la tabla. Si no se especifica ninguna marca, el valor predeterminado es añadir datos.
Es posible modificar el esquema de la tabla cuando la añades o la sobrescribes. Para obtener más información sobre los cambios de esquema admitidos durante una operación de carga, consulta Modificar esquemas de tabla.
(Opcional) Proporcione la marca --location
y asigne el valor a su ubicación.
Otras marcas opcionales son:
--max_bad_records
: número entero que especifica el número máximo de registros incorrectos que se permiten antes de que falle todo el trabajo. El valor predeterminado es0
. Se devuelven como máximo cinco errores de cualquier tipo, independientemente del valor de--max_bad_records
.--ignore_unknown_values
: cuando se especifica, permite e ignora los valores adicionales no reconocidos en los datos CSV o JSON.--time_zone
: (Vista previa) Una zona horaria predeterminada opcional que se aplicará al analizar los valores de marca de tiempo que no tengan una zona horaria específica en los datos CSV o JSON.--date_format
: (Vista previa) Cadena personalizada opcional que define cómo se formatean los valores DATE en los datos CSV o JSON.--datetime_format
: (Vista previa) Cadena personalizada opcional que define cómo se formatean los valores DATETIME en los datos CSV o JSON.--time_format
: (Vista previa) Cadena personalizada opcional que define cómo se formatean los valores de TIME en los datos CSV o JSON.--timestamp_format
: (Vista previa) Cadena personalizada opcional que define el formato de los valores TIMESTAMP en los datos CSV o JSON.--autodetect
: Cuando se especifica, habilita la detección automática de esquemas para datos CSV y JSON.--destination_kms_key
: la clave de Cloud KMS para cifrar los datos de la tabla.
bq --location=LOCATION load \ --[no]replace \ --source_format=FORMAT \ DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Haz los cambios siguientes:
LOCATION
: tu ubicación. La marca--location
es opcional. Puedes definir un valor predeterminado para la ubicación mediante el archivo.bigqueryrc.FORMAT
:NEWLINE_DELIMITED_JSON
.DATASET
: un conjunto de datos.TABLE
: el nombre de la tabla en la que vas a cargar los datos.PATH_TO_SOURCE
: un URI de Cloud Storage completo o una lista de URIs separados por comas. También se admiten comodines.SCHEMA
: un esquema válido. El esquema puede ser un archivo JSON local o se puede escribir directamente como parte del comando. También puedes usar la marca--autodetect
en lugar de proporcionar una definición de esquema.
Ejemplos:
El siguiente comando carga datos de gs://mybucket/mydata.json
y
sobrescribe una tabla llamada mytable
en mydataset
. El esquema se define mediante la detección automática de esquemas.
bq load \
--autodetect \
--replace \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json
El siguiente comando carga datos de gs://mybucket/mydata.json
y añade datos a una tabla llamada mytable
en mydataset
. El esquema se define mediante un archivo de esquema JSON: myschema
.
bq load \
--noreplace \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
./myschema
API
Crea una tarea
load
que apunte a los datos de origen en Cloud Storage.(Opcional) Especifica tu ubicación en la propiedad
location
de la secciónjobReference
del recurso de empleo.La propiedad
source URIs
debe estar completa y tener el formatogs://BUCKET/OBJECT
. Puedes incluir varios URIs en una lista separada por comas. También se admiten comodines.Especifica el formato de los datos asignando el valor
NEWLINE_DELIMITED_JSON
a la propiedadconfiguration.load.sourceFormat
.Especifica la preferencia de escritura asignando el valor
WRITE_TRUNCATE
oWRITE_APPEND
a la propiedadconfiguration.load.writeDisposition
.
Go
Antes de probar este ejemplo, sigue las Goinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Node.js
Antes de probar este ejemplo, sigue las Node.jsinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
PHP
Antes de probar este ejemplo, sigue las PHPinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API PHP de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Para sustituir las filas de una tabla, defina la propiedad LoadJobConfig.write_disposition en la cadena WRITE_TRUNCATE
.
Antes de probar este ejemplo, sigue las Pythoninstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Ruby
Para sustituir las filas de una tabla, defina el parámetro write
de Table.load_job() en "WRITE_TRUNCATE"
.
Antes de probar este ejemplo, sigue las Rubyinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Ruby de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Cargar datos JSON con particiones de Hive
BigQuery permite cargar datos JSON particionados por Hive almacenados en Cloud Storage y rellena las columnas de partición de Hive como columnas en la tabla gestionada de BigQuery de destino. Para obtener más información, consulta Cargar datos con particiones externas.
Detalles sobre la carga de datos JSON
En esta sección se describe cómo analiza BigQuery varios tipos de datos al cargar datos JSON.
Tipos de datos
Booleano. BigQuery puede analizar cualquiera de los siguientes pares de datos booleanos: 1 o 0, true o false, t o f, yes o no, o y o n (sin distinción entre mayúsculas y minúsculas). La detección automática de esquemas detecta automáticamente cualquiera de estos valores, excepto 0 y 1.Bytes. Las columnas con tipos BYTES deben codificarse como Base64.
Fecha Las columnas de tipo DATE deben tener el formato YYYY-MM-DD
.
Fecha y hora. Las columnas de tipo FECHAHORA deben tener el formato YYYY-MM-DD
HH:MM:SS[.SSSSSS]
.
Área geográfica. Las columnas de tipo GEOGRAPHY deben contener cadenas en uno de los siguientes formatos:
- Texto conocido (WKT)
- Binario conocido (WKB)
- GeoJSON
Si usa WKB, el valor debe estar codificado en hexadecimal.
En la siguiente lista se muestran ejemplos de datos válidos:
- WKT:
POINT(1 2)
- GeoJSON:
{ "type": "Point", "coordinates": [1, 2] }
- WKB codificado en hexadecimal:
0101000000feffffffffffef3f0000000000000040
Antes de cargar datos GEOGRAPHY, consulta también el artículo sobre cómo cargar datos geoespaciales.
Intervalo. Las columnas con tipos INTERVAL deben estar en formato ISO 8601
PYMDTHMS
, donde:
- P = Designador que indica que el valor representa una duración. Siempre debes incluirlo.
- Y = Año
- M = Mes
- D = Día
- T = Designador que indica la parte de la duración correspondiente a la hora. Siempre debes incluirlo.
- H = Hora
- M = Minuto
- S = Segundo. Los segundos se pueden indicar como un valor entero o como un valor fraccionario de hasta seis dígitos, con una precisión de microsegundos.
Para indicar un valor negativo, añade un guion (-) delante.
En la siguiente lista se muestran ejemplos de datos válidos:
P-10000Y0M-3660000DT-87840000H0M0S
P0Y0M0DT0H0M0.000001S
P10000Y0M3660000DT87840000H0M0S
Para cargar datos de INTERVAL, debes usar el comando bq load
y la marca --schema
para especificar un esquema. No puedes subir datos de INTERVAL con la consola.
Hora. Las columnas de tipo TIME deben tener el formato HH:MM:SS[.SSSSSS]
.
Timestamp. BigQuery acepta varios formatos de marca de tiempo. La marca de tiempo debe incluir una parte de fecha y una parte de hora.
La parte de la fecha puede tener el formato
YYYY-MM-DD
oYYYY/MM/DD
.La parte de la marca de tiempo debe tener el formato
HH:MM[:SS[.SSSSSS]]
(los segundos y las fracciones de segundo son opcionales).La fecha y la hora deben estar separadas por un espacio o una "T".
Opcionalmente, después de la fecha y la hora se puede incluir una diferencia horaria respecto a UTC o el designador de zona UTC (
Z
). Para obtener más información, consulte Zonas horarias.
Por ejemplo, cualquiera de los siguientes valores de marca de tiempo son válidos:
- 2018-08-19 12:11
- 2018-08-19 12:11:35
- 2018-08-19 12:11:35.22
- 2018/08/19 12:11
- 2018-07-05 12:54:00 UTC
- 2018-08-19 07:11:35.220 -05:00
- 2018-08-19T12:11:35.220Z
Si proporcionas un esquema, BigQuery también acepta la hora de la época de Unix para los valores de marca de tiempo. Sin embargo, la detección automática de esquemas no detecta este caso y trata el valor como un tipo numérico o de cadena.
Ejemplos de valores de marca de tiempo de época de Unix:
- 1534680695
- 1,534680695e12
Matriz (campo repetido). El valor debe ser una matriz JSON o null
. JSON
null
se convierte en SQL NULL
. La propia matriz no puede contener valores null
.
Detección automática de esquemas
En esta sección se describe el comportamiento de la detección automática de esquemas al cargar archivos JSON.
Campos anidados y repetidos de JSON
BigQuery infiere los campos anidados y repetidos de los archivos JSON. Si el valor de un campo es un objeto JSON, BigQuery carga la columna como un tipo RECORD
. Si el valor de un campo es una matriz, BigQuery carga la columna como una columna repetida. Para ver un ejemplo de datos JSON con datos anidados y repetidos, consulta Cargar datos JSON anidados y repetidos.
Conversión de cadenas
Si habilitas la detección automática de esquemas, BigQuery convierte las cadenas en tipos booleanos, numéricos o de fecha y hora cuando sea posible. Por ejemplo, con los siguientes datos JSON, la detección automática del esquema convierte el campo id
en una columna INTEGER
:
{ "name":"Alice","id":"12"}
{ "name":"Bob","id":"34"}
{ "name":"Charles","id":"45"}
Tipos de codificación
BigQuery espera que los datos JSON estén codificados en UTF-8. Si tiene archivos JSON con otros tipos de codificación admitidos, debe especificar explícitamente la codificación mediante la marca --encoding
para que BigQuery convierta los datos a UTF-8.
BigQuery admite los siguientes tipos de codificación para archivos JSON:
- UTF-8
- ISO-8859-1
- UTF-16BE (UTF-16 Big Endian)
- UTF-16LE (UTF-16 Little Endian)
- UTF-32BE (UTF-32 Big Endian)
- UTF-32LE (UTF-32 Little Endian)
Opciones de JSON
Para cambiar la forma en que BigQuery analiza los datos JSON, especifica opciones adicionales en la consola Google Cloud , la herramienta de línea de comandos bq, la API o las bibliotecas de cliente.
Opción JSON | Opción de consola | Marca de la herramienta bq | Propiedad de la API de BigQuery | Descripción |
---|---|---|---|---|
Número de registros incorrectos permitidos | Número de errores permitidos | --max_bad_records |
maxBadRecords
(Java,
Python)
|
(Opcional) Número máximo de registros incorrectos que BigQuery puede ignorar al ejecutar la tarea. Si el número de registros incorrectos supera este valor, se devuelve un error no válido en el resultado del trabajo. El valor predeterminado es `0`, lo que requiere que todos los registros sean válidos. |
Valores desconocidos | Ignorar valores desconocidos | --ignore_unknown_values |
ignoreUnknownValues
(Java,
Python)
|
(Opcional) Indica si BigQuery debe permitir valores adicionales que no estén representados en el esquema de la tabla. Si es true, se ignoran los valores adicionales. Si es false, los registros con columnas adicionales se tratan como registros incorrectos y, si hay demasiados registros incorrectos, se devuelve un error no válido en el resultado del trabajo. El valor predeterminado es false. La propiedad `sourceFormat` determina qué considera BigQuery como un valor adicional: CSV: columnas finales. JSON: valores con nombre que no coinciden con ningún nombre de columna. |
Codificación | Ninguno | -E o --encoding |
encoding
(Python) |
(Opcional) La codificación de caracteres de los datos. Los valores admitidos son UTF-8, ISO-8859-1, UTF-16BE, UTF-16LE, UTF-32BE o UTF-32LE. El valor predeterminado es UTF-8. |
Zona horaria | Zona horaria | --time_zone |
Ninguno | Vista previa (opcional) Zona horaria predeterminada que se aplica al analizar valores de marca de tiempo que no tienen una zona horaria específica. Consulta los nombres de zonas horarias válidos. Si no se incluye este valor, las marcas de tiempo sin una zona horaria específica se analizan con la zona horaria predeterminada UTC. |
Formato de fecha | Formato de fecha | --date_format |
Ninguno | Vista previa (opcional)
Elementos de formato
que definen cómo se formatean los valores DATE en los archivos de entrada (por
ejemplo, MM/DD/YYYY ). Si se incluye este valor, este formato es
el único formato DATE compatible.
La detección automática de esquemas también determinará el tipo de columna DATE en función de este formato en lugar del formato actual. Si no se incluye este valor, el campo DATE se analiza con los formatos predeterminados. |
Formato de fecha y hora | Formato de fecha y hora | --datetime_format |
Ninguno | Vista previa (opcional)
Elementos de formato
que definen cómo se formatean los valores DATETIME en los archivos de entrada (por ejemplo, MM/DD/YYYY HH24:MI:SS.FF3 ). Si se incluye este valor,
este formato es el único compatible con DATETIME.
La detección automática de esquemas también determinará el tipo de columna DATETIME en función de este formato en lugar del formato actual. Si no se incluye este valor, el campo DATETIME se analiza con los formatos predeterminados. |
Formato de hora | Formato de hora | --time_format |
Ninguno | Vista previa (opcional)
Elementos de formato
que definen cómo se formatean los valores de TIME en los archivos de entrada (por ejemplo, HH24:MI:SS.FF3 ). Si se incluye este valor, este formato
será el único compatible con TIME.
La detección automática de esquemas también decidirá el tipo de columna TIME en función de este formato en lugar del formato actual. Si no se incluye este valor, el campo TIME se analiza con los formatos predeterminados. |
Formato de marca de tiempo | Formato de marca de tiempo | --timestamp_format |
Ninguno | Vista previa (opcional)
Elementos de formato
que definen cómo se formatean los valores de TIMESTAMP en los archivos de entrada (por ejemplo, MM/DD/YYYY HH24:MI:SS.FF3 ). Si se incluye este valor,
este formato es el único compatible con TIMESTAMP.
La detección automática de esquemas también determinará el tipo de columna TIMESTAMP en función de este formato en lugar del formato actual. Si no se incluye este valor, el campo TIMESTAMP se analiza con los formatos predeterminados. |
Siguientes pasos
- Para obtener información sobre cómo cargar datos JSON desde un archivo local, consulta el artículo Cargar datos desde archivos locales.
- Para obtener más información sobre cómo crear, ingerir y consultar datos JSON, consulta el artículo Trabajar con datos JSON en GoogleSQL.