Descripción general
Consultas federadas de BigQuery En este lab, explorarás el poder de las consultas federadas para obtener estadísticas en tiempo real consultando directamente una base de datos operativa desde BigQuery. Aprenderás a conectar BigQuery a una base de datos de AlloyDB para PostgreSQL, lo que te permitirá unir datos históricos de analítica con datos transaccionales en tiempo real sin necesidad de canalizaciones de ETL complejas y que consumen mucho tiempo. Esta experiencia práctica demuestra una capacidad clave de los data lakehouses modernos: unificar datos en sistemas dispares para realizar análisis integrales.
Comenzarás por configurar una conexión externa en BigQuery que se vincule de forma segura a una instancia de AlloyDB de muestra que contiene datos de registro web. Luego, le otorgarás a la conexión que acabas de crear permiso para consultar AlloyDB. Por último, construirás una consulta en SQL con la función EXTERNAL_QUERY. Esta potente función te permite ejecutar consultas en la base de datos de AlloyDB y tratar sus resultados como una tabla temporal en tu entorno de BigQuery.
La tarea principal consiste en escribir una sola consulta federada que un conjunto de datos de clientes almacenado de forma nativa en BigQuery con datos de registro web en tiempo real en AlloyDB. Si dominas esta técnica, puedes aplicarla a casos de uso sofisticados en tiempo real que combinan un contexto histórico profundo con un reconocimiento operativo inmediato. Por ejemplo, Cymbal E-commerce podría usar este enfoque para responder la pregunta empresarial "¿Qué han estado viendo en nuestro sitio web los clientes que históricamente más gastan?"
Actividades
- Crear una conexión a AlloyDB en BigQuery
- Otorgar permiso a la cuenta de servicio de conexión para AlloyDB a través de un rol de IAM
- Escribir una consulta con la función
SQL EXTERNAL_QUERY
- Ejecutar la siguiente consulta y examinar los resultados
Configuración y requisitos
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que usarás para acceder a Google Cloud durante todo el lab.
Requisitos
Para completar este lab, necesitarás lo siguiente:
- Acceso a un navegador de Internet estándar (se recomienda el navegador Chrome)
- Tiempo para completar el lab
Nota: Si tienes un proyecto o una Cuenta de Google Cloud personal, no los uses en este lab.
Nota: Si utilizas una Pixelbook, abre una ventana de incógnito para ejecutar este lab.
Accede a la consola de Google Cloud
- En la pestaña o ventana del navegador que estás usando para esta sesión del lab, copia el Nombre de usuario del panel Detalles de la conexión y haz clic en el botón Abrir la consola de Google.
Nota: Si se te solicita que elijas una cuenta, haz clic en Usar otra cuenta.
- Cuando se te solicite, pega el nombre de usuario y, luego, la contraseña.
- Haz clic en Siguiente.
- Acepta los Términos y Condiciones.
Dado que esta es una cuenta temporal que tendrá la misma duración del lab, sigue estas recomendaciones:
- No agregues opciones de recuperación.
- No te registres para las pruebas gratuitas.
- Cuando se abra la consola, podrás ver la lista de servicios haciendo clic en el Menú de navegación (
) en la esquina superior izquierda.

