Carga datos particionados de forma externa
BigQuery puede cargar datos almacenados en Cloud Storage mediante un diseño de partición de colmena. La partición de subárbol significa que los datos externos se organizan en varios archivos, con una convención de nombres para separar archivos en diferentes particiones. Para obtener más información, consulta los Tipos de datos compatibles.
De forma predeterminada, los datos no se particionan en BigQuery después de cargarlos, a menos que crees una tabla particionada de forma explícita.
Carga datos particionados en colmena
Para cargar datos particionados en colmena, elige una de las siguientes opciones:
Console
En la consola de Google Cloud, ve a BigQuery.
- En el panel Explorador, expande tu proyecto y elige un conjunto de datos.
- Haz clic en Ver acciones y, luego, en Crear tabla. Se abrirá el panel Crear tabla.
- En la sección Fuente, especifica los siguientes detalles:
- En Create table from (Crear tabla desde), elige Google Cloud Storage.
- En Seleccionar archivo del bucket de Cloud Storage, escribe la ruta de acceso a la carpeta de Cloud Storage mediante comodines.
Por ejemplo,
my_bucket/my_files*
. 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. - En la lista Formato de archivo, elige el tipo de archivo.
- Elegir la casilla de verificación Partición de datos de origen y, luego, para Seleccionar prefijo de URI de origen, escribe el prefijo de URI de Cloud Storage. Por ejemplo,
gs://my_bucket/my_files
. - En la sección Modo de inferencia de la partición, elige una de las siguientes
opciones:
- Inferir tipos de forma de automática: configura el modo de detección de esquemas de partición como
AUTO
. - Todas las columnas son strings: configura el modo de detección de esquemas de partición como
STRINGS
. - Proporcionar uno propio: configura el modo de detección de esquemas de partición como
CUSTOM
e escribe de forma manual la información del esquema para las claves de partición. Para obtener más información, consulta Proporciona un esquema de clave de partición personalizado.
- Inferir tipos de forma de automática: configura el modo de detección de esquemas de partición como
- Opcional: Para solicitar un filtro de partición en todas las consultas de esta tabla, elige la casilla de verificación Exigir filtro de partición. Exigir un filtro de partición puede reducir los costos y mejorar el rendimiento. Para obtener más información, consulta Filtros de predicado obligatorios en claves de partición de consultas.
- En la sección Destino, especifica los siguientes detalles:
- En Proyecto, elige el proyecto en el que deseas crear la tabla.
- En Conjunto de datos, elige el conjunto de datos en el que deseas crear la tabla.
- En Tabla, ingresa el nombre de la tabla que deseas crear.
- En Tipo de tabla, selecciona Tabla nativa .
- En la sección Esquema, ingresa la definición del esquema.
- Para habilitar la detección automática de esquemas, elige Detección automática.
- Para omitir las filas con valores de columna adicionales que no coinciden con el esquema, expande la sección Opciones avanzadas y elige Valores desconocidos.
- Haga clic en Crear tabla.
SQL
Para crear una tabla particionada de forma externa, usa la cláusula WITH PARTITION COLUMNS
de la declaración LOAD DATA
a fin de especificar los detalles del esquema de partición.
Para ver un ejemplo, consulta Carga un archivo particionado de forma externa.
bq
Carga datos particionados en colmena con 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 particionados en colmena con la detección de claves de partición de tipo string:
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 colmena con un esquema de clave de partición personalizado que se codifique 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 de forma inmediata después del prefijo de URI de origen. Usa 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
La compatibilidad con la partición de colmena se logra mediante la configuración de HivePartitioningOptions
en JobConfigurationLoad
.
Realiza 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 datos del 31/10/2019, haz lo siguiente:
- Configura el modo de partición de Hive en
AUTO
,STRINGS
oCUSTOM
. - Establece el prefijo de URI de origen en
gs://my_bucket/my_table/
para los modos de partición de colmenaAUTO
oSTRINGS
. Para 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
incluidas, con los valores2019-10-31
y1
, respectivamente.
Para cargar solo datos de archivos específicos, haz lo siguiente:
- Configura el modo de partición de Hive en
AUTO
,STRINGS
oCUSTOM
. - Establece el prefijo de URI de origen en
gs://my_bucket/my_table/
para los modos de partición de colmenaAUTO
oSTRINGS
. ParaCUSTOM
, proporcionags://my_bucket/my_table/{dt:DATE}/{val:INTEGER}
. - Usa los URI
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 desde ambos archivos con las columnas
dt
yval
propagadas.
Esquema de partición
En las siguientes secciones, se explica el diseño de partición predeterminado de Hive y los modos de detección de esquemas compatibles con BigQuery.
Diseños de datos admitidos
Las claves de partición de Hive se muestran como columnas normales cuando consultas datos desde Cloud Storage. Los datos deben seguir un diseño particionado de subárbol predeterminado. Por ejemplo, los siguientes archivos siguen el diseño predeterminado, con los pares clave-valor establecidos como directorios con un 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 de acceso del directorio, la detección del esquema de partición fallará. Por ejemplo, considera la siguiente ruta de acceso, en la que los nombres de las claves de partición no están codificados:
gs://my_bucket/my_table/2019-10-31/en/my_filename
Los archivos en los que el esquema no está en un orden coherente también generan fallas en la detección. Por ejemplo, considera los siguientes dos archivos que tienen codificaciones de claves de partición invertidas:
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 partición de subárbol:
AUTO
: Los nombres y tipos de claves se detectan de forma automática. Se pueden detectar los siguientes tipos:STRING
,INTEGER
,DATE
yTIMESTAMP
.STRINGS
: Los nombres de las claves se convierten de forma automática al tipoSTRING
.CUSTOM
: El esquema de clave de partición está codificado como se especifica en el prefijo de URI de origen.
Esquema de clave de partición personalizada
Para usar un esquema CUSTOM
, debes especificar el esquema en el campo del prefijo de URI de origen. Usar un esquema CUSTOM
te permite especificar el tipo de cada clave de partición.
Los valores deben analizarse de forma válida como el tipo especificado o la consulta fallará.
Por ejemplo, si estableces la marca source_uri_prefix
en gs://my_bucket/my_table/{dt:DATE}/{val:STRING}
, BigQuery trata a val
como una STRING, dt
como DATE y usa gs://my_bucket/my_table
como el prefijo del URI de origen para los archivos coincidentes.
Limitaciones
- La compatibilidad para la partición de subárbol se compila bajo la suposición de que existe un prefijo de URI de origen común para todos los URI que finalizan justo antes de la codificación de partición, de la siguiente manera:
gs://BUCKET/PATH_TO_TABLE/
. - Se supone que la estructura de directorios de una tabla particionada de subárbol 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 tener un diseño predeterminado de partición de subárbol.
- Las claves de partición de subárbol y las columnas de los archivos subyacentes no pueden superponerse.
Solo se admite GoogleSQL.
Se aplican todas las limitaciones para las cargas desde Cloud Storage.
¿Qué sigue?
- Obtén más información sobre las tablas particionadas.
- Aprende a usar SQL en BigQuery.