Executar consultas federadas com o Data Boost

Nesta página, explicamos como usar o Data Boost do Spanner ao executar consultas federadas do BigQuery em um banco de dados do Spanner. Com o Data Boost, as consultas federadas são executadas com impacto mínimo nas cargas de trabalho atuais na instância provisionada do Spanner. As consultas do Data Boost do BigQuery para um banco de dados do Spanner podem unir dados do BigQuery com dados do Spanner.

É possível 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 que residem no Spanner em tempo real, sem copiar ou mover dados. Para saber mais sobre consultas federadas do Spanner, consulte Consultas federadas do Spanner. Para saber mais sobre o Data Boost, consulte a visão geral do Data Boost.

Antes de começar

Antes de executar consultas federadas com o Data Boost, conclua as seguintes tarefas:

Criar uma instância e um banco de dados do Spanner

Se você não tiver uma instância e um banco de dados do Spanner, siga as etapas em Criar e consultar um banco de dados usando o console do Google Cloud .

Ativar a API BigQuery Connection

Com a API BigQuery Connection, é possível gerenciar conexões do BigQuery com fontes de dados externas, como um banco 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.

Conceder permissões do IAM para o Data Boost aos principais

Uma principal precisa receber as seguintes permissões para executar consultas federadas com o Data Boost:

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

Para mais informações sobre as permissões do Spanner, consulte Permissões do Identity and Access Management (IAM).

Para conceder essas permissões necessárias, recomendamos que você use o papel do IAM Cloud Spanner Database Reader With DataBoost (roles/spanner.databaseReaderWithDataBoost). Você pode adicionar essa função a qualquer principal que precise executar consultas federadas com o Data Boost. Para saber mais sobre os papéis predefinidos no Spanner, consulte Papéis predefinidos. Para saber como criar um papel personalizado do IAM, consulte Criar um papel personalizado.

Executar uma consulta federada do Data Boost

Para executar uma consulta do Data Boost do BigQuery em uma fonte externa, você precisa de uma conexão do BigQuery com a fonte externa e o ID da conexão. Quando você executa uma consulta federada do Spanner com o Data Boost, a fonte externa é um banco de dados do Spanner. Depois de criar o ID de conexão, ele será usado pelo BigQuery para executar uma consulta do Data Boost em um banco de dados do Spanner.

Use uma das opções a seguir para criar um ID de conexão do BigQuery e, em seguida, use esse ID para executar uma consulta do Data Boost no BigQuery:

  1. Começar no Spanner: crie o ID de conexão externa do BigQuery no console do Spanner. Depois que o ID da conexão for criado no console do Spanner, você será redirecionado para o console do BigQuery para executar uma consulta federada do Data Boost em um banco de dados do Spanner.

  2. Comece no BigQuery: crie o ID de conexão externa do Data Boost no console do BigQuery ou usando a ferramenta de linha de comando bq. Depois de criar o ID da conexão, você permanece no console do BigQuery para executar uma consulta federada do Data Boost em um banco de dados do Spanner.

Começar no Spanner para executar uma consulta do Data Boost

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

  1. Acesse a página Instâncias do Spanner no console do Google Cloud .

    Acessar a página "Instâncias"

    O console mostra uma lista das suas instâncias do Spanner.

  2. Selecione uma instância e um banco de dados do Spanner.

  3. Na página Visão geral do banco de dados, no menu de navegação, clique em Spanner Studio.

  4. Clique em Abrir no BigQuery.

  5. Na caixa de diálogo Ver no BigQuery, insira um ID de conexão.

    O ID da conexão é usado para criar uma nova conexão externa do BigQuery com seu banco de dados do Spanner. Faça referência à sua conexão externa usando o seguinte padrão:

    PROJECT-ID.LOCATION.CONNECTION-ID
    

    Um erro vai ocorrer se o ID já existir.

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

    • Selecione Ler dados em paralelo.
    • Selecione Usar o Data Boost 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;");
    

    Você pode substituir isso pela sua consulta federada. Por exemplo, você pode fazer uma consulta semelhante ao exemplo a seguir. Este exemplo faz uma consulta federada de uma tabela chamada orders em um banco de dados do Spanner e mescla os resultados com uma tabela do BigQuery chamada 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;

