Ejecutar consultas federadas con Data Boost

En esta página se explica cómo usar Spanner Data Boost al ejecutar consultas federadas desde BigQuery a una base de datos de Spanner. Con Data Boost, las consultas federadas se ejecutan con un impacto mínimo en las cargas de trabajo de la instancia de Spanner aprovisionada. Las consultas de Data Boost de BigQuery a una base de datos de Spanner pueden combinar datos de BigQuery con datos de Spanner.

La federación de Spanner permite a BigQuery consultar datos alojados en Spanner en tiempo real, sin tener que copiarlos ni transferirlos. Para obtener más información sobre las consultas federadas de Spanner, consulta Consultas federadas de Spanner. Para obtener información sobre Data Boost, consulta el resumen de Data Boost.

Antes de empezar

Para poder ejecutar consultas federadas con Data Boost, debes completar las siguientes tareas:

Crear una instancia y una base de datos de Spanner

Si no tienes una instancia ni una base de datos de Spanner, sigue los pasos que se indican en el artículo Crear y consultar una base de datos con la consola Google Cloud para crearlas.

Habilitar la API de conexión de BigQuery

La API de conexión de BigQuery te permite gestionar conexiones de BigQuery a fuentes de datos externas, como una base de datos de Spanner.

  • Enable the BigQuery connection API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Para obtener más información, consulta la API de conexión de BigQuery en la documentación de BigQuery.

Conceder permisos de gestión de identidades y accesos para Data Boost a las entidades

Se deben conceder los siguientes permisos a una entidad para ejecutar consultas federadas con Data Boost:

  • spanner.instances.get: te permite obtener la configuración de una instancia.
  • spanner.databases.useDataBoost: te permite usar los recursos de computación de Spanner Data Boost para procesar consultas particionadas.

Para obtener más información sobre los permisos de Spanner, consulta el artículo Permisos de gestión de identidades y accesos (IAM).

Para conceder estos permisos obligatorios, te recomendamos que uses el rol de gestión de identidades y accesos Cloud Spanner Database Reader With DataBoost (roles/spanner.databaseReaderWithDataBoost). Puede añadir ese rol a cualquier principal que necesite ejecutar consultas federadas con Data Boost. Para obtener más información sobre los roles predefinidos en Spanner, consulta el artículo Roles predefinidos. Para saber cómo crear un rol de IAM personalizado, consulta el artículo Crear un rol personalizado.

Ejecutar una consulta de Data Boost federada

Para ejecutar una consulta de Data Boost desde BigQuery a una fuente externa, necesita una conexión de BigQuery a la fuente externa y el ID de la conexión. Cuando ejecutas una consulta federada de Spanner con Data Boost, la fuente externa es una base de datos de Spanner. Una vez que hayas creado el ID de conexión, BigQuery lo usará para ejecutar una consulta de Data Boost en una base de datos de Spanner.

Usa una de las siguientes opciones para crear un ID de conexión de BigQuery y, a continuación, usa el ID de conexión para ejecutar una consulta de Data Boost desde BigQuery:

  1. Empieza en Spanner: crea el ID de conexión externa de BigQuery en la consola de Spanner. Una vez que se haya creado el ID de conexión en la consola de Spanner, se le redirigirá a la consola de BigQuery para ejecutar una consulta federada de Data Boost en una base de datos de Spanner.

  2. Empieza en BigQuery: crea el ID de conexión externa de Data Boost en la consola de BigQuery o con la herramienta de línea de comandos bq. Después de crear el ID de conexión, permanecerás en la consola de BigQuery para ejecutar una consulta federada de Data Boost en una base de datos de Spanner.

Empezar en Spanner para ejecutar una consulta de Data Boost

Para ejecutar una consulta federada de Data Boost desde Spanner Studio, haz lo siguiente:

  1. Ve a la página Instancias de Spanner en la consola deGoogle Cloud .

    Ir a la página Instancias

    En la consola se muestra una lista de tus instancias de Spanner.

  2. Selecciona una instancia de Spanner y, a continuación, una base de datos.

  3. En la página Resumen de la base de datos, en el menú de navegación, haga clic en Spanner Studio.

  4. Haz clic en Ver en BigQuery.

  5. En el cuadro de diálogo Ver en BigQuery, introduzca un ID de conexión.

    El ID de conexión se usa para crear una conexión externa de BigQuery a tu base de datos de Spanner. Para hacer referencia a tu conexión externa, usa el siguiente patrón:

    PROJECT-ID.LOCATION.CONNECTION-ID
    

    Se produce un error si el ID ya existe.

  6. Rellene el resto del cuadro de diálogo y haga lo siguiente:

    • Selecciona Leer datos en paralelo.
    • Selecciona Usar Spanner Data Boost.
  7. Haz clic en Ver en BigQuery.

    BigQuery Studio se abre con la siguiente consulta:

    SELECT * FROM EXTERNAL_QUERY("PROJECT-ID.LOCATION.CONNECTION-ID", "SELECT * FROM INFORMATION_SCHEMA.TABLES;");
    

    Puedes sustituirla por tu consulta federada. Por ejemplo, puedes hacer una consulta similar a la siguiente. En este ejemplo se hace una consulta federada desde una tabla llamada orders en una base de datos de Spanner y se unen los resultados con una tabla de BigQuery llamada mydataset.customers.

    SELECT c.customer_id, c.name, rq.first_order_date
    FROM mydataset.customers AS c
    LEFT OUTER JOIN EXTERNAL_QUERY(
      'my-project.us.example-db',
      '''SELECT customer_id, MIN(order_date) AS first_order_date
      FROM orders
      GROUP BY customer_id''') AS rq
      ON rq.customer_id = c.customer_id
    GROUP BY c.customer_id, c.name, rq.first_order_date;

Empezar en BigQuery para ejecutar una consulta de Data Boost

Para crear una conexión de datos externa de BigQuery a una base de datos de Spanner y usar esa conexión para ejecutar una consulta federada de Data Boost desde BigQuery, selecciona una de las siguientes opciones:

Consola

  1. Ve a Crear conexiones de Spanner en la documentación de BigQuery y sigue las instrucciones de la pestaña Consola.

  2. En el panel Fuente de datos externa, haga lo siguiente:

    • Selecciona Leer datos en paralelo.
    • Selecciona Usar Spanner Data Boost.

bq

  1. Ve a Crear conexiones de Spanner en la documentación de BigQuery y sigue las instrucciones de la pestaña bq*.

  2. Asigna el valor true a las siguientes propiedades de conexión:

    • useParallelism
    • useDataBoost

En el siguiente ejemplo, se usa el comando bq mk para crear una conexión llamada my_connection con las dos propiedades necesarias para Data Boost:

bq mk --connection --connection_type='CLOUD_SPANNER' --location='us' \
--properties='{"database":"projects/my-project/instances/my-instance/databases/my-database", "useParallelism":true, "useDataBoost": true}' my_connection

Siguientes pasos