Execute consultas federadas com o Data Boost

Esta página explica como usar o Spanner Data Boost quando executa consultas federadas do BigQuery para uma base de dados do Spanner. Com o Data Boost, as consultas federadas são executadas com um impacto mínimo nos volumes de trabalho existentes na instância do Spanner aprovisionada. As consultas do Data Boost do BigQuery a uma base de dados do Spanner podem juntar dados do BigQuery com dados do Spanner.

Pode executar consultas federadas do BigQuery para o Spanner usando o Data Boost com um dos seguintes métodos:

A federação do Spanner permite que o BigQuery consulte dados residentes no Spanner em tempo real, sem copiar nem mover dados. Para saber mais sobre as consultas federadas do Spanner, consulte o artigo Consultas federadas do Spanner. Para saber mais sobre o Aumento de dados, consulte a vista geral do Aumento de dados.

Antes de começar

Antes de poder executar consultas federadas com o Data Boost, tem de concluir as seguintes tarefas:

Crie uma instância e uma base de dados do Spanner

Se não tiver uma instância e uma base de dados do Spanner, siga os passos em Criar e consultar uma base de dados através da Google Cloud consola para as criar.

Ative a API BigQuery Connection

A API BigQuery Connection permite-lhe gerir ligações do BigQuery a origens de dados externas, como uma base de dados do 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 mais informações, consulte a API BigQuery Connection na documentação do BigQuery.

Conceda autorizações de IAM para o aumento de dados a diretores

Um principal tem de receber as seguintes autorizações para executar consultas federadas com o Data Boost:

  • spanner.instances.get: permite obter a configuração de uma instância.
  • spanner.databases.useDataBoost – permite-lhe usar os recursos de computação do Spanner Data Boost para processar consultas particionadas.

Para mais informações sobre as autorizações do Spanner, consulte o artigo Autorizações de gestão de identidade e de acesso (IAM).

Para conceder estas autorizações necessárias, recomendamos que use a função de IAM Cloud Spanner Database Reader With DataBoost (roles/spanner.databaseReaderWithDataBoost). Pode adicionar essa função a qualquer principal que precise de executar consultas federadas com o Data Boost. Para saber mais acerca das funções predefinidas no Spanner, consulte o artigo Funções predefinidas. Para saber como criar uma função do IAM personalizada, consulte o artigo Crie uma função personalizada.

Execute uma consulta de Data Boost federada

Para executar uma consulta do Data Boost a partir do BigQuery para uma origem externa, precisa de uma ligação do BigQuery à origem externa e do ID da ligação. Quando executa uma consulta federada do Spanner com o Data Boost, a origem externa é uma base de dados do Spanner. Depois de criar o ID da associação, o BigQuery usa-o para executar uma consulta de Data Boost de uma base de dados do Spanner.

Use uma das seguintes opções para criar um ID de ligação do BigQuery e, de seguida, use o ID de ligação para executar uma consulta do Data Boost a partir do BigQuery:

  1. Comece no Spanner: crie o ID da ligação externa do BigQuery na consola do Spanner. Depois de o ID da ligação ser criado na consola do Spanner, é feito o redirecionamento para a consola do BigQuery para executar uma consulta federada do Data Boost numa base de dados do Spanner.

  2. Comece no BigQuery: crie o ID da associação externa do Data Boost na consola do BigQuery ou através da ferramenta de linha de comandos bq. Depois de criar o ID da associação, permanece na consola do BigQuery para executar uma consulta federada do Data Boost a uma base de dados do Spanner.

Comece no Spanner para executar uma consulta do Data Boost

