En esta página, se proporciona una descripción general de la carga de datos de Parquet desde Cloud Storage hacia BigQuery.
Parquet es un formato de datos orientado a columnas de código abierto que se usa ampliamente en el ecosistema de Apache Hadoop.
Cuando cargas datos de Parquet desde Cloud Storage, puedes hacerlo en una tabla o partición nuevas, o bien puedes agregar o reemplazar una tabla o partición existente. 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 Parquet desde un archivo local, consulta Carga datos desde archivos locales.
Esquemas de Parquet
Cuando cargas archivos de Parquet en BigQuery, el esquema de la tabla se recupera automáticamente de los datos de origen de descripción automática. Cuando BigQuery recupera el esquema de los datos de origen, se usa el último archivo en orden alfabético.
Por ejemplo, tienes los siguientes archivos de Parquet en Cloud Storage:
gs://mybucket/00/ a.parquet z.parquet gs://mybucket/01/ b.parquet
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.parquet
:
bq load \ --source_format=PARQUET \ dataset.table \ "gs://mybucket/00/*.parquet","gs://mybucket/01/*.parquet"
Cuando cargas varios archivos de Parquet con diferentes esquemas, las columnas idénticas especificadas en múltiples esquemas deben tener el mismo modo en cada definición de esquema.
Cuando BigQuery detecta el esquema, algunos tipos de datos de Parquet se convierten en tipos de datos de BigQuery para que sean compatibles con la sintaxis de BigQuery SQL. Para obtener más información, consulta Conversiones de Parquet.
Compresión de Parquet
BigQuery admite los siguientes códecs de compresión para bloques de datos en archivos de Parquet:
GZip
LZO_1C
yLZO_1X
Snappy
ZSTD
Permisos necesarios
Cuando cargas datos en BigQuery, necesitas permisos para ejecutar un trabajo de carga y permisos que te habiliten a cargar datos en tablas y particiones nuevas o existentes de BigQuery. Si cargas datos desde Cloud Storage, también necesitas permisos para acceder al depósito que contiene tus datos.
Permisos de BigQuery
Para cargar datos en BigQuery, se requieren, como mínimo, los siguientes permisos. Estos permisos son obligatorios si los datos se cargan en una tabla o partición nueva, o si se reemplaza una tabla o partición o se agregan datos a esta.
bigquery.tables.create
bigquery.tables.updateData
bigquery.jobs.create
Las siguientes funciones predefinidas de IAM incluyen los permisos bigquery.tables.create
y bigquery.tables.updateData
:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Las siguientes funciones predefinidas de IAM incluyen los permisos bigquery.jobs.create
:
bigquery.user
bigquery.jobUser
bigquery.admin
Además, si un usuario tiene permisos bigquery.datasets.create
, se le otorga el acceso bigquery.dataOwner
cuando crea un conjunto de datos.
El acceso bigquery.dataOwner
permite que el usuario cree y actualice tablas en el conjunto de datos mediante un trabajo de carga.
Para obtener más información sobre las funciones y permisos de IAM en BigQuery, consulta Control de acceso.
Permisos de Cloud Storage
Para cargar datos desde un bucket de Cloud Storage, debes tener permisos storage.objects.get
. Si usas un comodín de URI, también debes tener permisos storage.objects.list
.
Se puede otorgar la función predefinida de IAM storage.objectViewer
para proporcionar los permisos storage.objects.get
y storage.objects.list
.
Carga datos Parquet en una tabla nueva
Puedes cargar datos de Parquet en una tabla nueva mediante una de las siguientes opciones:
- Cloud Console
- El comando
bq load
de la herramienta de línea de comandos debq
- El método de API
jobs.insert
y la configuración de un trabajoload
- Las bibliotecas cliente
Para cargar datos de Parquet desde Cloud Storage en una tabla nueva de BigQuery, realiza los siguientes pasos:
Console
Abre la página de BigQuery en Cloud Console.
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
En el panel de detalles, haz clic en Crear tabla (Create table).
En la página Crear tabla, en la sección Fuente haz lo siguiente:
En Create table from (Crear tabla desde), selecciona Cloud Storage.
En el campo de fuente, busca o ingresa el URI de Cloud Storage. Ten en cuenta que no puedes incluir varios URI en Cloud Console, 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 quieres crear.
En Formato de archivo (File format), selecciona Parquet.
En la página Crear tabla, en la sección Destino (Destination), sigue estos pasos:
En Nombre del conjunto de datos (Dataset name), selecciona el conjunto de datos que corresponda.
Verifica que Tipo de tabla (Table type) esté configurado como Tabla nativa (Native table).
En el campo Nombre de la tabla (Table name), ingresa el nombre de la tabla que quieres crear en BigQuery.
En la sección Esquema no es necesaria ninguna acción. El esquema se describe en sí en archivos de Parquet.
Para particionar la tabla, elige las opciones en la Configuración de partición y agrupamiento en clústeres (opcional):
- Para crear una tabla particionada, haz clic en Sin particionar (No partitioning), selecciona Particionar por campo (Partition by field) y elige una columna
DATE
oTIMESTAMP
. Esta opción no estará disponible si el esquema no incluye una columnaDATE
oTIMESTAMP
. - Para crear una tabla particionada por tiempo de transferencia, haz clic en Sin particionar y selecciona Particionar por tiempo de transferencia.
- Para crear una tabla particionada, haz clic en Sin particionar (No partitioning), selecciona Particionar por campo (Partition by field) y elige una columna
Para el Filtro de partición, haz clic en la casilla Exigir filtro de partición a fin de solicitar a los usuarios que incluyan una cláusula
WHERE
que especifique las particiones que deben consultarse (opcional). Exigir un filtro de partición puede reducir los costos y mejorar el rendimiento. Para obtener más información, lee Consulta tablas particionadas. Esta opción no está disponible si se selecciona Sin particionar (No partitioning).Para agrupar en clústeres la tabla, en la casilla Orden de agrupamiento en clústeres, ingresa entre uno y cuatro nombres de campo (opcional).
Haz clic en Opciones avanzadas (opcional).
- En Preferencia de escritura (Write preference), deja seleccionado Escribir si está vacía (Write if empty). Esta opción crea una tabla nueva y carga los datos en ella.
- En Cantidad de errores permitidos: (Number of errors allowed), acepta el valor predeterminado de
0
o ingresa la cantidad máxima de filas con errores que pueden ignorarse. Si la cantidad de filas con errores excede este valor, el trabajo generará un mensajeinvalid
y fallará. - En Valores desconocidos (Unknown values), desmarca la opción Ignorar valores desconocidos (Ignore unknown values). Esta opción se aplica solo a los archivos CSV y JSON.
- En Encriptación (Encryption), haz clic en Clave administrada por el cliente (Customer-managed key) para usar una clave de Cloud Key Management Service. Si dejas establecida la configuración Clave administrada por Google (Google-managed key), BigQuery encripta los datos en reposo.
Haz clic en Crear tabla.
bq
Usa el comando bq load
, especifica PARQUET
con la marca --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
.--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, lee 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 que se usa para encriptar los datos de la tabla.Para obtener más información sobre tablas particionadas, consulta los siguientes artículos:
Para obtener más información sobre tablas agrupadas, consulta el siguiente artículo:
Para obtener más información sobre la encriptación de tablas, consulta el siguiente artículo:
Para cargar datos de Parquet en BigQuery, ingresa el siguiente comando:
bq --location=LOCATION load \ --source_format=FORMAT \ DATASET.TABLE \ PATH_TO_SOURCE
Reemplaza lo siguiente:
LOCATION
: Es tu ubicación. La marca--location
es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes configurar el valor de la marca comoasia-northeast1
. Puedes configurar un valor predeterminado para la ubicación mediante el archivo .bigqueryrc.FORMAT
:PARQUET
.DATASET
: Es un conjunto de datos existente.TABLE
: es el nombre de la tabla en la que se están cargando los 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.parquet
en una tabla llamada mytable
en mydataset
.
bq load \
--source_format=PARQUET \
mydataset.mytable \
gs://mybucket/mydata.parquet
Con el siguiente comando, se cargan datos de gs://mybucket/mydata.parquet
en una tabla particionada por tiempo de transferencia llamada mytable
en mydataset
.
bq load \
--source_format=PARQUET \
--time_partitioning_type=DAY \
mydataset.mytable \
gs://mybucket/mydata.parquet
Con el siguiente comando, se cargan datos de gs://mybucket/mydata.parquet
en una tabla particionada llamada mytable
en mydataset
. La tabla está particionada en la columna mytimestamp
.
bq load \
--source_format=PARQUET \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.parquet
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=PARQUET \
mydataset.mytable \
gs://mybucket/mydata*.parquet
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 \
--source_format=PARQUET \
mydataset.mytable \
"gs://mybucket/00/*.parquet","gs://mybucket/01/*.parquet"
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 “*”.Configura la propiedad
sourceFormat
comoPARQUET
para especificar el formato de datos de Parquet.Para verificar el estado del trabajo, llama a
jobs.get(JOB_ID*)
y reemplaza JOB_ID con 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 de API:
Los trabajos de carga son atómicos y coherentes: si uno falla, ninguno de los datos estará disponible, y, si uno se realiza 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
en un ID de trabajo determinado es idempotente. Puedes intentar tantas veces como desees en el mismo ID de trabajo y, a lo sumo, una de esas operaciones tendrá éxito.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go que se encuentran en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Go de BigQuery.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java que se encuentran 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.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js que se encuentran 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 Node.js de BigQuery.
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. Si deseas obtener más información, consulta la documentación de referencia de la API de PHP de BigQuery.
Python
Antes de probar esta muestra, 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. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de BigQuery.
Usa el método Client.load_table_from_uri() para iniciar un trabajo de carga desde Cloud Storage. Para usar Parquet, configura la propiedad LoadJobConfig.source_format como la constantePARQUET
de SourceFormat y pasa la configuración del trabajo como el argumento job_config
al método load_table_from_uri().
Agrega o reemplaza una tabla con datos de Parquet
Puedes cargar datos adicionales en una tabla desde archivos de origen o cuando adjuntas resultados de consultas.
En Cloud Console, 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 un resultado de 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 |
---|---|---|---|
Escribir si está vacía | Ninguna | WRITE_EMPTY |
Solo escribe los datos si la tabla está vacía. |
Agregar 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 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 con una de las siguientes opciones:
- Cloud Console
- El comando
bq load
de la herramienta de línea de comandos debq
- El método de API
jobs.insert
y la configuración de un trabajoload
- Las bibliotecas cliente
Para agregar o sobrescribir una tabla con datos de Parquet, realiza los siguientes pasos:
Console
Abre la página de BigQuery en Cloud Console.
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
En el panel de detalles, haz clic en Crear tabla (Create table).
En la página Crear tabla, en la sección Fuente haz lo siguiente:
En Create table from (Crear tabla desde), selecciona Cloud Storage.
En el campo de fuente, busca o ingresa el URI de Cloud Storage. Ten en cuenta que no puedes incluir varios URI en Cloud Console, pero se admiten comodines. El bucket de Cloud Storage debe encontrarse en la misma ubicación que el conjunto de datos que contiene la tabla que agregas o reemplazas.
En Formato de archivo (File format), selecciona Parquet.
En la página Crear tabla, en la sección Destino (Destination), sigue estos pasos:
En Nombre del conjunto de datos (Dataset name), selecciona el conjunto de datos que corresponda.
En el campo Nombre de la tabla, ingresa el nombre de la tabla que quieres agregar o reemplazar en BigQuery.
Verifica que Tipo de tabla (Table type) esté establecido en Tabla nativa (Native table).
En la sección Esquema no es necesaria ninguna acción. El esquema se describe en sí en archivos de Parquet.
En Configuración de partición y agrupamiento en clústeres (Partition and cluster settings), deja los valores predeterminados. No puedes agregar datos a una tabla ni reemplazarla para convertirla en una tabla particionada o agrupada en clústeres; Cloud Console no admite agregar datos a tablas particionadas o agrupadas en clústeres ni reemplazarlas en un trabajo de carga.
Haz clic en Opciones avanzadas (Advanced options).
- En Preferencia de escritura (Write preference), elige Agregar a la tabla (Append to table) o Reemplazar tabla (Overwrite table).
- En Cantidad de errores permitidos: (Number of errors allowed), acepta el valor predeterminado de
0
o ingresa la cantidad máxima de filas con errores que pueden ignorarse. Si la cantidad de filas con errores excede este valor, el trabajo generará un mensajeinvalid
y fallará. - En Valores desconocidos (Unknown values), desmarca la opción Ignorar valores desconocidos (Ignore unknown values). Esta opción se aplica solo a los archivos CSV y JSON.
En Encriptación (Encryption), haz clic en Clave administrada por el cliente (Customer-managed key) para usar una clave de Cloud Key Management Service. Si dejas establecida la configuración Clave administrada por Google, BigQuery encripta los datos en reposo.
Haz clic en Crear tabla.
bq
Ingresa 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 PARQUET
. Debido a que los esquemas de Parquet 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
Reemplaza lo siguiente:
location
: Es tu ubicación. La marca--location
es opcional. Puedes configurar un valor predeterminado para la ubicación con el archivo .bigqueryrc.format
:PARQUET
.dataset
: Es un conjunto de datos existente.table
: es el nombre de la tabla en la que se están cargando los 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.parquet
y se reemplazan los datos de una tabla llamada mytable
en mydataset
.
bq load \
--replace \
--source_format=PARQUET \
mydataset.mytable \
gs://mybucket/mydata.parquet
Con el siguiente comando, se cargan datos de gs://mybucket/mydata.parquet
y se adjuntan datos a una tabla llamada mytable
en mydataset
.
bq load \
--noreplace \
--source_format=PARQUET \
mydataset.mytable \
gs://mybucket/mydata.parquet
Para obtener información sobre cómo agregar o reemplazar tablas particionadas mediante 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
enPARQUET
.Para especificar la preferencia de escritura, establece la propiedad
configuration.load.writeDisposition
enWRITE_TRUNCATE
oWRITE_APPEND
.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go que se encuentran en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Si deseas obtener más información, consulta la documentación de referencia de la API de Go de BigQuery.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java que se encuentran 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.
Node.js
Antes de probar este ejemplo, sigue las instrucciones de configuración para Node.js que se encuentran 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 Node.js de BigQuery.
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. Si deseas obtener más información, consulta la documentación de referencia de la API de PHP de BigQuery.
Python
Antes de probar esta muestra, 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. Si deseas obtener más información, consulta la documentación de referencia de la API de Python de BigQuery.
Para reemplazar las filas de una tabla existente, configura la propiedad LoadJobConfig.write_disposition con la constanteWRITE_TRUNCATE
de WriteDisposition.
Carga datos Parquet con partición de subárbol
BigQuery admite la carga de datos de Parquet particionados en Cloud Storage y propaga las columnas de partición de Hive como columnas en la tabla administrada de destino de BigQuery. Para obtener más información, consulta Carga datos con particiones externas.
Conversiones de Parquet
BigQuery convierte los tipos de datos de Parquet en los siguientes tipos de datos de BigQuery:
Tipos de conversiones
Tipo de datos de BigQuery | ||
---|---|---|
BOOLEAN |
Ninguna | BOOLEAN |
INT32 | Ninguna, INTEGER (UINT_8 , UINT_16 , UINT_32 , INT_8 , INT_16 , INT_32 )
|
INTEGER |
INT32 | DECIMAL | NUMERIC, BIGNUMERIC o STRING |
INT32 |
DATE |
DATE |
INT64 |
Ninguna, INTEGER (UINT_64 , INT_64 )
|
INTEGER |
INT64 | DECIMAL | NUMERIC, BIGNUMERIC o STRING |
INT64 |
TIMESTAMP , precision=MILLIS (TIMESTAMP_MILLIS )
|
TIMESTAMP |
INT64 |
TIMESTAMP , precision=MICROS (TIMESTAMP_MICROS )
|
TIMESTAMP |
INT96 |
Ninguna | TIMESTAMP |
FLOAT |
Ninguna | FLOAT |
DOUBLE |
Ninguna | FLOAT |
BYTE_ARRAY |
Ninguna | BYTES |
BYTE_ARRAY |
STRING (UTF8 ) |
STRING |
FIXED_LEN_BYTE_ARRAY | DECIMAL | NUMERIC, BIGNUMERIC o STRING |
FIXED_LEN_BYTE_ARRAY |
Ninguna | BYTES |
Los grupos anidados se convierten en tipos STRUCT
.
Otras combinaciones de tipos de Parquet y tipos convertidos no son compatibles.
Tipos lógicos decimales
Los tipos lógicos Decimal
se pueden convertir en tipos NUMERIC
, BIGNUMERIC
o STRING
. El tipo convertido depende de los parámetros de precisión y escalamiento del tipo lógico decimal
y los tipos de objetivo decimal 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 mediante el comando
bq load
en la herramienta de línea de comandosbq
, 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 lógicos Enum
Los tipos lógicos Enum
se pueden convertir en STRING
o BYTES
. Especifica el tipo de objetivo de la siguiente manera:
- Para un trabajo de carga con la API de
jobs.insert
, usa el campoJobConfigurationLoad.parquetOptions
. - Para obtener un trabajo de carga mediante el comando
bq load
en la herramienta de línea de comandosbq
, usa la marca--parquet_enum_as_string
. - Para una tabla externa persistente creada con
bq mk
, usa la marca--parquet_enum_as_string
.
Tipos lógicos List
Puedes habilitar la inferencia de esquema para los tipos lógicos LIST
de Parquet. BigQuery verifica si el nodo LIST
está en forma estándar:
<optional | required> group <name> (LIST) {
repeated group list {
<optional | required> <element-type> element;
}
}
Si es así, el campo correspondiente para el nodo LIST
en el esquema convertido se trata como si el nodo tuviera el siguiente esquema:
repeated <element-type> <name>
Se omiten los nodos "list" y "element".
- Para un trabajo de carga con la API de
jobs.insert
, usa el campoJobConfigurationLoad.parquetOptions
. - Para obtener un trabajo de carga mediante el comando
bq load
en la herramienta de línea de comandosbq
, usa la marca--parquet_enable_list_inference
. - Para una tabla externa persistente creada con
bq mk
, usa la marca--parquet_enable_list_inference
.
Conversiones de nombre de columna
Un nombre de columna solo debe contener letras (a-z, A-Z), números (0-9) o guiones bajos (_), y deben comenzar con una letra o un guion bajo. La longitud máxima del nombre de la columna es de 300 caracteres. No se puede usar ninguno de los siguientes prefijos para el nombre de una columna:
_TABLE_
_FILE_
_PARTITION
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
.
Por el momento, no puedes cargar archivos de Parquet que contengan columnas que tengan un punto (.) en el nombre de la columna.
Si el nombre de una columna de Parquet contiene otros caracteres (aparte de un punto), los caracteres se reemplazan por guiones bajos. Puedes agregar guiones bajos al final de los nombres de columna para evitar colisiones. Por ejemplo, si un archivo Parquet contiene 2 columnas Column1
y column1
, las columnas se cargan como Column1
y column1_
respectivamente.