Começar no BigQuery para executar uma consulta do Data Boost

Para criar uma conexão de dados externa do BigQuery com um banco de dados do Spanner e usar essa conexão para executar uma consulta federada do Data Boost no BigQuery, selecione uma das seguintes opções:

Console

  1. Acesse Criar conexões do Spanner na documentação do BigQuery e siga as instruções na guia Console.

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

    • Selecione Ler dados em paralelo.
    • Selecione Usar o Data Boost do Spanner.

bq

  1. Acesse Criar conexões do Spanner na documentação do BigQuery e siga as instruções na guia bq*.

  2. Defina as seguintes propriedades de conexão como true:

    • useParallelism
    • useDataBoost

O exemplo a seguir usa o comando bq mk para criar uma conexão chamada my_connection com as duas propriedades necessárias para o 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

Usar o Data Boost com conjuntos de dados externos

Para executar uma consulta do Data Boost do BigQuery no Spanner como uma fonte externa, crie um conjunto de dados externo (também conhecido como conjunto de dados federado) no BigQuery vinculado a um banco de dados GoogleSQL ou PostgreSQL no Spanner.

Usar uma conexão CLOUD_RESOURCE

Por padrão, os conjuntos de dados externos do Spanner usam credenciais de usuário final (EUC, na sigla em inglês), o que exige que os usuários tenham acesso direto aos bancos de dados do Spanner. Os usuários podem consultar esses conjuntos de dados se tiverem acesso concedido no Spanner.

De maneira opcional, os conjuntos de dados externos do Spanner podem usar uma conexão CLOUD_RESOURCE para interagir com seu banco de dados do Spanner. Assim, é possível dar acesso do usuário aos dados do Spanner pelo BigQuery sem conceder acesso direto ao banco de dados do Spanner. Como a conta de serviço da conexão CLOUD_RESOURCE processa a recuperação de dados do Spanner, você só precisa conceder aos usuários acesso ao conjunto de dados externo do Spanner. Essa delegação de acesso desacopla o acesso às tabelas do Spanner de conjuntos de dados externos e o acesso direto às tabelas subjacentes do Spanner. Uma conexão de recursos do Cloud associada a uma conta de serviço é usada para se conectar ao Spanner. Os usuários podem consultar essas tabelas do Spanner em conjuntos de dados externos, mesmo que não tenham acesso concedido no Spanner.

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

Crie uma conexão

Você pode criar ou usar uma conexão CLOUD_RESOURCE para se conectar ao Spanner. Crie a conexão no mesmo local em que você planeja criar o conjunto de dados externo do Spanner.

Selecione uma das seguintes opções:

Console

  1. Acessar a página do BigQuery.

    Acessar o BigQuery

  2. No painel à esquerda, clique em Explorer:

    Botão destacado para o painel "Explorer".

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

  3. No painel Explorer, expanda o nome do projeto e clique em Conexões.

  4. Na página Conexões, clique em Criar conexão.

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

  6. No campo ID da conexão, insira um nome para a conexão.

  7. Em Tipo de local, selecione um local para sua conexão. A conexão precisa estar alocada com seus outros recursos, como conjuntos de dados.

  8. Clique em Criar conexão.

  9. Clique em Ir para conexão.

  10. No painel Informações da conexão, copie o ID da conta de serviço para usar em uma etapa posterior.

bq

  1. Em um ambiente de linha de comando, crie uma conexão:

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

    O parâmetro --project_id substitui o projeto padrão.

    Substitua:

    • REGION: sua região de conexão
    • PROJECT_ID: o ID do projeto do Google Cloud
    • CONNECTION_ID: um ID para sua conexão

    Quando você cria um recurso de conexão, o BigQuery cria uma conta de serviço do sistema exclusiva e a associa à conexão.

    Solução de problemas: se você receber o seguinte erro de conexão, atualize o SDK 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 uso em uma etapa posterior:

    bq show --connection PROJECT_ID.REGION.CONNECTION_ID

    O resultado será o 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 de cliente do Spanner, consulte Bibliotecas de cliente do Spanner.

