Executar consultas federadas com o Data Boost

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

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 as 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, é necessário concluir 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 para criá-los.

Ativar a API BigQuery Connection

A API BigQuery Connection permite gerenciar conexões do BigQuery com fontes de dados externas, como um banco de dados do Spanner.

  • Enable the BigQuery connection API.

    Enable the API

Para mais informações, consulte a API de conexão do BigQuery na documentação do BigQuery.

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

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

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

Para conceder essas permissões, recomendamos que você use o papel do IAM Cloud Spanner Database Reader With DataBoost (roles/spanner.databaseReaderWithDataBoost). É possível adicionar essa função a qualquer participante que precise executar consultas federadas com o Data Boost. Para saber mais sobre 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 para 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 que você cria o ID de conexão, ele é usado pelo BigQuery para executar uma consulta de Data Boost de 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 o ID de conexão para executar uma consulta do Data Boost no BigQuery:

  1. Iniciar no Spanner: crie o ID de conexão externa do BigQuery no console do Spanner. Depois que o ID de conexão é criado no console do Spanner, você é redirecionado para o console do BigQuery para executar uma consulta federada do Data Boost em um banco de dados do Spanner.

  2. Iniciar 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 de conexão, você fica 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 do Spanner e um banco de dados.

  3. Na página Informações gerais 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 Visualizar no BigQuery, insira um ID de conexão.

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

    PROJECT-ID.LOCATION.CONNECTION-ID
    

    Um erro ocorre 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 abaixo. 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 do 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 nova 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

A seguir