Verifica o habilita las APIs necesarias
-
En la consola de Google Cloud, ingresa API de BigQuery Connection en la barra de búsqueda superior.
-
Haz clic en el resultado API de BigQuery Connection.
-
Si la API todavía no está habilitada, haz clic en Habilitar.
Tarea 1: Crea una conexión a AlloyDB
En esta tarea, crearás una nueva conexión a AlloyDB para usarla en BigQuery.
Crea la conexión
-
En el menú de navegación (
) de la consola de Google Cloud, busca BigQuery > Studio.
-
En Explorador, haz clic en + Agregar datos.
-
En el menú desplegable de la izquierda, en Tipo de fuente de datos, selecciona Bases de datos.
-
A la derecha del menú desplegable en Fuentes de datos destacadas, haz clic en la tarjeta de Google Cloud AlloyDB.
-
En la selección de tarjetas resultante, haz clic en Federación de BigQuery.
-
En la pantalla de entrada Fuente de datos externa, usa los siguientes valores:
| Propiedad |
Valor |
| Tipo de conexión |
AlloyDB |
| ID de conexión |
AlloyDB-weblog |
| Tipo de ubicación |
Región |
| Región |
{{{project_0.default_region | Region}}} |
| Nombre descriptivo |
dejar vacío |
| Descripción |
dejar vacío |
| Encriptación |
Predeterminado |
| Nombre de usuario |
postgres |
| Contraseña |
{{{user_0.password | Password}}} |
| Base de datos |
postgres |
| Instancia de AlloyDB |
//alloydb.googleapis.com/projects/{{{project_0.project_id | Project ID}}}/locations/{{{project_0.default_region | Region}}}/clusters/cymbal-cluster/instances/cymbal-instance
|
- Haz clic en Crear conexión.
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear una conexión a AlloyDB
Tarea 2: Configura los permisos de IAM para la cuenta de servicio de conexión
Para acceder a los datos en AlloyDB, la cuenta de servicio que se creó automáticamente cuando realizaste la conexión debe tener permiso para AlloyDB.
Configura los permisos de IAM
-
En el panel clásico de Explorador de BigQuery, expande la entrada que contiene el ID de proyecto del lab.
-
Ahora, expande la entrada Conexiones.
-
Haz clic en la entrada que acabas de crear. Los detalles de la conexión aparecerán en el panel principal de la derecha. Copia la entrada que aparece en ID de cuenta de servicio. Este es un ejemplo de cómo se ve: service-164632061610@gcp-sa-bigqueryconnection.iam.gserviceaccount.com
-
En el menú de navegación, selecciona IAM y administración y, en el submenú desplegable, selecciona IAM.
-
Haz clic en + Otorgar acceso.
-
En Entidades nuevas, pega el ID de la cuenta de servicio de conexión que copiaste en el paso 3.
-
Haz clic en el menú desplegable Seleccionar un rol. En el área Filtro que aparece, ingresa AlloyDB. Desplázate hasta encontrar Cliente de AlloyDB y selecciónalo.
-
Haz clic en Agregar otro rol.
-
Haz clic en el nuevo menú desplegable Seleccionar un rol. En el área Filtro que aparece, ingresa BigQuery. Desplázate hasta encontrar Usuario de conexión de BigQuery y selecciónalo.
-
Haz clic en el botón Guardar en la parte inferior de la pantalla.
Haz clic en Revisar mi progreso para verificar el objetivo.
Configurar los permisos de IAM para la cuenta de servicio de conexión
Tarea 3: Ejecuta una consulta federada desde BigQuery
En esta tarea, ejecutarás una consulta que combina la información de los clientes de Cymbal en BigQuery con la información de sus registros web en AlloyDB.
-
En el menú de navegación (
) de la consola de Google Cloud, busca BigQuery > Studio.
-
En el panel clásico de Explorador de BigQuery, expande la entrada que contiene el ID de proyecto del lab.
-
Ahora, expande la entrada Conexiones.
-
Haz clic en los 3 puntos verticales a la derecha de la conexión que creaste. Selecciona Consulta.
-
Actualiza la consulta reemplazando la sentencia SELECT en la parte EXTERNAL_QUERY de la consulta con el siguiente código. No reemplaces toda la consulta, solo la parte que está dentro del bloque EXTERNAL_QUERY entre las comillas " ":
SELECT customer_id, CAST(log_id AS VARCHAR(200)) AS log_id, timestamp, url FROM web_log LIMIT 100
-
Haz clic en Ejecutar. Los datos devueltos son de AlloyDB, aunque estés en BigQuery.
-
Ahora, extenderemos la consulta para combinar datos en tablas nativas de BigQuery con los datos en AlloyDB.
-
Reemplaza la consulta actual por el siguiente código:
WITH log AS (
SELECT customer_id, log_id, timestamp, url FROM EXTERNAL_QUERY("{{{project_0.project_id | Project ID}}}.{{{project_0.default_region | Region}}}.AlloyDB-weblog", "SELECT customer_id, CAST(log_id AS VARCHAR(200)) AS log_id, timestamp, url FROM web_log LIMIT 100"))
SELECT log.customer_id
, log.timestamp
, log.url
, C.*
FROM customers.customer_details AS C
INNER JOIN log
ON C.id = log.customer_id
ORDER BY C.id
LIMIT 100;
-
Haz clic en Ejecutar. Los datos devueltos combinan datos en AlloyDB y datos en BigQuery.
Haz clic en Revisar mi progreso para verificar el objetivo.
Ejecutar una consulta federada desde BigQuery
¡Felicitaciones!
Configuraste y usaste una conexión externa de BigQuery para permitir que BigQuery acceda a los datos almacenados en AlloyDB y los procese.