Carga datos particionados de forma externa

BigQuery admite la carga de datos con particiones externas en los formatos Avro, Parquet, ORC, CSV y JSON que se almacenan en Cloud Storage mediante un diseño predeterminado de partición en colmena.

Limitaciones

  • La compatibilidad con la partición en colmena se crea con la suposición de un prefijo de URI de origen común para todos los URI que finaliza justo antes de la codificación de la partición, que se parece a gs://<bucket>/<path_to_table>/.
  • Se supone que la estructura de directorios de una tabla particionada en colmena 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 en colmena.
  • Las claves de partición en colmena y las columnas de los archivos subyacentes no pueden superponerse.
  • De momento, la compatibilidad está limitada a la IU web de BigQuery, la herramienta de línea de comandos y la API de REST.
  • Se aplican todas las limitaciones para las cargas desde Cloud Storage.

Diseños de datos admitidos

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 = como separador y las claves de partición siempre en el mismo orden.

gs://bucket/table/dt=2019-10-31/lang=en/foo
gs://bucket/table/dt=2018-10-31/lang=fr/bar

El prefijo de URI de origen común en este ejemplo es gs://bucket/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, la detección de esquema de partición fallará. Por ejemplo, considera la siguiente ruta, que no codifica los nombres de las claves de partición:

gs://bucket/table/2019-10-31/en/foo

La detección también fallará en los archivos en los que el esquema no tiene un orden coherente. Por ejemplo, considera los dos archivos siguientes con codificaciones de claves de partición invertidas:

gs://bucket/table/dt=2019-10-31/lang=en/foo
gs://bucket/table/lang=fr/dt=2018-10-31/bar

Modos de detección de esquema de partición

Las claves de partición en colmena aparecen como columnas normales cuando se cargan datos desde Cloud Storage. Admitimos tres modos de detección de esquema de partición en colmena:

  • AUTO: Los nombres y tipos de clave se detectan de forma automática. Se pueden detectar los siguientes tipos: STRING, INTEGER, DATE y TIMESTAMP.
  • STRINGS: los nombres de las claves se infieren de forma automática con el tipo STRING.
  • CUSTOM: El esquema de clave de partición está codificado en el prefijo de URI de origen.

Proporciona un esquema de clave de partición personalizado

La detección de CUSTOM requiere que se codifique el esquema en el campo del prefijo de URI de origen, para lo cual se deben proporcionar pares de nombre y tipo de clave de partición. Los valores deben analizarse de forma válida como el tipo especificado o la carga fallará.

Por ejemplo, establecer source_uri_prefix en: gs://my_bucket/my_table/{dt:DATE}/{val:STRING} trata val como una STRING y dt como una DATE, y extrae gs://my_bucket/my_table como el prefijo de URI de origen para los archivos coincidentes.

Consulta las instrucciones detalladas para la IU web, la herramienta de línea de comandos y la API de REST.

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:

  • Establece el modo de partición en colmena en AUTO, STRINGS o CUSTOM.
  • Establece el prefijo de URI de origen en gs://my_bucket/my_table/ para los modos de partición en 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:

  • Establece el modo de partición en colmena en AUTO, STRINGS o CUSTOM.
  • Establece el prefijo de URI de origen en gs://my_bucket/my_table/ para los modos de partición en 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.

Configura HivePartitioningOptions con la IU web

Para configurar las opciones de partición de subárbol en la IU web, sigue estos pasos:

  1. Abre la IU web de BigQuery en Cloud Console.

    Ir a Cloud Console

  2. Selecciona el conjunto de datos en el panel Recursos.

  3. Haz clic en el botón Crear tabla para crear una tabla nueva.

  4. Selecciona Cloud Storage en el menú desplegable Crear tabla desde (Create table from).

    Opciones de partición en colmena

  5. En el campo Select file from Cloud Storage bucket (Seleccionar archivo del depósito de Cloud Storage), ingresa la ruta de acceso del archivo del conjunto de datos y, luego, selecciona el tipo de archivo del menú desplegable.

    1. Marca la casilla Source data partitioning (Partición de datos de origen) y, luego, ingresa el prefijo de URI de origen en el campo proporcionado.
    2. En Partition inference mode (Modo de inferencia de partición), elige “Automatically infer types” (Inferir tipos de manera automática) para AUTO o “All columns are strings” (Todas las columnas son strings) para STRINGS.
    3. Elige “Native table” (Tabla nativa) en el menú desplegable Table type (Tipo de tabla).

Configura HivePartitioningOptions con la herramienta de línea de comandos

Solicita 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

Solicita la detección de claves de partición de tipo string

bq load --source_format=PARQUET --autodetect \
--hive_partitioning_mode=STRINGS \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \
dataset.table gcs_uris

Comando para proporcionar un esquema de clave de partición personalizado codificado mediante el campo source_uri_prefix

bq load --source_format=JSON --hive_partitioning_mode=CUSTOM \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/custom_schema_encoding \
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}

Configura HivePartitionOptions con la API REST

Existe compatibilidad para la partición en colmena mediante la configuración de HivePartitioningOptions en JobConfigurationLoad.

Ten en cuenta que, cuando hivePartitioningOptions.mode se establece en CUSTOM, debes codificar el esquema de clave de partición dentro de sourceUriPrefix mediante la configuración de hivePartitioningOptions.sourceUriPrefix como gs://bucket/path_to_table/{key1:TYPE1}/{key2:TYPE2}/{key3:TYPE3}.