Ejecuta consultas federadas con Data Boost

En esta página, se explica cómo usar Data Boost de Spanner cuando ejecutas 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 existentes de la instancia de Spanner aprovisionada. Las consultas de Data Boost de BigQuery a una base de datos de Spanner pueden unir datos de BigQuery con datos de Spanner.

Puedes ejecutar consultas federadas desde BigQuery a Spanner con Data Boost a través de uno de los siguientes métodos:

La federación de Spanner permite que BigQuery consulte datos que se encuentran en Spanner en tiempo real, sin copiarlos ni moverlos. 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 la descripción general de Data Boost.

Antes de comenzar

Antes de ejecutar consultas federadas con Data Boost, debes completar las siguientes tareas:

Crea 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 Crea y consulta una base de datos con la consola de Google Cloud para crearlas.

Habilita la API de BigQuery Connection

La API de conexión de BigQuery te permite administrar 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.

Otorga permisos de IAM para Data Boost a los principales

Se deben otorgar los siguientes permisos a una principal 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 procesamiento de Spanner Data Boost para procesar consultas particionadas.

Para obtener más información sobre los permisos de Spanner, consulta Permisos de Identity and Access Management (IAM).

Para otorgar estos permisos obligatorios, te recomendamos que uses el rol de IAM de Cloud Spanner Database Reader With DataBoost (roles/spanner.databaseReaderWithDataBoost). Puedes agregar 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 Roles predefinidos. Para aprender a crear un rol de IAM personalizado, consulta Crea un rol personalizado.

Ejecuta una consulta federada de Data Boost

Para ejecutar una consulta de Data Boost desde BigQuery a una fuente externa, necesitas 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. Después de crear tu ID de conexión, BigQuery lo usa para ejecutar una consulta de Data Boost de una base de datos de Spanner.

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

  1. Comienza en Spanner: Crea el ID de conexión externa de BigQuery en la consola de Spanner. Después de que se cree tu ID de conexión en la consola de Spanner, se te redireccionará a la consola de BigQuery para ejecutar una consulta federada de Data Boost en una base de datos de Spanner.

  2. Comienza 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.

Comienza 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 laGoogle Cloud consola.

    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, luego, una base de datos.

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

  4. Haz clic en Ver en BigQuery.

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

    El ID de conexión se usa para crear una nueva 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. Completa el resto del cuadro de diálogo y haz lo siguiente:

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

    BigQuery Studio se abrirá con la siguiente consulta:

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

    Puedes reemplazarla por tu consulta federada. Por ejemplo, puedes hacer una consulta similar a la del siguiente ejemplo. En este ejemplo, se realiza 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;

Comienza en BigQuery para ejecutar una consulta de Data Boost

Para crear una conexión de datos externa desde 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:

Console

  1. Ve a Crea 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, haz lo siguiente:

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

bq

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

  2. Establece las siguientes propiedades de conexión en true:

    • useParallelism
    • useDataBoost

En el siguiente ejemplo, se usa el comando bq mk para crear una conexión nueva llamada my_connection con las dos propiedades requeridas 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

Usa Data Boost con conjuntos de datos externos

Para ejecutar una consulta de Data Boost desde BigQuery a Spanner como una fuente externa, puedes crear un conjunto de datos externo (también conocido como conjunto de datos federado) en BigQuery que esté vinculado a una base de datos existente de GoogleSQL o PostgreSQL en Spanner.

Usa una conexión CLOUD_RESOURCE

De forma predeterminada, los conjuntos de datos externos de Spanner usan credenciales de usuario final (EUC), lo que requiere que los usuarios tengan acceso directo a sus bases de datos de Spanner. Los usuarios pueden consultar estos conjuntos de datos si tienen acceso otorgado en Spanner.

De manera opcional, los conjuntos de datos externos de Spanner pueden usar una conexión CLOUD_RESOURCE para interactuar con tu base de datos de Spanner, de modo que puedas proporcionar a un usuario acceso a los datos de Spanner a través de BigQuery, sin darle acceso directo a la base de datos de Spanner. Debido a que la cuenta de servicio de la conexión CLOUD_RESOURCE controla la recuperación de datos de Spanner, solo tienes que otorgar a los usuarios acceso al conjunto de datos externo de Spanner. Esta delegación de acceso separa el acceso a las tablas de Spanner de los conjuntos de datos externos y el acceso directo a las tablas subyacentes de Spanner. Se usa una conexión de recurso de Cloud asociada con una cuenta de servicio para conectarse a Spanner. Los usuarios pueden consultar estas tablas de Spanner desde conjuntos de datos externos, incluso si no tienen acceso otorgado en Spanner.

