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

  1. En la consola de Google Cloud, ve a BigQuery.

    Ir a BigQuery

  2. En el panel Explorador, expande tu proyecto y elige un conjunto de datos.
  3. Haz clic en Ver acciones y, luego, en Crear tabla. Se abrirá el panel Crear tabla.
  4. En la sección Fuente, especifica los siguientes detalles:
    1. En Create table from (Crear tabla desde), elige Google Cloud Storage.
    2. 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.
    3. En la lista Formato de archivo, elige el tipo de archivo.
    4. 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.
    5. 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.
    6. 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.
  5. En la sección Destino, especifica los siguientes detalles:
    1. En Proyecto, elige el proyecto en el que deseas crear la tabla.
    2. En Conjunto de datos, elige el conjunto de datos en el que deseas crear la tabla.
    3. En Tabla, ingresa el nombre de la tabla que deseas crear.
    4. En Tipo de tabla, selecciona Tabla nativa .
  6. En la sección Esquema, ingresa la definición del esquema.
  7. Para habilitar la detección automática de esquemas, elige Detección automática.
  8. 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.
  9. 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 o CUSTOM.
  • Establece el prefijo de URI de origen en gs://my_bucket/my_table/ para los modos de partición de colmena AUTO o STRINGS. Para CUSTOM, proporciona gs://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 y val incluidas, con los valores 2019-10-31 y 1, respectivamente.

Para cargar solo datos de archivos específicos, haz lo siguiente:

  • Configura el modo de partición de Hive en AUTO, STRINGS o CUSTOM.
  • Establece el prefijo de URI de origen en gs://my_bucket/my_table/ para los modos de partición de colmena AUTO o STRINGS. Para CUSTOM, proporciona gs://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 y val 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 y TIMESTAMP.
  • STRINGS: Los nombres de las claves se convierten de forma automática al tipo STRING.
  • 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?