Usa datos particionados de forma externa

Puedes usar tablas externas de BigQuery para consultar datos particionados en los siguientes almacenes de datos:

Los datos particionados externos deben usar un diseño de partición de Hive predeterminado y estar en uno de los siguientes formatos:

  • Avro
  • CSV
  • JSON
  • ORC
  • Parquet

Para consultar datos particionados de forma externa, debes crear una tabla de BigLake o una tabla externa. Te recomendamos usar las tablas de BigLake, ya que te permiten aplicar una seguridad detallada a nivel de la tabla. Para obtener información sobre BigLake y las tablas externas, consulta Introducción a las tablas de BigLake y Introducción a las tablas externas.

Para habilitar la compatibilidad con la partición de Hive, configura las opciones apropiadas en el archivo de definición de tablas. Si deseas obtener instrucciones para consultar tablas particionadas administradas, consulta Introducción a las tablas particionadas.

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.

Para evitar la lectura de archivos innecesarios y mejorar el rendimiento, puedes usar filtros de predicado en claves de partición de consultas.

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.

Reducción de particiones

BigQuery reduce las particiones siempre que sea posible mediante predicados de consulta en las claves de partición. Esto permite que BigQuery evite la lectura de archivos innecesarios, lo que mejora el rendimiento.

Filtros de predicado en claves de partición de consultas

Cuando creas una tabla particionada de forma externa, puedes hacer obligatorio el uso de filtros de predicado en claves de partición si habilitas la opción requirePartitionFilter en HivePartitioningOptions.

Cuando se habilita esta opción, los intentos de buscar en la tabla particionada de forma externa sin especificar una cláusula WHERE producen el siguiente error: Cannot query over table <table_name> without a filter over column(s) <partition key names> that can be used for partition elimination.

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 consultar fuentes de datos externas almacenadas en Cloud Storage.

¿Qué sigue?