Carga de datos ORC desde Cloud Storage
En esta página se proporciona una descripción general de la carga de datos ORC de Cloud Storage en BigQuery.
ORC es un formato de datos orientado a columnas de código abierto que se usa ampliamente en el ecosistema Apache Hadoop.
Cuando cargas datos ORC de Cloud Storage, puedes cargar datos en una tabla o partición nuevas o puedes adjuntar o reemplazar una tabla o partición existentes. Cuando los datos se cargan en BigQuery, se convierten en formato de columnas para Capacitor (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 bucket de Cloud Storage.
Para obtener información sobre cómo cargar datos ORC de un archivo local, consulta Carga datos desde una fuente de datos local.
Limitaciones
Estás sujeto a las siguientes limitaciones cuando cargas datos en BigQuery desde un bucket de Cloud Storage:
- Si la ubicación de tu conjunto de datos está configurada en un valor diferente a la multirregión
US
, el bucket de Cloud Storage debe estar en la misma región o multirregión que el conjunto de datos. - BigQuery no garantiza la coherencia de los datos provenientes de fuentes de datos externas. Los cambios en los datos subyacentes mientras se ejecuta una consulta pueden dar como resultado un comportamiento inesperado.
- BigQuery no es compatible con el control 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á.
Antes de empezar
Otorga roles de Identity and Access Management (IAM) que otorguen a los usuarios los permisos necesarios para hacer cada tarea de este documento y crea un conjunto de datos para almacenar tus datos.
Permisos necesarios
Si deseas cargar datos en BigQuery, necesitas permisos de IAM para ejecutar un trabajo de carga y subir datos en tablas y particiones de BigQuery. Si cargas datos desde Cloud Storage, también necesitas permisos de IAM para acceder al bucket que contiene tus datos.
Permisos para cargar datos a BigQuery
Para cargar datos en una tabla o partición de BigQuery nueva o bien agregar o reemplazar una tabla o partición existente, necesitas los siguientes permisos de IAM:
bigquery.tables.create
bigquery.tables.updateData
bigquery.tables.update
bigquery.jobs.create
Cada una de las siguientes funciones predefinidas de IAM 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 con un trabajo de carga en los conjuntos de datos que crees.
Para obtener más información sobre las funciones y los permisos de IAM en BigQuery, consulta Funciones y permisos predefinidos.
Permisos para subir datos desde Cloud Storage
Para obtener los permisos que necesitas para cargar datos desde un bucket de Cloud Storage,
pídele a tu administrador que te otorgue el rol de IAM
Administrador de almacenamiento (roles/storage.admin
) en el bucket.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para cargar datos desde un bucket de Cloud Storage. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Los siguientes permisos son necesarios para cargar datos desde un bucket de Cloud Storage:
-
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 o con otros roles predefinidos.
Crea un conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tus datos.
Esquemas de ORC
Cuando cargas archivos ORC en BigQuery, el esquema de tabla se recupera de forma automática a partir de los datos de origen autodescriptivos. Cuando BigQuery recupera el esquema de los datos de origen, se usa el último archivo en orden alfabético.
Por ejemplo, supongamos que tienes los siguientes archivos ORC en Cloud Storage:
gs://mybucket/00/ a.orc z.orc gs://mybucket/01/ b.orc
Cuando se ejecuta este comando en la herramienta de línea de comandos de bq, se cargan todos los archivos (como una
lista separada por comas) y el esquema se deriva de mybucket/01/b.orc
:
bq load \ --source_format=ORC \ dataset.table \ "gs://mybucket/00/*.orc","gs://mybucket/01/*.orc"
Cuando BigQuery detecta el esquema, algunos tipos de datos ORC se convierten en tipos de datos de BigQuery para hacerlos compatibles con la sintaxis de GoogleSQL. Todos los campos en el esquema detectado son NULLABLE
. Para obtener más información, consulta la sección Conversiones de ORC.
Cuando cargas varios archivos ORC con diferentes esquemas, los campos idénticos (con el mismo nombre y mismo nivel de anidamiento) especificados en múltiples esquemas deben asignarse al mismo tipo de datos convertido de BigQuery en cada definición de esquema.
Para proporcionar un esquema de tabla para crear tablas externas, configura la propiedadreferenceFileSchemaUri
en la API de BigQuery o el parámetro --reference_file_schema_uri
en la herramienta de línea de comandos de bq
en la URL del archivo de referencia.
Por ejemplo, --reference_file_schema_uri="gs://mybucket/schema.orc"
.
Compresión de ORC
BigQuery admite los siguientes códecs de compresión para el contenido del archivo de ORC:
Zlib
Snappy
LZO
LZ4
Los datos en los archivos ORC no permanecen comprimidos después de que se suben a BigQuery. El almacenamiento de datos se informa en bytes lógicos o bytes físicos, según el modelo de facturación de almacenamiento del conjunto de datos.
Para obtener información sobre el uso del almacenamiento, consulta la vista INFORMATION_SCHEMA.TABLE_STORAGE
.
Carga datos ORC en una tabla nueva
Puedes cargar datos ORC en una tabla nueva:
- Usa la consola de Google Cloud
- Usa el comando
bq load
de la herramienta de línea de comandos de bq - Con una llamada al método
jobs.insert
de la API y la configuración de un trabajoload
- Con las bibliotecas cliente
Para cargar datos de ORC de Cloud Storage en una tabla nueva de BigQuery, sigue estos pasos:
Console
En la consola de Google Cloud, ve a la página de BigQuery.
- En el panel Explorador, expande tu proyecto y, luego, elige 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, elige Google Cloud Storage en la lista Crear tabla desde.
A continuación, sigue estos pasos:
- Elige un archivo del bucket de Cloud Storage o escribe el URI de Cloud Storage. No puedes incluir múltiples URI en la consola de Google Cloud, pero se admiten comodines. El bucket de Cloud Storage debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que deseas crear, agregar o reemplazar.
- Para Formato de archivo, elige ORC.
- En la sección Destino, especifica los siguientes detalles:
- En Conjunto de datos, elige el conjunto de datos en el que deseas crear la tabla.
- En el campo Tabla, escribe el nombre de la tabla que deseas crear.
- Verifica que el campo Tipo de tabla esté configurado como Tabla nativa.
- En la sección Esquema, no es necesaria ninguna acción. El esquema se describe de forma automática en los archivos ORC.
- Opcional: Especifica Configuración de particiones y clústeres. Para obtener más información, consulta Crea tablas particionadas y Crea y usa tablas agrupadas en clústeres.
- Haz clic en Opciones avanzadas y haz lo siguiente:
- En Preferencia de escritura, deja elegido Escribir si está vacía. Con esta opción, se crea una tabla nueva y se cargan los datos en ella.
- Si deseas ignorar los valores de una fila que no están presentes en el esquema de la tabla, elige Valores desconocidos.
- En Encriptación, haz clic en Clave administrada por el cliente para usar una clave de Cloud Key Management Service. Si dejas establecida la configuración del parámetro Clave administrada por Google, BigQuery encripta los datos en reposo.
- Haga clic en Create table.
SQL
Usa la declaración DDL LOAD DATA
.
En el siguiente ejemplo, se carga un archivo OCR en una nueva tabla mytable
:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, escribe la siguiente sentencia:
LOAD DATA OVERWRITE mydataset.mytable FROM FILES ( format = 'ORC', uris = ['gs://bucket/path/file.orc']);
Haz clic en
Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
bq
Usa el comando bq load
, especifica ORC como el source_format
y, además, incluye un URI de Cloud Storage.
Puedes incluir un único URI, una lista de URI separados por comas o un URI que contenga un comodín.
Opcional: Proporciona la marca --location
y configura el valor en tu ubicación.
Las siguientes son otras marcas opcionales:
--time_partitioning_type
: habilita las particiones basadas en el tiempo en una tabla y establece el tipo de partición. Los valores posibles sonHOUR
,DAY
,MONTH
yYEAR
. Esta marca es opcional cuando se crea una tabla particionada en una columnaDATE
,DATETIME
oTIMESTAMP
. El tipo de partición predeterminado para la partición basada en el tiempo esDAY
. No puedes cambiar la especificación de partición de una tabla existente.--time_partitioning_expiration
: Un número entero que especifica (en segundos) cuándo se debe borrar una partición basada en el tiempo. La hora de vencimiento se evalúa según la suma de la fecha de la partición en formato UTC más el valor del número entero.--time_partitioning_field
: La columnaDATE
oTIMESTAMP
que se usa para crear una tabla particionada. Si la partición basada en el tiempo se habilita sin este valor, se creará una tabla particionada por tiempo de transferencia.--require_partition_filter
: Cuando se habilita esta opción, se solicita a los usuarios que incluyan una cláusulaWHERE
que especifique las particiones que se desean consultar. Exigir un filtro de partición puede reducir los costos y mejorar el rendimiento. Para obtener más información, ve a Consulta tablas particionadas.--clustering_fields
: Una lista separada por comas de hasta cuatro nombres de columna que se usa para crear una tabla agrupada en clústeres.--destination_kms_key
: Es la clave de Cloud KMS para la encriptación de los datos de la tabla.Para obtener más información sobre las tablas particionadas, consulta este recurso:
Para obtener más información sobre las tablas agrupadas en clústeres, consulta este recurso:
Para obtener más información sobre la encriptación de tablas, consulta este recurso:
Para cargar datos ORC en BigQuery, escribe el siguiente comando:
bq --location=location load \ --source_format=format \ dataset.table \ path_to_source
Donde:
- location es tu ubicación. La marca
--location
es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes establecer el valor de la marca comoasia-northeast1
. Puedes configurar un valor predeterminado para la ubicación con el archivo .bigqueryrc. - format es
ORC
. - dataset es un conjunto de datos existente.
- table es el nombre de la tabla en la que cargas datos.
- path_to_source es un URI de Cloud Storage completamente calificado o una lista de URI separados por comas. También se admiten comodines.
Ejemplos:
El siguiente comando carga datos de gs://mybucket/mydata.orc
a una tabla llamada mytable
en mydataset
.
bq load \
--source_format=ORC \
mydataset.mytable \
gs://mybucket/mydata.orc
Con el siguiente comando, se cargan datos de gs://mybucket/mydata.orc
a una tabla particionada por tiempo de transferencia nueva llamada mytable
en mydataset
.
bq load \
--source_format=ORC \
--time_partitioning_type=DAY \
mydataset.mytable \
gs://mybucket/mydata.orc
El siguiente comando carga datos de gs://mybucket/mydata.orc
a una tabla particionada llamada mytable
en mydataset
. La tabla está particionada en la columna mytimestamp
.
bq load \
--source_format=ORC \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.orc
Con el siguiente comando, se cargan datos de varios archivos de gs://mybucket/
en una tabla llamada mytable
en mydataset
. El URI de Cloud Storage usa un comodín.
bq load \
--source_format=ORC \
mydataset.mytable \
gs://mybucket/mydata*.orc
Con el siguiente comando, se cargan datos de varios archivos de gs://mybucket/
en una tabla llamada mytable
en mydataset
. El comando incluye una lista separada por comas de URI de Cloud Storage con comodines.
bq load --autodetect \
--source_format=ORC \
mydataset.mytable \
"gs://mybucket/00/*.orc","gs://mybucket/01/*.orc"
API
Crea un trabajo
load
que apunte a los datos de origen en Cloud Storage.Especifica tu ubicación en la propiedad
location
de la secciónjobReference
del recurso de trabajo (opcional).La propiedad
source URIs
debe estar completamente calificada en el formatogs://bucket/object
. Cada URI puede contener un carácter comodín “*”.Establece la propiedad
sourceFormat
enORC
para especificar el formato de datos ORC.Para comprobar el estado del trabajo, llama a
jobs.get(job_id*)
. job_id es el ID del trabajo que muestra la solicitud inicial.- Si se muestra
status.state = DONE
, el trabajo se completó de forma correcta. - Si la propiedad
status.errorResult
está presente, la solicitud falló y ese objeto incluye información que describe lo que salió mal. Cuando una solicitud falla, no se crea ninguna tabla ni se cargan datos. - Si
status.errorResult
está ausente, el trabajo se completó con éxito, aunque puede haber algunos errores recuperables, como problemas cuando se importan algunas filas. Se enumeran los errores recuperables en la propiedadstatus.errors
del objeto de trabajo que se muestra.
- Si se muestra
Notas sobre la API:
Los trabajos de carga son atómicos y coherentes. Es decir, si falla uno, ninguno de los datos estará disponible y si uno se hace con éxito, todos los datos estarán disponibles.
Como práctica recomendada, genera un ID único y pásalo como
jobReference.jobId
cuando llames ajobs.insert
para crear un trabajo de carga. Este enfoque es más resistente al fallo de la red porque el cliente puede sondear o reintentar con el ID de trabajo conocido.Llamar a
jobs.insert
con un ID de trabajo dado es idempotente. En otras palabras, puedes volver a intentarlo tantas veces como desees con el mismo ID de trabajo y, como máximo, una de esas operaciones tendrá éxito.
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración para C# 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 C#.
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.
Go
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
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js 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 Node.js.
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.
PHP
Antes de probar este ejemplo, sigue las instrucciones de configuración para PHP 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 PHP.
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.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python 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 Python.
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.
Ruby
Antes de probar este ejemplo, sigue las instrucciones de configuración para Ruby 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 Ruby.
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.
Anexar o reemplazar una tabla con datos ORC
Puedes cargar datos adicionales en una tabla desde archivos de origen o cuando adjuntas resultados de consultas.
En la consola de Google Cloud, usa la opción de Preferencia de escritura para especificar qué acción se debe tomar cuando cargues datos desde un archivo de origen o desde el resultado de una consulta.
Cuando cargas datos adicionales en una tabla, tienes las siguientes opciones:
Opción de Console | Marca de la herramienta de bq | Propiedad de la API de BigQuery | Descripción |
---|---|---|---|
Realiza la operación de escritura si la tabla está vacía. | No compatible | WRITE_EMPTY |
Solo escribe los datos si la tabla está vacía. |
Adjuntar a la tabla | --noreplace o --replace=false ; si no se especifica --[no]replace , la opción predeterminada es agregar |
WRITE_APPEND |
Agrega los datos al final de la tabla (predeterminado). |
Reemplazar tabla | --replace o --replace=true . |
WRITE_TRUNCATE |
Borra todos los datos existentes de una tabla antes de escribir los datos nuevos. Esta acción también borra el esquema de la tabla, la seguridad a nivel de las filas y quita cualquier clave de Cloud KMS. |
Si cargas datos en una tabla existente, el trabajo de carga puede agregar los datos o reemplazar la tabla.
Puedes agregar o reemplazar una tabla de la siguiente manera:
- Usa la consola de Google Cloud
- Usa el comando
bq load
de la herramienta de línea de comandos de bq - Con una llamada al método
jobs.insert
de la API y la configuración de un trabajoload
- Con las bibliotecas cliente
Para agregar datos ORC a una tabla o reemplazar sus valores con estos, sigue los pasos a continuación:
Console
En la consola de Google Cloud, ve a la página de BigQuery.
- En el panel Explorador, expande tu proyecto y, luego, elige 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, elige Google Cloud Storage en la lista Crear tabla desde.
A continuación, sigue estos pasos:
- Elige un archivo del bucket de Cloud Storage o escribe el URI de Cloud Storage. No puedes incluir múltiples URI en la consola de Google Cloud, pero se admiten comodines. El bucket de Cloud Storage debe estar en la misma ubicación que el conjunto de datos que contiene la tabla que deseas crear, agregar o reemplazar.
- Para Formato de archivo, elige ORC.
- En la sección Destino, especifica los siguientes detalles:
- En Conjunto de datos, elige el conjunto de datos en el que deseas crear la tabla.
- En el campo Tabla, escribe el nombre de la tabla que deseas crear.
- Verifica que el campo Tipo de tabla esté configurado como Tabla nativa.
- En la sección Esquema, no es necesaria ninguna acción. El esquema se describe de forma automática en los archivos ORC.
- Opcional: Especifica Configuración de particiones y clústeres. Para obtener más información, consulta Crea tablas particionadas y Crea y usa tablas agrupadas en clústeres. No puedes agregar datos a una tabla ni reemplazarla para convertirla en una tabla particionada o agrupada en clústeres. La consola de Google Cloud no admite agregar datos a tablas particionadas o agrupadas en clústeres ni reemplazarlas en un trabajo de carga.
- Haz clic en Opciones avanzadas y haz lo siguiente:
- En Preferencia de escritura, elige Agregar a la tabla o Reemplazar tabla.
- Si deseas ignorar los valores de una fila que no están presentes en el esquema de la tabla, elige Valores desconocidos.
- En Encriptación, haz clic en Clave administrada por el cliente para usar una clave de Cloud Key Management Service. Si dejas establecida la configuración del parámetro Clave administrada por Google, BigQuery encripta los datos en reposo.
- Haga clic en Create table.
SQL
Usa la declaración DDL LOAD DATA
.
En el siguiente ejemplo, se agrega un archivo ORC a la tabla mytable
:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, escribe la siguiente sentencia:
LOAD DATA INTO mydataset.mytable FROM FILES ( format = 'ORC', uris = ['gs://bucket/path/file.orc']);
Haz clic en
Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
bq
Escribe el comando bq load
con la marca --replace
para reemplazar los datos de la tabla. Usa la marca --noreplace
para agregar datos a la tabla. Si no se especifica ninguna marca, se agregan datos de manera predeterminada. Proporciona la marca --source_format
y configúrala en ORC
. Debido a que los esquemas ORC se recuperan de manera automática
de los datos de origen autodescriptivos, no necesitas proporcionar una definición
de esquema.
Opcional: Proporciona la marca --location
y configura el valor en tu ubicación.
Las siguientes son otras marcas opcionales:
--destination_kms_key
: Es la clave de Cloud KMS para la encriptación de los datos de la tabla.
bq --location=location load \ --[no]replace \ --source_format=format \ dataset.table \ path_to_source
Donde:
- location es tu ubicación.
La marca
--location
es opcional. Puedes configurar un valor predeterminado para la ubicación con el archivo .bigqueryrc. - format es
ORC
. - dataset es un conjunto de datos existente.
- table es el nombre de la tabla en la que cargas datos.
- path_to_source es un URI de Cloud Storage completamente calificado o una lista de URI separados por comas. También se admiten comodines.
Ejemplos:
Con el siguiente comando, se cargan datos de gs://mybucket/mydata.orc
y se reemplazan los datos de una tabla llamada mytable
en mydataset
.
bq load \
--replace \
--source_format=ORC \
mydataset.mytable \
gs://mybucket/mydata.orc
Con el siguiente comando, se cargan datos de gs://mybucket/mydata.orc
y se adjuntan datos a una tabla llamada mytable
en mydataset
.
bq load \
--noreplace \
--source_format=ORC \
mydataset.mytable \
gs://mybucket/mydata.orc
Para obtener información sobre cómo agregar o reemplazar tablas particionadas con la herramienta de línea de comandos de bq, consulta Agrega y reemplaza datos de tablas particionadas.
API
Crea un trabajo
load
que apunte a los datos de origen en Cloud Storage.Especifica tu ubicación en la propiedad
location
de la secciónjobReference
del recurso de trabajo (opcional).La propiedad
source URIs
debe estar completamente calificada en el formatogs://bucket/object
. Puedes incluir varios URI en una lista separada por comas. Ten en cuenta que también se admiten comodines.Para especificar el formato de los datos, establece la propiedad
configuration.load.sourceFormat
enORC
.Para especificar la preferencia de escritura, configura la propiedad
configuration.load.writeDisposition
comoWRITE_TRUNCATE
oWRITE_APPEND
.
C#
Antes de probar este ejemplo, sigue las instrucciones de configuración para C# 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 C#.
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.
Go
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
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js 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 Node.js.
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.
PHP
Antes de probar este ejemplo, sigue las instrucciones de configuración para PHP 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 PHP.
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.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python 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 Python.
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.
Para reemplazar las filas de una tabla existente, configura la propiedad LoadJobConfig.write_disposition como WRITE_TRUNCATE.Ruby
Antes de probar este ejemplo, sigue las instrucciones de configuración para Ruby 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 Ruby.
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.
Carga datos ORC con partición de subárbol
BigQuery admite la carga de datos OCR con partición de subárbol almacenados en Cloud Storage y propaga las columnas con partición de subárbol en la tabla administrada de destino de BigQuery. Para obtener más información, consulta Carga datos particionados de forma externa de Cloud Storage.
Conversiones de ORC
BigQuery convierte los tipos de datos ORC en los siguientes tipos de datos de BigQuery:
Tipos básicos
Tipo de datos de BigQuery | Notas | |
---|---|---|
booleano | BOOLEAN | |
byte | INTEGER | |
short | INTEGER | |
int | INTEGER | |
long | INTEGER | |
float | FLOAT | |
double | FLOAT | |
string | STRING | Solo UTF-8 |
varchar | STRING | Solo UTF-8 |
char | STRING | Solo UTF-8 |
binary | BYTES | |
fecha | DATE | Un intento de convertir cualquier valor en los datos de ORC que sean menores que
-719162 días o mayores que 2932896 días devuelve un error invalid date
value . Si esto te afecta, comunícate con el equipo de
Asistencia para que los
valores no compatibles se conviertan en el valor mínimo de BigQuery
de 0001-01-01 o el valor máximo de 9999-12-31 ,
según corresponda. |
timestamp | TIMESTAMP |
ORC admite la precisión de nanosegundos, pero BigQuery convierte los valores inferiores a microsegundos en microsegundos cuando se leen los datos. Un intento de convertir cualquier valor en los datos de ORC que sean menores que -719162 días o mayores que 2932896 días muestra un error |
decimal | NUMERIC, BIGNUMERIC o STRING | Consulta Tipo decimal. |
Tipo decimal
Los tipos lógicos Decimal
se pueden convertir en tipos NUMERIC
, BIGNUMERIC
o STRING
. El tipo de objetivo depende de los parámetros de precisión y escalamiento del tipo lógico decimal
y los tipos de segmentación decimales especificados. Especifica el tipo de objetivo decimal de la siguiente manera:
- Para un trabajo de carga con la API de
jobs.insert
, usa el campoJobConfigurationLoad.decimalTargetTypes
. - Para obtener un trabajo de carga con el comando
bq load
en la herramienta de línea de comandos bq, usa la marca--decimal_target_types
. - Para una consulta en una tabla con fuentes externas, usa el campo
ExternalDataConfiguration.decimalTargetTypes
. - Para una tabla externa persistente creada con DDL, usa la opción
decimal_target_types
.
Tipos complejos
Tipo de datos de BigQuery | Notas | |
---|---|---|
struct | RECORD |
|
map<K,V> | RECORD | Un campo map<K,V> de ORC se convierte en un RECORD repetido que contiene dos campos: una clave con el mismo tipo de datos que K y un valor con el mismo tipo de datos que V. Ambos campos son NULLABLE. |
list | repeated fields | Las listas anidadas y de mapas no son compatibles. |
unión | RECORD |
|
Nombres de columnas
El nombre de una columna puede contener letras (a-z, A-Z), números (0-9) o guiones bajos (_) y debe empezar con una letra o guion bajo. Si usas nombres de columna flexibles, BigQuery admite que se inicie un nombre de columna con un número. Ten cuidado cuando inicies columnas con un número, ya que el uso de nombres de columna flexibles con la API de lectura de almacenamiento de BigQuery o la API de escritura de BigQuery Storage requiere un control especial. Para obtener más información sobre la compatibilidad con los nombres de columnas flexibles, consulta Nombres de columnas flexibles.
Los nombres de las columnas tienen una longitud máxima de 300 caracteres. No se puede usar ninguno de los siguientes prefijos para los nombres de columna:
_TABLE_
_FILE_
_PARTITION
_ROW_TIMESTAMP
__ROOT__
_COLIDENTIFIER
No se permiten nombres de columna duplicados, incluso si difieren las mayúsculas y minúsculas. Por ejemplo, una columna llamada Column1
se considera idéntica a una columna con el nombre column1
. Si deseas obtener más información sobre las reglas de nombres de columnas, consulta Nombres de columnas en la referencia de Google SQL.
Si un nombre de tabla (por ejemplo, test
) es el mismo que uno de los nombres de sus columnas (por ejemplo, test
), la expresión SELECT
interpreta la columna test
como un STRUCT
que contiene todas las demás columnas de la tabla. Para evitar esta colisión, usa uno de los siguientes métodos:
Evita usar el mismo nombre para una tabla y sus columnas.
Asigna un alias diferente a la tabla. Por ejemplo, la siguiente consulta asigna un alias de tabla
t
a la tablaproject1.dataset.test
:SELECT test FROM project1.dataset.test AS t;
Incluye el nombre de la tabla cuando hagas referencia a una columna. Por ejemplo:
SELECT test.test FROM project1.dataset.test;
Nombres flexibles de columnas
Ahora tiene más flexibilidad en los nombres de las columnas, incluido el acceso expandido a caracteres en otros idiomas además del inglés, así como símbolos adicionales.
Los nombres flexibles de las columnas admiten los siguientes caracteres:
- Cualquier letra en cualquier lenguaje, como lo representa la expresión regular Unicode
\p{L}
. - Cualquier carácter numérico en cualquier lenguaje representado por la expresión regular Unicode
\p{N}
. - Cualquier carácter de puntuación de conector, incluidos los guiones bajos, como lo representa la expresión regular Unicode
\p{Pc}
. - Un guion o una raya representada por la expresión regular Unicode
\p{Pd}
. - Cualquier marca destinada a acompañar otro carácter, como lo representa la expresión regular
Unicode
\p{M}
. Por ejemplo, los acentos, las diéresis o los cuadros de cierre. - Los siguientes caracteres especiales:
- Un signo et (
&
) representado por la expresión regular Unicode\u0026
. - Un signo de porcentaje (
%
) representado por la expresión regular Unicode\u0025
. - Un signo igual (
=
) representado por la expresión regular Unicode\u003D
. - Un signo más (
+
) representado por la expresión regular Unicode\u002B
. - Los dos puntos (
:
) que representa la expresión regular Unicode\u003A
. - Un apóstrofo (
'
) representado por la expresión regular Unicode\u0027
. - Un signo menor que (
<
) representado por la expresión regular Unicode\u003C
. - Un signo mayor que (
>
) representado por la expresión regular Unicode\u003E
. - Un signo de número (
#
) representado por la expresión regular Unicode\u0023
. - Una línea vertical (
|
) representada por la expresión regular Unicode\u007c
. - Espacio en blanco.
- Un signo et (
Los nombres de columnas flexibles no son compatibles con los siguientes caracteres especiales:
- Un signo de exclamación (
!
) representado por la expresión regular Unicode\u0021
. - Una comilla (
"
) representada por la expresión regular Unicode\u0022
. - Un signo de dólar (
$
) representado por la expresión regular Unicode\u0024
. - Un paréntesis de apertura (
(
) representado por la expresión regular Unicode\u0028
. - Un paréntesis de cierre (
)
) representado por la expresión regular Unicode\u0029
. - Un asterisco (
*
) representado por la expresión regular Unicode\u002A
. - Una coma (
,
) representada por la expresión regular Unicode\u002C
. - Un punto (
.
) representado por la expresión regular Unicode\u002E
. - Una barra (
/
) representada por la expresión regular Unicode\u002F
. - Un punto y coma (
;
) representado por la expresión regular Unicode\u003B
. - Un signo de interrogación (
?
) representado por la expresión regular Unicode\u003F
. - Una arroba (
@
) representada por la expresión regular Unicode\u0040
. - Un corchete de apertura (
[
) representado por la expresión regular Unicode\u005B
. - Una barra inversa (
\
) representada por la expresión regular Unicode\u005C
. - Un corchete de cierre (
]
) representado por la expresión regular Unicode\u005D
. - Un acento circunflejo (
^
) representado por la expresión regular Unicode\u005E
. - Un acento grave (
`
) representado por la expresión regular Unicode\u0060
. - Una llave de apertura {
{
) representada por la expresión regular Unicode\u007B
. - Una llave de cierre (
}
) representada por la expresión regular Unicode\u007D
. - Una virgulilla (
~
) representada por la expresión regular Unicode\u007E
.
Para obtener lineamientos adicionales, consulta Nombres de columnas.
Los caracteres expandidos de columna son compatibles con la API de BigQuery Storage Read
y la API de BigQuery Storage Write. Para usar la lista expandida de caracteres Unicode
con la API de BigQuery Storage Read, debes establecer una marca. Puedes usar el
atributo displayName
para recuperar el nombre de la columna. En el siguiente ejemplo, se muestra
cómo configurar una marca con el cliente de Python:
from google.cloud.bigquery_storage import types
requested_session = types.ReadSession()
#set avro serialization options for flexible column.
options = types.AvroSerializationOptions()
options.enable_display_name_attribute = True
requested_session.read_options.avro_serialization_options = options
Para usar la lista expandida de caracteres Unicode con la API de BigQuery Storage Write,
debes proporcionar el esquema con la notación column_name
, a menos que uses
el objeto de escritor JsonStreamWriter
. En el siguiente ejemplo, se muestra cómo proporcionar
el esquema:
syntax = "proto2";
package mypackage;
// Source protos located in github.com/googleapis/googleapis
import "google/cloud/bigquery/storage/v1/annotations.proto";
message FlexibleSchema {
optional string item_name_column = 1
[(.google.cloud.bigquery.storage.v1.column_name) = "name-列"];
optional string item_description_column = 2
[(.google.cloud.bigquery.storage.v1.column_name) = "description-列"];
}
En este ejemplo, item_name_column
y item_description_column
son
nombres de marcadores de posición que deben cumplir con la
convención de nombres del búfer
de protocolo. Ten en cuenta que las anotaciones column_name
siempre tienen prioridad sobre
los nombres de los marcadores de posición.
Limitaciones
Los nombres de columnas flexibles no son compatibles con las tablas externas.
Valores NULL
Ten en cuenta que en los trabajos de carga, BigQuery ignora los elementos NULL
para el tipo compuesto list
, ya que de lo contrario se traducirían a elementos NULL
ARRAY
que no pueden persistir en una tabla (consulta Tipos de datos de SQL estándar para obtener más información).
Para obtener más información sobre los tipos de datos ORC, consulta la Especificación v1 de Apache ORC™.