En esta página, se describe cómo usar Lakehouse Federation para acceder a los datos que se almacenan o a los que se puede acceder con BigQuery desde una interfaz de AlloyDB para PostgreSQL.
El wrapper de datos externos admite una amplia variedad de recursos de BigQuery, lo que te permite consultar lo siguiente:
- Tablas nativas y vistas materializadas
- Vistas de BigQuery(vistas lógicas)
- Tablas externas de BigLake, incluidas las de las tablas administradas de Apache Iceberg
- Tablas externas estándar
Con esta integración, puedes tratar los conjuntos de datos de BigQuery como tablas locales dentro de tu entorno de PostgreSQL para realizar análisis entre motores. Para obtener más información, consulta la descripción general de Lakehouse Federation en AlloyDB.
En esta página, se supone que tienes un clúster y una instancia principal de AlloyDB, y que tienes un conjunto de datos y tablas de BigQuery. Para obtener más información, consulta Crea conjuntos de datos y Crea y usa tablas.
Antes de comenzar
- Asegúrate de que la marca the
bigquery_fdw.enabledflag is configured esté configurada en la instancia de AlloyDB para PostgreSQL. - Familiarízate con los tipos de datos y las asignaciones de columnas de BigQuery compatibles.
- Accede a tu cuenta de Google Cloud . Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Habilita las API de Cloud necesarias para crear una conexión a AlloyDB para PostgreSQL.
En el paso Confirmar proyecto, haz clic en Siguiente para confirmar el nombre del proyecto en el que realizarás cambios.
En el paso Habilitar APIs, haz clic en Habilitar para habilitar lo siguiente:
- API de AlloyDB
- API de Compute Engine
- API de Cloud Resource Manager
- API de Service Networking
- API de BigQuery Storage
- API de BigQuery
La API de Service Networking es obligatoria si planeas configurar la conectividad de red a AlloyDB con una red de VPC que reside en el mismo proyecto Google Cloud que AlloyDB.
Las APIs de Compute Engine y Cloud Resource Manager son necesarias si planeas configurar la conectividad de red a AlloyDB con una red de VPC que reside en un proyecto Google Cloud diferente.
Roles obligatorios
Para otorgar acceso de lectura al conjunto de datos de BigQuery a la cuenta de servicio del clúster de AlloyDB, necesitas los siguientes permisos. Para obtener más información, consulta Cómo otorgar acceso de AlloyDB al conjunto de datos de BigQuery.
- Visualizador de datos de BigQuery (
roles/bigquery.dataViewer) o cualquier rol personalizado con los permisosbigquery.tables.getybigquery.tables.getData. Cuando se otorga en una tabla o vista, este rol proporciona permisos para leer datos y metadatos de la tabla o vista. - Usuario de sesión de lectura de BigQuery
(
roles/bigquery.readSessionUser) o cualquier rol personalizado con los permisosbigquery.readsessions.createybigquery.readsessions.getData. Proporciona la capacidad de crear y usar sesiones de lectura. - Usuario de trabajo de BigQuery (
roles/bigquery.jobUser) o cualquier rol personalizado con permisosbigquery.jobs.createProporciona permisos para ejecutar trabajos, incluidas las consultas, dentro del proyecto con la API de BigQuery. Este rol solo se puede otorgar en los recursos de Resource Manager (proyectos, carpetas y organizaciones). - Visualizador de objetos de almacenamiento (
roles/storage.objectViewer) o cualquier rol personalizado con permisosstorage.objects.getProporciona permisos para acceder a tablas externas de BigQuery. Se debe otorgar a nivel de proyecto o de bucket.
Otorga acceso de AlloyDB al conjunto de datos de BigQuery
Después de habilitar la función de federación de Lakehouse en tu clúster de AlloyDB, debes otorgar acceso a la cuenta de servicio del clúster de AlloyDB al conjunto de datos de BigQuery.
La consola de Google Cloud otorga automáticamente los permisos necesarios a la cuenta de servicio del clúster cuando conectas una tabla de BigQuery con AlloyDB Studio.
Para otorgar acceso con gcloud CLI, sigue estos pasos:
gcloud
Para usar gcloud CLI, puedes instalar y, luego, inicializar Google Cloud CLI, o bien usar Cloud Shell.
Abre gcloud CLI. Si no tienes instalada gcloud CLI, instálala y, luego, inicialízala, o bien usa Cloud Shell.
Ejecuta el comando
gcloud beta alloydb clusters describe:gcloud beta alloydb clusters describe CLUSTER --region=REGIONReemplaza lo siguiente:
CLUSTER: Es el ID del clúster de AlloyDB.REGION: Es la ubicación del clúster de AlloyDB, por ejemplo,asia-east1,us-east1. Consulta la lista completa de regiones en Administra las ubicaciones de instancias.
El resultado contiene un campo
serviceAccountEmail, que es la cuenta de servicio de este clúster. También puedes encontrar la cuenta de servicio en la página Resumen del clúster.Otorga los permisos necesarios. Para obtener más información, consulta Controla el acceso a los recursos con IAM.
Si la cuenta de servicio del clúster no tiene los permisos necesarios, aparecerán los siguientes errores cuando se ejecute una consulta en la tabla de BigQuery:
The user does not have bigquery.readsessions.create permissionsPermission bigquery.tables.get denied on tablePermission bigquery.tables.getData denied on table
Configura la extensión
Para configurar la extensión, sigue estos pasos:
Console
Ve a la página Clústeres.
Haz clic en el ID del clúster que deseas usar.
En el menú de navegación, haz clic en AlloyDB Studio.
Accede a tu base de datos.
En el panel Explorador, expande el esquema pertinente.
Haz clic en el menú Acciones junto a Tablas de BigQuery y, luego, en Conectar tabla de BigQuery.
En el panel Conectar tabla de BigQuery, elige un proyecto de origen, un conjunto de datos de origen y una tabla.
En la tabla Revisa y selecciona las columnas, se muestran las columnas de la tabla seleccionada. Selecciona las columnas que deseas asignar.
En el campo Nombre de la tabla, ingresa un nombre para la tabla externa.
Opcional: Haz clic en Ver comando SQL para ver el comando generado.
Haz clic en Conectar tabla. Aparecerá un diálogo que muestra el progreso. Una vez que se complete el proceso, podrás consultar la tabla como cualquier otra tabla en AlloyDB.
psql
Crea la extensión.
- Conéctate a la instancia de AlloyDB con el cliente psql siguiendo las instrucciones que se indican en Conecta un cliente psql a una instancia. También puedes usar AlloyDB Studio. Para obtener más información, consulta Administra tus datos con la consola de Google Cloud .
Ejecuta el comando siguiente:
CREATE EXTENSION bigquery_fdw;
Crea un servidor externo para definir los parámetros de conexión del conjunto de datos remoto de BigQuery.
CREATE SERVER BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw;Reemplaza lo siguiente:
BIGQUERY_SERVER_NAME: Es el identificador único del servidor externo. Defínelo una vez en una base de datos determinada. Puedes reemplazarBIGQUERY_SERVER_NAMEpor el nombre de tu servidor.
Para crear la asignación de usuario, ejecuta el comando
CREATE USER MAPPING, que asigna un usuario local de PostgreSQL al que deseas conectarte al servidor externo.CREATE USER MAPPING FOR USERNAME SERVER BIGQUERY_SERVER_NAME ;Reemplaza lo siguiente:
USERNAME: Es un nombre de usuario de la base de datos o un usuario de IAM que accede a la tabla externa.BIGQUERY_SERVER_NAME: Es el identificador único del servidor externo que creaste.
Define tablas externas que correspondan a las tablas a las que deseas acceder en BigQuery con el comando
CREATE FOREIGN TABLE. Este comando te permite definir la estructura de una tabla remota. La tabla externa puede tener todas las columnas de la tabla de origen en BigQuery o un subconjunto de ellas.CREATE FOREIGN TABLE TABLENAME ( COLUMN1_NAME DATA_TYPE, COLUMN2_NAME DATA_TYPE, ... ) SERVER BIGQUERY_SERVER_NAME OPTIONS (project BIGQUERY_PROJECT_ID, dataset BIGQUERY_DATASET_NAME, table BIGQUERY_TABLE_NAME [, mode EXECUTION_MODE]);Reemplaza lo siguiente:
TABLENAME: Es el nombre de la tabla externa en la base de datos local de AlloyDB.COLUMNX_NAME: Es el nombre de la columna de AlloyDB. El nombre de la columna debe coincidir exactamente con el nombre de la columna correspondiente en la tabla de origen de BigQuery.Xindica que la tabla se puede crear con varias columnas. El nombre también debe coincidir con el uso exacto de mayúsculas y minúsculas de la columna de BigQuery. Si el nombre de la columna de BigQuery contiene letras mayúsculas (por ejemplo,employeeID), el identificador de AlloyDB debe estar entre comillas dobles (por ejemplo,"employeeID") para conservar las letras mixtas o mayúsculas.DATA_TYPE: Es el tipo de datos de la columna.BIGQUERY_SERVER_NAME: Es el identificador único del servidor externo que creaste.BIGQUERY_PROJECT_ID: Es el ID del proyecto en el que reside el conjunto de datos de BigQuery.BIGQUERY_DATASET_NAME: Es el nombre del conjunto de datos de BigQuery para la tabla.BIGQUERY_TABLE_NAME: Es el nombre de la tabla de BigQuery.EXECUTION_MODE: Opcional La opciónmodepuede serquerypara usar la API de BigQuery en consultas complejas,storagepara usar la API de BigQuery Storage en lecturas masivas más rápidas oautopara elegir automáticamente entre los modos.autoes el valor predeterminado. Para obtener más información, consulta Modos de ejecución del wrapper de datos externos de BigQuery.
Después de crear la tabla externa, puedes consultarla de la misma manera que consultas cualquier tabla en AlloyDB.
Modos de ejecución del wrapper de datos externos de BigQuery
El modo de ejecución determina cómo AlloyDB para PostgreSQL interactúa con BigQuery para recuperar datos. El wrapper de datos externos de BigQuery admite dos modos de ejecución: query y storage. Elegir el modo correcto es fundamental, ya que cada modo tiene características de rendimiento y precios independientes. Consulta los precios de BigQuery para obtener más información.
Modo Consulta
En este modo, se usa la API de BigQuery para recuperar datos de BigQuery. Utiliza el motor de procesamiento de BigQuery para ejecutar consultas complejas con la transferencia de filtros y agregaciones. Es decir, las cláusulas WHERE, las cláusulas GROUP BY y las agregaciones se ejecutan en BigQuery antes de enviar los datos de vuelta a PostgreSQL. Este modo también admite la consulta de vistas y tablas externas de BigQuery.
Debido a que esta API proporciona respuestas de filas estructuradas y paginadas adecuadas para conjuntos de resultados pequeños, la lectura de conjuntos de datos grandes tiene limitaciones de capacidad de procesamiento y latencias más altas en comparación con la alternativa de transmisión de la API de BigQuery Storage.
Modo Almacenamiento
En este modo, se usa la API de BigQuery Storage para recuperar datos de BigQuery. Permite lecturas con alta capacidad de procesamiento, ya que envía datos estructurados por cable en un formato de serialización binaria. Este es el modo preferido para analizar tablas grandes en BigQuery.
Sin embargo, este modo tiene algunas limitaciones. No todas las operaciones complejas de SQL se pueden enviar a la API de BigQuery Storage. Por ejemplo, las agregaciones no se pueden enviar a BigQuery y deben ejecutarse en AlloyDB. Este modo tampoco admite consultas de vistas de BigQuery ni tablas externas.
Modo Auto
El modo predeterminado se establece en auto si no lo configuras en el comando CREATE FOREIGN TABLE.
Cuando usas el modo auto, AlloyDB selecciona la API subyacente para equilibrar el rendimiento y maximizar las operaciones de SQL enviadas a BigQuery.
¿Qué sigue?
- Sincroniza datos de BigQuery y de Iceberg con AlloyDB.
- Obtén más información sobre los tipos de datos y las asignaciones de columnas de BigQuery compatibles.