Para executar uma consulta federada do Data Boost a partir do Spanner Studio, faça o seguinte:

  1. Aceda à página Instances do Spanner na Google Cloud consola.

    Aceda à página Instâncias

    A consola mostra uma lista das suas instâncias do Spanner.

  2. Selecione uma instância do Spanner e, de seguida, selecione uma base de dados.

  3. Na página Vista geral da base de dados, no menu de navegação, clique em Spanner Studio.

  4. Clique em Ver no BigQuery.

  5. Na caixa de diálogo Ver no BigQuery, introduza um ID da associação.

    O ID da ligação é usado para criar uma nova ligação externa do BigQuery à sua base de dados do Spanner. Faz referência à sua ligação externa através do seguinte padrão:

    PROJECT-ID.LOCATION.CONNECTION-ID
    

    Ocorre um erro se o ID já existir.

  6. Preencha o resto da caixa de diálogo e faça o seguinte:

    • Selecione Ler dados em paralelo.
    • Selecione Usar otimização de dados do Spanner.
  7. Clique em Ver no BigQuery.

    O BigQuery Studio é aberto com a seguinte consulta:

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

    Pode substituir isto pela sua consulta federada. Por exemplo, pode fazer uma consulta semelhante ao seguinte exemplo. Este exemplo faz uma consulta federada a partir de uma tabela denominada orders numa base de dados do Spanner e junta os resultados a uma tabela do BigQuery denominada 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;

Comece no BigQuery para executar uma consulta do Data Boost

Para criar uma associação de dados externa do BigQuery a uma base de dados do Spanner e usar essa associação para executar uma consulta federada do Data Boost a partir do BigQuery, selecione uma das seguintes opções:

Consola

  1. Aceda a Criar ligações do Spanner na documentação do BigQuery e siga as instruções no separador Consola.

  2. No painel Origem de dados externa, faça o seguinte:

    • Selecione Ler dados em paralelo.
    • Selecione Usar otimização de dados do Spanner.

bq

  1. Aceda a Criar ligações do Spanner na documentação do BigQuery e siga as instruções no separador bq*.

  2. Defina as seguintes propriedades da ligação como true:

    • useParallelism
    • useDataBoost

O exemplo seguinte usa o comando bq mk para criar uma nova ligação denominada my_connection com as duas propriedades necessárias para a Otimização de dados:

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

Use o aumento de dados com conjuntos de dados externos

Para executar uma consulta do Data Boost do BigQuery para o Spanner como uma origem externa, pode criar um conjunto de dados externo (também conhecido como um conjunto de dados federado) no BigQuery que esteja associado a uma base de dados GoogleSQL ou PostgreSQL existente no Spanner.

Use uma ligação CLOUD_RESOURCE

Por predefinição, os conjuntos de dados externos do Spanner usam credenciais do utilizador final (EUC), o que requer que os utilizadores tenham acesso direto às respetivas bases de dados do Spanner. Os utilizadores podem consultar estes conjuntos de dados se tiverem acesso concedido no Spanner.

Opcionalmente, os conjuntos de dados externos do Spanner podem usar uma CLOUD_RESOURCEligação para interagir com a sua base de dados do Spanner, de modo que possa conceder aos utilizadores acesso aos dados do Spanner através do BigQuery, sem lhes dar acesso direto à base de dados do Spanner. Uma vez que a conta de serviço da associação CLOUD_RESOURCE processa a obtenção de dados do Spanner, só tem de conceder aos utilizadores acesso ao conjunto de dados externo do Spanner. Esta delegação de acesso desvincula o acesso às tabelas do Spanner dos conjuntos de dados externos e do acesso direto às tabelas do Spanner subjacentes. É usada uma associação de recursos do Cloud associada a uma conta de serviço para estabelecer ligação ao Spanner. Os utilizadores podem consultar estas tabelas do Spanner a partir de conjuntos de dados externos, mesmo que não tenham acesso concedido no Spanner.

Antes de criar conjuntos de dados externos do Spanner com uma associação CLOUD_RESOURCE, faça o seguinte:

Crie uma associação

Pode criar ou usar uma CLOUD_RESOURCE associação existente para estabelecer ligação ao Spanner. Certifique-se de que cria a associação na localização onde planeia criar o conjunto de dados externo do Spanner.