Antes de crear conjuntos de datos externos de Spanner con una conexión de CLOUD_RESOURCE, haz lo siguiente:

Crear una conexión

Puedes crear o usar una conexión CLOUD_RESOURCE existente para conectarte a Spanner. Asegúrate de crear la conexión en la misma ubicación en la que planeas crear tu conjunto de datos externo de Spanner.

Selecciona una de las siguientes opciones:

Console

  1. Ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel de la izquierda, haz clic en Explorar:

    Botón destacado del panel Explorador.

    Si no ves el panel izquierdo, haz clic en Expand left pane para abrirlo.

  3. En el panel Explorador, expande el nombre de tu proyecto y, luego, haz clic en Conexiones.

  4. En la página Connections, haz clic en Create connection.

  5. En Tipo de conexión, elige Modelos remotos de Vertex AI, funciones remotas, BigLake y Spanner (Cloud Resource).

  6. En el campo ID de conexión, ingresa un nombre para tu conexión.

  7. En Tipo de ubicación, selecciona una ubicación para tu conexión. La conexión debe estar ubicada junto con tus otros recursos, como los conjuntos de datos.

  8. Haz clic en Crear conexión.

  9. Haz clic en Ir a la conexión.

  10. En el panel Información de conexión, copia el ID de la cuenta de servicio para usarlo en un paso posterior.

