Introducción a las fuentes de datos externas

En esta página, se proporciona una descripción general sobre la consulta de datos almacenados fuera de BigQuery.

Una fuente de datos externa es una fuente de datos que puedes consultar directamente desde BigQuery, aunque los datos no estén almacenados en BigQuery. Por ejemplo, es posible que tengas datos en una base de datos diferente de Google Cloud, en archivos en Cloud Storage o en algún otro producto en la nube que desees analizar en BigQuery pero que aún no quieres migrar.

Los casos de uso de fuentes de datos externas incluyen los siguientes:

  • Para las cargas de trabajo de ELT (extraer-cargar-transformar), carga y limpia los datos en un pase y escribe el resultado limpio en el almacenamiento de BigQuery mediante una consulta CREATE TABLE ... AS SELECT.
  • Unir tablas de BigQuery con datos que cambian con frecuencia desde una fuente de datos externa. Cuando consultas la fuente de datos externa directamente, no necesitas volver a cargar los datos en el almacenamiento de BigQuery cada vez que este cambia.

BigQuery tiene dos mecanismos diferentes para consultar datos externos: tablas externas y consultas federadas.

Tablas externas

Las tablas externas son similares a las tablas estándar de BigQuery, ya que estas tablas almacenan sus metadatos y su esquema en el almacenamiento de BigQuery. Sin embargo, sus datos residen en una fuente externa.

Las tablas externas se encuentran dentro de un conjunto de datos y las administras de la misma manera que lo haces con una tabla de BigQuery estándar. Por ejemplo, puedes ver las propiedades de la tabla, configurar los controles de acceso, etcétera. Puedes consultar estas tablas y, en la mayoría de los casos, puedes unirlas con otras tablas.

Existen cuatro tipos de tablas externas:

  • Tablas de BigLake
  • Tablas de BigQuery Omni
  • Tablas de objetos
  • Tablas externas que no sean BigLake

Tablas de BigLake

Las tablas de BigLake te permiten consultar datos estructurados en almacenes de datos externos con delegación de acceso. La delegación de acceso separa el acceso a la tabla de BigLake del acceso al almacén de datos subyacente. Se usa una conexión externa asociada con una cuenta de servicio para conectarse al almacén de datos. Debido a que la cuenta de servicio controla la recuperación de datos del almacén de datos, solo tienes que otorgar a los usuarios acceso a la tabla de BigLake. Esto te permite aplicar seguridad detallada a nivel de tabla, incluida la seguridad a nivel de fila y a nivel de columna. Para las tablas de BigLake basadas en Cloud Storage, también puedes usar el enmascaramiento de datos dinámicos. Para obtener más información sobre las soluciones de análisis de múltiples nubes mediante tablas de BigLake con datos de Amazon S3 o Blob Storage, consulta BigQuery Omni.

Para obtener más información, consulta Introducción a las tablas de BigLake.

Tablas de objetos

Las tablas de objetos te permiten analizar datos no estructurados en Cloud Storage. Puedes hacer análisis con funciones remotas o hacer inferencias mediante BigQuery ML y, luego, unir los resultados de estas operaciones con el resto de tus datos estructurados en BigQuery.

Al igual que las tablas de BigLake, las tablas de objetos usan la delegación de acceso, que separa el acceso a la tabla de objetos del acceso a los objetos de Cloud Storage. Se usa una conexión externa asociada con una cuenta de servicio para conectarse a Cloud Storage, por lo que solo tienes que otorgar a los usuarios acceso a la tabla de objetos. Esto te permite aplicar la seguridad a nivel de fila y administrar a qué objetos tienen acceso los usuarios.

Para obtener más información, consulta Introducción a las tablas de objetos.

Tablas externas que no sean BigLake

Las tablas externas que no sean BigLake te permiten consultar datos estructurados en almacenes de datos externos. Para consultar una tabla externa que no sea BigLake, debes tener permisos sobre la tabla externa y la fuente de datos externa. Por ejemplo, para consultar una tabla externa que no sea BigLake y que usa una fuente de datos en Cloud Storage, debes tener los siguientes permisos:

  • bigquery.tables.getData
  • bigquery.jobs.create
  • storage.buckets.get
  • storage.objects.get

Para obtener más información, consulta Introducción a las tablas externas.

Consultas federadas

Las consultas federadas te permiten enviar una declaración de consulta a las bases de datos de AlloyDB, Spanner o Cloud SQL y obtener el resultado como una tabla temporal. Las consultas federadas usan la API de BigQuery Connection para establecer una conexión con AlloyDB, Spanner o Cloud SQL. En tu consulta, debes usar la función EXTERNAL_QUERY para enviar una sentencia de consulta a la base de datos externa con el dialecto SQL de esa base de datos. Los resultados se convierten en tipos de datos de GoogleSQL.

Para obtener más información, consulta Introducción a las consultas federadas.

Comparación de las funciones de las fuentes de datos externas

En la siguiente tabla, se compara el comportamiento de las fuentes de datos externas:

Tablas de BigLake Tablas de objetos Tablas externas que no sean BigLake Consultas federadas
Usa la delegación de acceso Sí, a través de una cuenta de servicio Sí, a través de una cuenta de servicio No Sí, a través de una cuenta de usuario de base de datos (solo Cloud SQL)
Puede basarse en varios URIs de origen Sí (solo en Cloud Storage) No aplicable
Asignación de filas Las filas representan el contenido del archivo Las filas representan metadatos de archivos Las filas representan el contenido del archivo No aplicable
Otras herramientas de procesamiento de datos pueden acceder con conectores Sí (solo en Cloud Storage) No No aplicable
Se puede unir a otras tablas de BigQuery Sí (solo en Cloud Storage)
Se puede acceder como una tabla temporal Sí (solo en Cloud Storage) No
Funciona con Amazon S3 Yes No No No
Funciona con Azure Storage Yes No No No.
Funciona con Bigtable No. No Yes No.
Funciona con Spanner No. No No Yes
Funciona con Cloud SQL No No No Yes
Funciona con Google Drive No No Yes No
Funciona con Cloud Storage Yes No

¿Qué sigue?