Selecione uma das seguintes opções:

Consola

  1. Aceda à página do BigQuery.

    Aceda ao BigQuery

  2. No painel esquerdo, clique em Explorador:

    Botão realçado para o painel do explorador.

    Se não vir o painel esquerdo, clique em Expandir painel esquerdo para o abrir.

  3. No painel Explorador, expanda o nome do projeto e, de seguida, clique em Ligações.

  4. Na página Associações, clique em Criar associação.

  5. Em Tipo de ligação, escolha Modelos remotos do Vertex AI, funções remotas, BigLake e Spanner (recurso da nuvem).

  6. No campo ID da associação, introduza um nome para a associação.

  7. Em Tipo de localização, selecione uma localização para a sua ligação. A ligação deve estar localizada com os seus outros recursos, como conjuntos de dados.

  8. Clique em Criar associação.

  9. Clique em Aceder à associação.

  10. No painel Informações da ligação, copie o ID da conta de serviço para utilização num passo posterior.

bq

  1. Num ambiente de linha de comandos, crie uma associação:

    bq mk --connection --location=REGION --project_id=PROJECT_ID \
        --connection_type=CLOUD_RESOURCE CONNECTION_ID

    O parâmetro --project_id substitui o projeto predefinido.

    Substitua o seguinte:

    • REGION: a sua região de ligação
    • PROJECT_ID: o ID do seu Google Cloud projeto
    • CONNECTION_ID: um ID para a sua ligação

    Quando cria um recurso de ligação, o BigQuery cria uma conta de serviço do sistema única e associa-a à ligação.

    Resolução de problemas: se receber o seguinte erro de ligação, atualize o SDK do Google Cloud:

    Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
    
  2. Recupere e copie o ID da conta de serviço para utilização num passo posterior:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    O resultado é semelhante ao seguinte:

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

Python

Para saber como instalar e usar a biblioteca cliente do Spanner, consulte o artigo Bibliotecas cliente do Spanner.

Para se autenticar no Spanner, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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 saber como instalar e usar a biblioteca cliente do Spanner, consulte o artigo Bibliotecas cliente do Spanner.

Para se autenticar no Spanner, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento 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

Use o recurso google_bigquery_connection.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

O exemplo seguinte cria uma associação de recursos da nuvem com o nome my_cloud_resource_connection na região 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 a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.

Prepare o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.

    Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.

Prepare o diretório

Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).

  1. No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o ficheiro é denominado main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.

    Copie o exemplo de código para o ficheiro main.tf criado recentemente.

    Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.

  3. Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
  4. Guarde as alterações.
  5. Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
    terraform init

    Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção -upgrade:

    terraform init -upgrade

Aplique as alterações

  1. Reveja a configuração e verifique se os recursos que o Terraform vai criar ou atualizar correspondem às suas expetativas:
    terraform plan

    Faça correções à configuração conforme necessário.

  2. Aplique a configuração do Terraform executando o seguinte comando e introduzindo yes no comando:
    terraform apply

    Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).

  3. Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.

Depois de criar a associação, abra-a e, no painel Informações de associação, copie o ID da conta de serviço. Precisa deste ID quando configura as autorizações para a ligação. Quando cria um recurso de ligação, o BigQuery cria uma conta de serviço do sistema exclusiva e associa-a à ligação.

Configure o acesso

Tem de conceder à conta de serviço associada à nova ligação acesso de leitura à sua instância ou base de dados do Spanner. Recomendamos que use a função predefinida do IAM Leitor de base de dados do Cloud Spanner com o serviço de otimização de dados (roles/spanner.databaseReaderWithDataBoost).