Para autenticar no Spanner, configure o Application Default Credentials. Para mais informações, consulte Configurar 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 de cliente do Spanner, consulte Bibliotecas de cliente do Spanner.

Para autenticar no Spanner, configure o Application Default Credentials. Para mais informações, consulte Configurar 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 autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

O exemplo a seguir cria uma conexão de recurso do Google Cloud chamada 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 em um projeto Google Cloud , siga as etapas nas seções a seguir.

Preparar o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o projeto Google Cloud padrão em que você quer aplicar as configurações do Terraform.

    Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.

Preparar o diretório

Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.

  1. No Cloud Shell, crie um diretório e um novo arquivo dentro dele. O nome do arquivo precisa ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o arquivo é chamado de main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.

    Copie o exemplo de código no main.tf recém-criado.

    Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve as alterações.
  5. Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
    terraform init

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

    terraform init -upgrade

Aplique as alterações

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

    Faça as correções necessárias na configuração.

  2. Para aplicar a configuração do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply

    Aguarde até que o Terraform exiba a mensagem "Apply complete!".

  3. Abra seu Google Cloud projeto para conferir os resultados. No console do Google Cloud , navegue até seus recursos na UI para verificar se foram criados ou atualizados pelo Terraform.

Depois de criar a conexão, abra-a e, no painel Informações da conexão, copie o ID da conta de serviço. Você precisa desse ID ao configurar as permissões da conexão. Quando você cria um recurso de conexão, o BigQuery cria uma conta de serviço do sistema exclusiva e a associa à conexão.

Configurar o acesso

Conceda à conta de serviço associada à nova conexão acesso de leitura à sua instância ou banco de dados do Spanner. Recomendamos usar o papel predefinido do IAM de Leitor do banco de dados do Cloud Spanner com Data Boost (roles/spanner.databaseReaderWithDataBoost).

Siga estas etapas para conceder acesso a papéis no nível do banco de dados à conta de serviço que você copiou da conexão:

  1. Acesse a página Instâncias do Spanner.

    Acesse a página "Instâncias"

  2. Clique no nome da instância que contém seu banco de dados para acessar a página Detalhes da instância.

  3. Na guia Visão geral, marque a caixa de seleção do seu banco de dados.
    O painel de informações é exibido.

  4. Clique em Adicionar principal.

  5. No painel Adicionar principais, em Novos principais, insira o ID da conta de serviço que você copiou.

  6. No campo Selecionar um papel, escolha Leitor de banco de dados do Cloud Spanner com o papel DataBoost.

  7. Clique em Salvar.

Criar um conjunto de dados externo

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

Console

  1. Abra a página do BigQuery no console do Google Cloud .

    Acessar a página do BigQuery

  2. No painel à esquerda, clique em Explorer:

    Botão destacado para o painel "Explorer".

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

  3. No painel Explorador, selecione o projeto em que você quer criar o conjunto de dados.

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

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

    • Em Código do conjunto de dados, digite um nome exclusivo.
    • Em Tipo de local, escolha um local para o conjunto de dados, como us-central1 ou multirregião us. Depois que você cria um conjunto de dados, o local não pode ser alterado.
    • Em Conjunto de dados externo, faça o seguinte:

      • Marque a caixa ao lado de Vincular a um conjunto de dados externo.
      • Em Tipo de conjunto de dados externo, selecione Spanner.
      • Em Fonte externa, insira o identificador completo do seu banco 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.
      • Opcional: em Papel do banco de dados, insira o nome de um papel do banco de dados do Spanner. Para mais informações, leia sobre as funções de banco de dados usadas para criar conexões do Spanner.
      • Se quiser, marque a caixa ao lado de Usar uma conexão de recurso do Cloud para criar o conjunto de dados externo com uma conexão.
    • Não altere as outras configurações.

  6. Clique em Criar conjunto de dados.

SQL

Use a instrução de linguagem de definição de dados (DDL) CREATE EXTERNAL SCHEMA:

  1. No console do Google Cloud , acesse a página BigQuery.

    Acessar o BigQuery

  2. No editor de consultas, digite a seguinte instruçã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:

    • DATASET_NAME: o nome do novo conjunto de dados no BigQuery.
    • SPANNER_EXTERNAL_SOURCE: o nome completo e qualificado do banco 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: o local do novo conjunto de dados no BigQuery. Por exemplo, us-central1. Depois de criar um conjunto de dados, não será possível alterar o local dele.
    • (Opcional) CONNECTION_NAME: o nome da sua conexão de recurso do Cloud.

  3. Clique em Executar.