bq

  1. 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_id anula el proyecto predeterminado.

    Reemplaza lo siguiente:

    • REGION: tu región de conexión
    • PROJECT_ID: El ID de tu proyecto de Google Cloud
    • CONNECTION_ID: Es 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 con la conexión.

    Solución de problemas: Si recibes 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...
    
  2. Recupera y copia el ID de cuenta de servicio para usarlo en un paso posterior:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    El resultado es similar a lo siguiente:

    name                          properties
    1234.REGION.CONNECTION_ID     {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
    

Python

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Spanner, consulta las bibliotecas cliente de Spanner.

Para autenticarte en Spanner, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

import google.api_core.exceptions
from google.cloud import bigquery_connection_v1

client = bigquery_connection_v1.ConnectionServiceClient()


def create_connection(
    project_id: str,
    location: str,
    connection_id: str,
):
    """Creates a BigQuery connection to a Cloud Resource.

    Cloud Resource connection creates a service account which can then be
    granted access to other Google Cloud resources for federated queries.

    Args:
        project_id: The Google Cloud project ID.
        location: The location of the connection (for example, "us-central1").
        connection_id: The ID of the connection to create.
    """

    parent = client.common_location_path(project_id, location)

    connection = bigquery_connection_v1.Connection(
        friendly_name="Example Connection",
        description="A sample connection for a Cloud Resource.",
        cloud_resource=bigquery_connection_v1.CloudResourceProperties(),
    )

    try:
        created_connection = client.create_connection(
            parent=parent, connection_id=connection_id, connection=connection
        )
        print(f"Successfully created connection: {created_connection.name}")
        print(f"Friendly name: {created_connection.friendly_name}")
        print(
            f"Service Account: {created_connection.cloud_resource.service_account_id}"
        )

    except google.api_core.exceptions.AlreadyExists:
        print(f"Connection with ID '{connection_id}' already exists.")
        print("Please use a different connection ID.")
    except Exception as e:
        print(f"An unexpected error occurred while creating the connection: {e}")

Node.js

Para obtener información sobre cómo instalar y usar la biblioteca cliente de Spanner, consulta las bibliotecas cliente de Spanner.

Para autenticarte en Spanner, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.

const {ConnectionServiceClient} =
  require('@google-cloud/bigquery-connection').v1;
const {status} = require('@grpc/grpc-js');

const client = new ConnectionServiceClient();

/**
 * Creates a new BigQuery connection to a Cloud Resource.
 *
 * A Cloud Resource connection creates a service account that can be granted access
 * to other Google Cloud resources.
 *
 * @param {string} projectId The Google Cloud project ID. for example, 'example-project-id'
 * @param {string} location The location of the project to create the connection in. for example, 'us-central1'
 * @param {string} connectionId The ID of the connection to create. for example, 'example-connection-id'
 */
async function createConnection(projectId, location, connectionId) {
  const parent = client.locationPath(projectId, location);

  const connection = {
    friendlyName: 'Example Connection',
    description: 'A sample connection for a Cloud Resource',
    // The service account for this cloudResource will be created by the API.
    // Its ID will be available in the response.
    cloudResource: {},
  };

  const request = {
    parent,
    connectionId,
    connection,
  };

  try {
    const [response] = await client.createConnection(request);

    console.log(`Successfully created connection: ${response.name}`);
    console.log(`Friendly name: ${response.friendlyName}`);

    console.log(`Service Account: ${response.cloudResource.serviceAccountId}`);
  } catch (err) {
    if (err.code === status.ALREADY_EXISTS) {
      console.log(`Connection '${connectionId}' already exists.`);
    } else {
      console.error(`Error creating connection: ${err.message}`);
    }
  }
}

Terraform

Usa el recurso google_bigquery_connection.

.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

En el siguiente ejemplo, se crea una conexión de recursos de Cloud llamada my_cloud_resource_connection en la región US:


# This queries the provider for project information.
data "google_project" "default" {}

# This creates a cloud resource connection in the US region named my_cloud_resource_connection.
# Note: The cloud resource nested object has only one output field - serviceAccountId.
resource "google_bigquery_connection" "default" {
  connection_id = "my_cloud_resource_connection"
  project       = data.google_project.default.project_id
  location      = "US"
  cloud_resource {}
}

Para aplicar tu configuración de Terraform en un proyecto de Google Cloud , completa los pasos de las siguientes secciones.

Prepara Cloud Shell

  1. Inicia Cloud Shell
  2. Establece el proyecto Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.

Prepara el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

  1. En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión .tf, por ejemplo, main.tf. En este instructivo, el archivo se denomina main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.

    Copia el código de muestra en el main.tf recién creado.

    De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.

  3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo debes hacerlo una vez por directorio.
    terraform init

    De manera opcional, incluye la opción -upgrade para usar la última versión del proveedor de Google:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
    terraform plan

    Corrige la configuración según sea necesario.

  2. Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe yes cuando se te solicite:
    terraform apply

    Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.

  3. Abre tu proyecto Google Cloud para ver los resultados. En la consola de Google Cloud , navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.

Después de crear la conexión, ábrela y, en el panel Información de conexión, copia el ID de la cuenta de servicio. Necesitas este ID cuando configuras los permisos para la conexión. Cuando creas un recurso de conexión, BigQuery crea una cuenta de servicio del sistema única y la asocia con la conexión.

Configura el acceso

Debes otorgar a la cuenta de servicio asociada con la conexión nueva acceso de lectura a tu instancia o base de datos de Spanner. Se recomienda usar el rol de IAM predefinido de lector de bases de datos de Cloud Spanner con Data Boost (roles/spanner.databaseReaderWithDataBoost).

Sigue estos pasos para otorgar acceso a los roles a nivel de la base de datos para la cuenta de servicio que copiaste anteriormente de la conexión:

  1. Ve a la página Instancias de Spanner.

    Ir a la página Instancias

  2. Haz clic en el nombre de la instancia que contiene tu base de datos para ir a la página Detalles de la instancia.

  3. En la pestaña Descripción general, selecciona la casilla de verificación de tu base de datos.
    Aparecerá el panel de información.

  4. Haz clic en Agregar principal.

  5. En el panel Agregar principales, en Principales nuevas, ingresa el ID de cuenta de servicio que copiaste antes.

  6. En el campo Selecciona un rol, elige Rol de lector de bases de datos de Cloud Spanner con DataBoost.

  7. Haz clic en Guardar.

Crea un conjunto de datos externo

Para crear un conjunto de datos externo, haz lo siguiente:

Console

  1. Abre la página de BigQuery en la Google Cloud consola.

    Ir a la página de BigQuery

  2. En el panel de la izquierda, haz clic en Explorar.

    Botón destacado del panel Explorador.

    Si no ves el panel izquierdo, haz clic en Expandir panel izquierdo para abrirlo.

  3. En el panel Explorador, selecciona el proyecto en el que deseas crear el conjunto de datos.

  4. Haz clic en Ver acciones y, luego, en Crear conjunto de datos.

  5. En la página Crear conjunto de datos, haz lo siguiente:

    • En ID de conjunto de datos, ingresa un nombre único para el conjunto de datos.
    • En Tipo de ubicación, elige una ubicación para el conjunto de datos, como us-central1 o la multirregión us. Después de crear un conjunto de datos, la ubicación no se puede cambiar.
    • En External Dataset, haz lo siguiente:

      • Marca la casilla junto a Vínculo a un conjunto de datos externo.
      • En Tipo de conjunto de datos externo, selecciona Spanner.
      • En Fuente externa, ingresa el identificador completo de tu base de datos de Spanner en el siguiente formato: projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE. Por ejemplo: projects/my_project/instances/my_instance/databases/my_database.
      • De manera opcional, en Rol de la base de datos, ingresa el nombre de un rol de base de datos de Spanner. Para obtener más información, consulta los roles de la base de datos que se usan para crear conexiones de Spanner.
      • De manera opcional, marca la casilla junto a Usar una conexión de Cloud Resource para crear el conjunto de datos externo con una conexión.
    • Deja el resto de la configuración predeterminada como está.

  6. Haz clic en Crear conjunto de datos.

SQL

Usa la declaración del lenguaje de definición de datos CREATE EXTERNAL SCHEMA (DDL).

  1. En la consola de Google Cloud , ve a la página BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, escribe la siguiente oración:

    CREATE EXTERNAL SCHEMA DATASET_NAME
      OPTIONS (
        external_source = 'SPANNER_EXTERNAL_SOURCE',
        location = 'LOCATION');
    /*
      Alternatively, create with a connection:
    */
    CREATE EXTERNAL SCHEMA DATASET_NAME
      WITH CONNECTION PROJECT_ID.LOCATION.CONNECTION_NAME
      OPTIONS (
        external_source = 'SPANNER_EXTERNAL_SOURCE',
        location = 'LOCATION');

    Reemplaza lo siguiente:

    • DATASET_NAME: el nombre de tu conjunto de datos nuevo en BigQuery.
    • SPANNER_EXTERNAL_SOURCE: Es el nombre completo y calificado de la base de datos de Spanner, con un prefijo que identifica la fuente, en el siguiente formato: google-cloudspanner://[DATABASE_ROLE@]/projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE. Por ejemplo, google-cloudspanner://admin@/projects/my_project/instances/my_instance/databases/my_database o google-cloudspanner:/projects/my_project/instances/my_instance/databases/my_database.
    • LOCATION: la ubicación del conjunto de datos nuevo en BigQuery, por ejemplo, us-central1. Después de crear un conjunto de datos, no puedes cambiar su ubicación.
    • CONNECTION_NAME: Es el nombre de la conexión de tu recurso de Cloud (opcional).

  3. Haz clic en Ejecutar.

Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.

bq

En un entorno de línea de comandos, crea un conjunto de datos externo con el comando bq mk:

bq --location=LOCATION mk --dataset \
    --external_source SPANNER_EXTERNAL_SOURCE \
    DATASET_NAME

También puedes crear una conexión de la siguiente manera:

bq --location=LOCATION mk --dataset \
    --external_source SPANNER_EXTERNAL_SOURCE \
    --connection_id PROJECT_ID.LOCATION.CONNECTION_NAME \
    DATASET_NAME

Reemplaza lo siguiente:

  • LOCATION: la ubicación del conjunto de datos nuevo en BigQuery, por ejemplo, us-central1. Después de crear un conjunto de datos, no puedes cambiar su ubicación. Puedes configurar un valor de ubicación predeterminado con el archivo .bigqueryrc.
  • SPANNER_EXTERNAL_SOURCE: Es el nombre completo y calificado de la base de datos de Spanner, con un prefijo que identifica la fuente, en el siguiente formato: google-cloudspanner://[DATABASE_ROLE@]/projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE. Por ejemplo, google-cloudspanner://admin@/projects/my_project/instances/my_instance/databases/my_database o google-cloudspanner:/projects/my_project/instances/my_instance/databases/my_database.
  • DATASET_NAME: el nombre de tu conjunto de datos nuevo en BigQuery. Para crear un conjunto de datos en un proyecto que no sea el predeterminado, agrega el ID del proyecto al nombre del conjunto de datos en el siguiente formato: PROJECT_ID:DATASET_NAME.
  • CONNECTION_NAME: Es el nombre de la conexión de tu recurso de Cloud (opcional).

Terraform

Usa el recurso google_bigquery_dataset.

.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.

En el siguiente ejemplo, se crea un conjunto de datos externo de Spanner:

resource "google_bigquery_dataset" "default" {
  dataset_id    = "my_external_dataset"
  friendly_name = "My external dataset"
  description   = "This is a test description."
  location      = "US"
  external_dataset_reference {
    # The full identifier of your Spanner database.
    external_source = "google-cloudspanner:/projects/my_project/instances/my_instance/databases/my_database"
    # Must be empty for a Spanner external dataset.
    connection = ""
  }
}

Para aplicar tu configuración de Terraform en un proyecto de Google Cloud , completa los pasos de las siguientes secciones.

Prepara Cloud Shell

  1. Inicia Cloud Shell
  2. Establece el proyecto Google Cloud predeterminado en el que deseas aplicar tus configuraciones de Terraform.

    Solo necesitas ejecutar este comando una vez por proyecto y puedes ejecutarlo en cualquier directorio.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Las variables de entorno se anulan si configuras valores explícitos en el archivo de configuración de Terraform.

Prepara el directorio

Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).

  1. En Cloud Shell, crea un directorio y un archivo nuevo dentro de ese directorio. El nombre del archivo debe tener la extensión .tf, por ejemplo, main.tf. En este instructivo, el archivo se denomina main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si sigues un instructivo, puedes copiar el código de muestra en cada sección o paso.

    Copia el código de muestra en el main.tf recién creado.

    De manera opcional, copia el código de GitHub. Esto se recomienda cuando el fragmento de Terraform es parte de una solución de extremo a extremo.

  3. Revisa y modifica los parámetros de muestra que se aplicarán a tu entorno.
  4. Guarda los cambios.
  5. Inicializa Terraform. Solo debes hacerlo una vez por directorio.
    terraform init

    De manera opcional, incluye la opción -upgrade para usar la última versión del proveedor de Google:

    terraform init -upgrade