Siga estes passos para conceder acesso a funções ao nível da base de dados para a conta de serviço que copiou anteriormente da associação:

  1. Aceda à página Instâncias do Spanner.

    Aceda à página de instâncias

  2. Clique no nome da instância que contém a sua base de dados para aceder à página Detalhes da instância.

  3. No separador Vista geral, selecione a caixa de verificação da sua base de dados.
    O painel Informações é apresentado.

  4. Clique em Adicionar principal.

  5. No painel Adicionar membros, em Novos membros, introduza o ID da conta de serviço que copiou anteriormente.

  6. No campo Selecionar uma função, selecione Leitor de base de dados do Cloud Spanner com função DataBoost.

  7. Clique em Guardar.

Crie um conjunto de dados externo

Para criar um conjunto de dados externo, faça o seguinte:

Consola

  1. Abra a página do BigQuery na Google Cloud consola.

    Aceda à página do BigQuery

  2. No painel esquerdo, clique em Explorador:

    Botão realçado para o painel do explorador.

    Se não vir o painel do lado esquerdo, clique em Expandir painel do lado esquerdo para o abrir.

  3. No painel Explorador, selecione o projeto onde quer criar o conjunto de dados.

  4. Clique em Ver ações e, de seguida, em Criar conjunto de dados.

  5. Na página Criar conjunto de dados, faça o seguinte:

    • Para ID do conjunto de dados, introduza um nome exclusivo para o conjunto de dados.
    • Para Tipo de localização, escolha uma localização para o conjunto de dados, como us-central1 ou multirregião us. Depois de criar um conjunto de dados, não é possível alterar a localização.
    • Para o conjunto de dados externo, faça o seguinte:

      • Selecione a caixa junto a Associar a um conjunto de dados externo.
      • Para Tipo de conjunto de dados externo, selecione Spanner.
      • Para Origem externa, introduza o identificador completo da sua base de dados do Spanner no seguinte formato: projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE. Por exemplo: projects/my_project/instances/my_instance/databases/my_database.
      • Opcionalmente, para Função da base de dados, introduza o nome de uma função da base de dados do Spanner. Para mais informações, leia acerca das funções da base de dados usadas para criar associações do Spanner
      • Opcionalmente, selecione a caixa junto a Usar uma associação de recursos na nuvem para criar o conjunto de dados externo com uma associação.
    • Deixe as outras predefinições como estão.

  6. Clique em Criar conjunto de dados.

SQL

Use a CREATE EXTERNAL SCHEMAdeclaração de linguagem de definição de dados (LDD).

  1. Na Google Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. No editor de consultas, introduza a seguinte declaração:

    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');

    Substitua o seguinte:

    • DATASET_NAME: o nome do novo conjunto de dados no BigQuery.
    • SPANNER_EXTERNAL_SOURCE: o nome completo e qualificado da base de dados do Spanner, com um prefixo que identifica a origem, no seguinte formato: google-cloudspanner://[DATABASE_ROLE@]/projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE. Por exemplo: google-cloudspanner://admin@/projects/my_project/instances/my_instance/databases/my_database ou google-cloudspanner:/projects/my_project/instances/my_instance/databases/my_database.
    • LOCATION: a localização do seu novo conjunto de dados no BigQuery, por exemplo, us-central1. Depois de criar um conjunto de dados, não pode alterar a respetiva localização.
    • (Opcional)CONNECTION_NAME: o nome da associação de recursos da nuvem.

  3. Clique em Executar.

Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.

bq

Num ambiente de linha de comandos, crie um conjunto de dados externo através do comando bq mk:

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

Em alternativa, crie com uma associação:

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

Substitua o seguinte:

  • LOCATION: a localização do seu novo conjunto de dados no BigQuery, por exemplo, us-central1. Depois de criar um conjunto de dados, não pode alterar a respetiva localização. Pode definir um valor de localização predefinido através do ficheiro .bigqueryrc.
  • SPANNER_EXTERNAL_SOURCE: o nome completo e qualificado da base de dados do Spanner, com um prefixo que identifica a origem, no seguinte formato: google-cloudspanner://[DATABASE_ROLE@]/projects/PROJECT_ID/instances/INSTANCE/databases/DATABASE. Por exemplo: google-cloudspanner://admin@/projects/my_project/instances/my_instance/databases/my_database ou google-cloudspanner:/projects/my_project/instances/my_instance/databases/my_database.
  • DATASET_NAME: o nome do novo conjunto de dados no BigQuery. Para criar um conjunto de dados num projeto que não seja o seu projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato: PROJECT_ID:DATASET_NAME.
  • (Opcional)CONNECTION_NAME: o nome da associação de recursos da nuvem.