Para mais informações sobre como executar consultas, acesse Executar uma consulta interativa.

bq

Em um ambiente de linha de comando, crie um conjunto de dados externo usando o comando bq mk:

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

Outra opção é criar com uma conexão:

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

Substitua:

  • LOCATION: o local do novo conjunto de dados no BigQuery. Por exemplo, us-central1. Depois de criar um conjunto de dados, não será possível alterar o local dele. É possível definir um valor de local padrão usando o arquivo .bigqueryrc.
  • SPANNER_EXTERNAL_SOURCE: o nome completo e qualificado do banco 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 em um projeto diferente do projeto padrão, adicione a ID do projeto ao nome do conjunto de dados no seguinte formato: PROJECT_ID:DATASET_NAME.
  • (Opcional) CONNECTION_NAME: o nome da sua conexão de recurso do Cloud.

Terraform

Use o recurso google_bigquery_dataset.

Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

O exemplo a seguir 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 em um projeto Google Cloud , siga as etapas nas seções a seguir.

Preparar o Cloud Shell

  1. Inicie o Cloud Shell.
  2. Defina o projeto Google Cloud padrão em que você quer aplicar as configurações do Terraform.

    Você só precisa executar esse comando uma vez por projeto, e ele pode ser executado em qualquer diretório.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    As variáveis de ambiente serão substituídas se você definir valores explícitos no arquivo de configuração do Terraform.

Preparar o diretório

Cada arquivo de configuração do Terraform precisa ter o próprio diretório, também chamado de módulo raiz.

  1. No Cloud Shell, crie um diretório e um novo arquivo dentro dele. O nome do arquivo precisa ter a extensão .tf, por exemplo, main.tf. Neste tutorial, o arquivo é chamado de main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Se você estiver seguindo um tutorial, poderá copiar o exemplo de código em cada seção ou etapa.

    Copie o exemplo de código no main.tf recém-criado.

    Se preferir, copie o código do GitHub. Isso é recomendado quando o snippet do Terraform faz parte de uma solução de ponta a ponta.

  3. Revise e modifique os parâmetros de amostra para aplicar ao seu ambiente.
  4. Salve as alterações.
  5. Inicialize o Terraform. Você só precisa fazer isso uma vez por diretório.
    terraform init

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

    terraform init -upgrade

Aplique as alterações

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

    Faça as correções necessárias na configuração.

  2. Para aplicar a configuração do Terraform, execute o comando a seguir e digite yes no prompt:
    terraform apply

    Aguarde até que o Terraform exiba a mensagem "Apply complete!".

  3. Abra seu Google Cloud projeto para conferir os resultados. No console do Google Cloud , navegue até seus recursos na UI para verificar se foram criados ou atualizados pelo Terraform.

API

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

Os nomes das tabelas nos conjuntos de dados externos não diferenciam maiúsculas de minúsculas.

Ao criar os conjuntos de dados externos com uma conexão CLOUD_RESOURCE, você precisa ter a permissão bigquery.connections.delegate (disponível no papel Administrador de conexões do BigQuery) na conexão usada pelos conjuntos de dados externos.

Criar uma visualização materializada não incremental com base em tabelas de um conjunto de dados externo

Antes de continuar, crie o conjunto de dados externo do Spanner usando uma conexão CLOUD_RESOURCE.

É possível criar visualizações materializadas não incrementais que referenciam tabelas de conjuntos de dados externos do Spanner usando a opção allow_non_incremental_definition. O exemplo a seguir 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;

Somente as visualizações materializadas não incrementais do BigQuery podem ter tabelas de conjunto de dados externos do Spanner como tabelas de base. Se a última atualização de uma visualização materializada não incremental ocorreu fora do intervalo max_staleness, a consulta lê as tabelas do conjunto de dados externo do Spanner. Saiba mais sobre as visualizações materializadas não incrementais do BigQuery.

A seguir