Aplica los cambios

  1. Revisa la configuración y verifica que los recursos que creará o actualizará Terraform coincidan con tus expectativas:
    terraform plan

    Corrige la configuración según sea necesario.

  2. Para aplicar la configuración de Terraform, ejecuta el siguiente comando y, luego, escribe yes cuando se te solicite:
    terraform apply

    Espera hasta que Terraform muestre el mensaje “¡Aplicación completa!”.

  3. Abre tu proyecto Google Cloud para ver los resultados. En la consola de Google Cloud , navega a tus recursos en la IU para asegurarte de que Terraform los haya creado o actualizado.

API

Llama al método datasets.insert con un recurso de conjunto de datos y un campo externalDatasetReference definidos para tu base de datos de Spanner.

Ten en cuenta que los nombres de las tablas en los conjuntos de datos externos no distinguen mayúsculas de minúsculas.

Cuando creas los conjuntos de datos externos con una conexión CLOUD_RESOURCE, debes tener el permiso bigquery.connections.delegate (disponible a través del rol Connection Admin de BigQuery) en la conexión que usan los conjuntos de datos externos.

Crea una vista materializada no incremental basada en tablas de un conjunto de datos externo

Antes de continuar, debes crear el conjunto de datos externo subyacente de Spanner con una conexión de CLOUD_RESOURCE.

Puedes crear vistas materializadas no incrementales que hagan referencia a tablas de conjuntos de datos externos de Spanner con la opción allow_non_incremental_definition. En el siguiente ejemplo, se usa una tabla de conjunto de datos externa de Spanner básica:

/*
  You must create the spanner_external_dataset with a CLOUD_RESOURCE connection.
*/
CREATE MATERIALIZED VIEW sample_dataset.sample_spanner_mv
  OPTIONS (
      enable_refresh = true, refresh_interval_minutes = 60,
      max_staleness = INTERVAL "24" HOUR,
        allow_non_incremental_definition = true)
AS
  SELECT COUNT(*) cnt FROM spanner_external_dataset.spanner_table;

Solo las vistas materializadas no incrementales de BigQuery pueden tener tablas de conjuntos de datos externos de Spanner como tablas base. Si la última actualización de una vista materializada no incremental se produjo fuera del intervalo max_staleness, la consulta lee las tablas del conjunto de datos externo de Spanner base. Obtén más información sobre las vistas materializadas no incrementales de BigQuery.

¿Qué sigue?