Cargar datos con particiones externas
BigQuery puede cargar datos almacenados en Cloud Storage mediante un diseño de partición de Hive. La creación de particiones de Hive significa que los datos externos se organizan en varios archivos, con una convención de nomenclatura para separar los archivos en diferentes particiones. Para obtener más información, consulta Diseños de datos admitidos.
De forma predeterminada, los datos no se particionan en BigQuery después de cargarlos, a menos que crees explícitamente una tabla particionada.
Cargar datos con particiones de Hive
Para cargar datos particionados de Hive, elija una de las siguientes opciones:
Consola
En la consola de Google Cloud , ve a BigQuery.
- En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
- Haz clic en Ver acciones y, a continuación, en Crear tabla. Se abrirá el panel Crear tabla.
- En la sección Fuente, especifica los siguientes detalles:
- En Crear tabla a partir de, selecciona Google Cloud Storage.
- En Seleccionar archivo del segmento de Cloud Storage, introduce la ruta de la carpeta de Cloud Storage con comodines.
Por ejemplo,
my_bucket/my_files*
. 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 lista Formato de archivo, selecciona el tipo de archivo.
- Marca la casilla Partición de datos de origen y, en Seleccionar prefijo del URI de origen, introduce el prefijo del URI de Cloud Storage. Por ejemplo,
gs://my_bucket/my_files
. - En la sección Modo de inferencia de particiones, seleccione una de las siguientes opciones:
- Tipos de inferencias automáticas: define el modo de detección del esquema de partición como
AUTO
. - Todas las columnas son cadenas: define el modo de detección del esquema de partición como
STRINGS
. - Proporcionar mi propio esquema: define el modo de detección del esquema de partición como
CUSTOM
e introduce manualmente la información del esquema de las claves de partición. Para obtener más información, consulta el artículo Proporcionar un esquema de clave de partición personalizado.
- Tipos de inferencias automáticas: define el modo de detección del esquema de partición como
- Opcional: Para requerir un filtro de partición en todas las consultas de esta tabla, seleccione la casilla Requerir filtro de partición. Si usas este filtro, es posible que rebajes los costes y mejores el rendimiento. Para obtener más información, consulta Requerir filtros de predicado en claves de partición en consultas.
- En la sección Destino, especifica los siguientes detalles:
- En Proyecto, selecciona el proyecto en el que quieras crear la tabla.
- En Conjunto de datos, selecciona el conjunto de datos en el que quieras crear la tabla.
- En Tabla, introduce el nombre de la tabla que quieras crear.
- En Tipo de tabla, selecciona Tabla nativa .
- En la sección Schema (Esquema), introduce la definición de schema.
- Para habilitar la detección automática del esquema, selecciona Detectar automáticamente.
- Para ignorar las filas con otros valores de columna que no coincidan con el esquema, despliega la sección Opciones avanzadas y selecciona Valores desconocidos.
- Haz clic en Crear tabla.
SQL
Para crear una tabla con particiones externas, usa la cláusula WITH PARTITION COLUMNS
de la declaración LOAD DATA
para especificar los detalles del esquema de partición.
Por ejemplo, consulta Cargar un archivo que está particionado externamente.
bq
Cargar datos con particiones de Hive mediante la detección automática del tipo de clave de partición:
bq load --source_format=ORC --hive_partitioning_mode=AUTO \ --hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \ dataset.table gcs_uris
Carga datos con particiones de Hive mediante la detección de claves de partición de tipo cadena:
bq load --source_format=CSV --autodetect \ --hive_partitioning_mode=STRINGS \ --hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \ dataset.table gcs_uris
Carga datos particionados de Hive mediante un esquema de clave de partición personalizado que se codifica con el campo source\_uri\_prefix
:
bq load --source_format=JSON --hive_partitioning_mode=CUSTOM \ --hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/partition_key_schema \ dataset.table gcs_uris file_schema
El esquema de clave de partición se codifica inmediatamente después del prefijo del URI de origen. Utiliza el siguiente formato para especificar --hive_partitioning_source_uri_prefix
:
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/{key1:TYPE1}/{key2:TYPE2}/{key3:TYPE3}
API
Para usar la partición de Hive, debes definir el valor de
HivePartitioningOptions
en
JobConfigurationLoad
.
Realizar cargas incrementales
Considera el siguiente diseño de datos:
gs://my_bucket/my_table/dt=2019-10-31/val=1/file1
gs://my_bucket/my_table/dt=2018-10-31/val=2/file2
gs://my_bucket/my_table/dt=2017-10-31/val=3/file3
gs://my_bucket/my_table/dt=2016-10-31/val=4/file4
Para cargar solo los datos del 31 de octubre del 2019, haz lo siguiente:
- Define el modo de particiones de Hive como
AUTO
,STRINGS
oCUSTOM
. - Define el prefijo del URI de origen como
gs://my_bucket/my_table/
para los modos de partición mediante HiveAUTO
oSTRINGS
. En el caso de CUSTOM, proporcionags://my_bucket/my_table/{dt:DATE}/{val:INTEGER}
. - Usa el URI
gs://my_bucket/my_table/dt=2019-10-31/*
. - Los datos se cargan con las columnas
dt
yval
, con los valores2019-10-31
y1
, respectivamente.
Para cargar solo los datos de archivos específicos, sigue estos pasos:
- Define el modo de particiones de Hive como
AUTO
,STRINGS
oCUSTOM
. - Define el prefijo del URI de origen como
gs://my_bucket/my_table/
para los modos de partición mediante HiveAUTO
oSTRINGS
. EnCUSTOM
, proporcionags://my_bucket/my_table/{dt:DATE}/{val:INTEGER}
. - Usa los URIs
gs://my_bucket/my_table/dt=2017-10-31/val=3/file3,gs://my_bucket/my_table/dt=2016-10-31/val=4/file4
. - Los datos se cargan de ambos archivos con las columnas
dt
yval
rellenas.
Esquema de partición
En las siguientes secciones se explica el diseño predeterminado de particiones de Hive y los modos de detección de esquemas que admite BigQuery.
Diseños de datos admitidos
Las claves de partición de Hive aparecen como columnas normales cuando consultas datos de Cloud Storage. Los datos deben seguir un diseño predeterminado de partición de Hive. Por ejemplo, los siguientes archivos siguen el diseño predeterminado: los pares clave-valor se configuran como directorios con el signo igual (=) como separador y las claves de partición siempre están en el mismo orden:
gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/dt=2018-10-31/lang=fr/my_filename
El prefijo de URI de origen común en este ejemplo es gs://my_bucket/my_table
.
Diseños de datos no admitidos
Si los nombres de las claves de partición no están codificados en la ruta del directorio, no se detectará el esquema de partición. Por ejemplo, considere la siguiente ruta, que no codifica los nombres de las claves de partición:
gs://my_bucket/my_table/2019-10-31/en/my_filename
Los archivos en los que el esquema no está en un orden coherente tampoco se detectan. Por ejemplo, considere los dos archivos siguientes con codificaciones de clave de partición invertida:
gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/lang=fr/dt=2018-10-31/my_filename
Modos de detección
BigQuery admite tres modos de detección de esquemas de particiones de Hive:
AUTO
: los nombres y los tipos de las claves se detectan automáticamente. Se pueden detectar los siguientes tipos:STRINGS
: los nombres de las claves se convierten automáticamente al tipoSTRING
.CUSTOM
: el esquema de la clave de partición se codifica tal como se especifica en el prefijo del URI de origen.
Esquema de clave de partición personalizada
Para usar un esquema CUSTOM
, debes especificarlo en el campo de prefijo del URI de origen. Si usas un esquema CUSTOM
, puedes especificar el tipo de cada clave de partición.
Los valores deben analizarse correctamente como el tipo especificado o la consulta fallará.
Por ejemplo, si asignas el valor gs://my_bucket/my_table/{dt:DATE}/{val:STRING}
a la marca source_uri_prefix
, BigQuery tratará val
como una CADENA, dt
como una FECHA y usará gs://my_bucket/my_table
como prefijo de URI de origen de los archivos coincidentes.
Limitaciones
- La compatibilidad con la partición mediante Hive se basa en un prefijo de URI de origen común para todos los URIs que termina inmediatamente antes de la codificación de la partición, como se indica a continuación:
gs://BUCKET/PATH_TO_TABLE/
. - Se presupone que la estructura de directorios de una tabla particionada de Hive tiene las mismas claves de partición en el mismo orden, con un máximo de diez claves de partición por tabla.
- Los datos deben seguir un diseño de partición de Hive predeterminado.
- Las claves de partición de Hive y las columnas de los archivos subyacentes no pueden superponerse.
La asistencia solo está disponible para GoogleSQL.
Se aplican todas las limitaciones para cargar datos desde Cloud Storage.
Siguientes pasos
- Consulta información sobre las tablas con particiones.
- Consulta cómo usar SQL en BigQuery.