Crear conjuntos de datos externos de Spanner
En este documento se describe cómo crear un conjunto de datos externo (también conocido como conjunto de datos federado) en BigQuery que esté vinculado a una base de datos de GoogleSQL o PostgreSQL en Spanner.
Un conjunto de datos externo es una conexión entre BigQuery y una fuente de datos externa a nivel de conjunto de datos. Te permite consultar datos transaccionales en bases de datos de Spanner con GoogleSQL sin tener que copiar ni importar todos los datos de Spanner al almacenamiento de BigQuery. Estos resultados de consulta se almacenan en BigQuery.
Las tablas de un conjunto de datos externo se rellenan automáticamente a partir de las tablas de la fuente de datos externa correspondiente. Puedes consultar estas tablas directamente en BigQuery, pero no puedes modificarlas, añadirles datos ni eliminarlas. Sin embargo, cualquier cambio que hagas en la fuente de datos externa se reflejará automáticamente en BigQuery.
Cuando consultas Spanner, los resultados de las consultas se guardan de forma predeterminada en tablas temporales. También se pueden guardar de forma opcional como una tabla de BigQuery, combinar con otras tablas o fusionar con tablas ya creadas mediante DML.
Permisos obligatorios
Para obtener el permiso que necesitas para crear un conjunto de datos externo, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Usuario de BigQuery (roles/bigquery.user).
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene el permiso bigquery.datasets.create
, que es necesario para crear un conjunto de datos externo.
También puedes obtener este permiso con roles personalizados u otros roles predefinidos.
Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en BigQuery, consulta la introducción a la gestión de identidades y accesos.
Usar una conexión CLOUD_RESOURCE
De forma opcional, los conjuntos de datos externos de Spanner pueden usar una CLOUD_RESOURCE para interactuar con tu base de datos de Spanner, de modo que puedas proporcionar acceso de usuario a los datos de Spanner a través de BigQuery sin darles acceso directo a la base de datos de Spanner. Como la cuenta de servicio de la conexión CLOUD_RESOURCE se encarga de obtener los datos de Spanner, solo tienes que conceder acceso a los usuarios al conjunto de datos externo de Spanner.
Antes de crear conjuntos de datos externos de Spanner con una conexión CLOUD_RESOURCE, haz lo siguiente:
Crear una conexión
Puedes crear o usar una CLOUD_RESOURCEconexión
para conectarte a Spanner. Asegúrate de crear la conexión en la misma ubicación en la que vayas a crear tu conjunto de datos externo de Spanner.
Consola
Ve a la página BigQuery.
En el panel de la izquierda, haga clic en Explorador:

Si no ves el panel de la izquierda, haz clic en Ampliar panel de la izquierda para abrirlo.
En el panel Explorador, despliega el nombre de tu proyecto y haz clic en Conexiones.
En la página Conexiones, haz clic en Crear conexión.
En Tipo de conexión, elija Modelos remotos de Vertex AI, funciones remotas, BigLake y Spanner (recurso de Cloud).
En el campo ID de conexión, introduce un nombre para la conexión.
En Tipo de ubicación, selecciona una ubicación para tu conexión. La conexión debe estar ubicada junto a otros recursos, como conjuntos de datos.
Haz clic en Crear conexión.
Haz clic en Ir a la conexión.
En el panel Información sobre la conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.
bq
En un entorno de línea de comandos, crea una conexión:
bq mk --connection --location=REGION --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE CONNECTION_ID
El parámetro
--project_idanula el proyecto predeterminado.Haz los cambios siguientes:
REGION: tu región de conexiónPROJECT_ID: tu ID de proyecto Google CloudCONNECTION_ID: un ID para tu conexión
Cuando creas un recurso de conexión, BigQuery crea una cuenta de servicio del sistema única y la asocia a la conexión.
Solución de problemas: si aparece el siguiente error de conexión, actualiza el SDK de Google Cloud:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
Obtén y copia el ID de la cuenta de servicio para usarlo en un paso posterior:
bq show --connection PROJECT_ID.REGION.CONNECTION_ID
El resultado debería ser similar al siguiente:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
Python
Antes de probar este ejemplo, sigue las Pythoninstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Antes de probar este ejemplo, sigue las Node.jsinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.