Terraform

Use o google_bigquery_dataset recurso.

Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.

O exemplo seguinte cria um conjunto de dados externo do 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 a configuração do Terraform num Google Cloud projeto, conclua os passos nas secções seguintes.

Prepare o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o Google Cloud projeto predefinido onde quer aplicar as suas configurações do Terraform.

    Só tem de executar este comando uma vez por projeto e pode executá-lo em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente são substituídas se definir valores explícitos no ficheiro de configuração do Terraform.

Prepare o diretório

Cada ficheiro de configuração do Terraform tem de ter o seu próprio diretório (também denominado módulo raiz).

  1. No Cloud Shell, crie um diretório e um novo ficheiro nesse diretório. O nome do ficheiro tem de ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o ficheiro é denominado main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se estiver a seguir um tutorial, pode copiar o código de exemplo em cada secção ou passo.

    Copie o exemplo de código para o ficheiro main.tf criado recentemente.

    Opcionalmente, copie o código do GitHub. Isto é recomendado quando o fragmento do Terraform faz parte de uma solução completa.

  3. Reveja e modifique os parâmetros de exemplo para aplicar ao seu ambiente.
  4. Guarde as alterações.
  5. Inicialize o Terraform. Só tem de fazer isto uma vez por diretório.
    terraform init

    Opcionalmente, para usar a versão mais recente do fornecedor Google, inclua a opção -upgrade:

    terraform init -upgrade

Aplique as alterações

  1. Reveja a configuração e verifique se os recursos que o Terraform vai criar ou atualizar correspondem às suas expetativas:
    terraform plan

    Faça correções à configuração conforme necessário.

  2. Aplique a configuração do Terraform executando o seguinte comando e introduzindo yes no comando:
    terraform apply

    Aguarde até que o Terraform apresente a mensagem "Apply complete!" (Aplicação concluída!).

  3. Abra o seu Google Cloud projeto para ver os resultados. Na Google Cloud consola, navegue para os seus recursos na IU para se certificar de que o Terraform os criou ou atualizou.

API

Chame o método datasets.insert com um recurso de conjunto de dados definido e um campo externalDatasetReference para a sua base de dados do Spanner.

Tenha em atenção que os nomes das tabelas nos conjuntos de dados externos não são sensíveis a maiúsculas e minúsculas.

Quando cria os conjuntos de dados externos com uma ligação CLOUD_RESOURCE, tem de ter a autorização bigquery.connections.delegate (disponível na função de administrador da ligação do BigQuery) na ligação usada pelos conjuntos de dados externos.

Crie uma vista materializada não incremental com base em tabelas de um conjunto de dados externo

Antes de continuar, tem de criar o conjunto de dados externo do Spanner subjacente através de uma CLOUD_RESOURCE associação.

Pode criar vistas materializadas não incrementais que referenciam tabelas de conjuntos de dados externos do Spanner usando a opção allow_non_incremental_definition. O exemplo seguinte usa uma tabela de conjunto de dados externa do Spanner:

/*
  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;

Apenas as vistas materializadas não incrementais do BigQuery podem ter tabelas de conjuntos de dados externos do Spanner como tabelas base. Se a última atualização de uma vista materializada não incremental ocorreu fora do intervalo max_staleness, a consulta lê as tabelas do conjunto de dados externo do Spanner base. Saiba mais acerca das vistas materializadas não incrementais do BigQuery.

O que se segue?