Exportar dados para o Spanner (ETL reverso)

Para fornecer feedback ou solicitar suporte para este recurso, envie um e-mail para bq-cloud-spanner-federation-preview@google.com.

Este documento descreve como configurar um fluxo de trabalho de extração, transformação e carregamento reverso (ETL reverso) do BigQuery para o Spanner. É possível fazer isso usando a instrução EXPORT DATA para exportar dados de uma tabela do BigQuery para uma tabela do Spanner.

Esse fluxo de trabalho ETL reverso combina recursos analíticos no BigQuery com baixa latência e alta capacidade no Spanner. Esse fluxo de trabalho permite disponibilizar dados para usuários de aplicativos sem esgotar cotas e limites no BigQuery.

Antes de começar

Funções exigidas

Para conseguir as permissões necessárias para exportar dados do BigQuery para o Spanner, peça ao administrador para conceder a você os seguintes papéis do IAM no seu projeto:

Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias com papéis personalizados ou outros papéis predefinidos.

Limitações

Os seguintes tipos de dados do BigQuery não têm equivalentes no Spanner e não são compatíveis:

Dialeto do banco de dados do Spanner Tipos do BigQuery sem suporte
Todos os dialetos
  • STRUCT
  • GEOGRAPHY
  • DATETIME
  • RANGE
  • TIME
GoogleSQL
  • BIGNUMERIC: o tipo de NUMERIC compatível não é grande o suficiente. Considere adicionar transmissões explícitas ao NUMERIC na consulta.

O tamanho máximo de uma linha exportada não pode exceder 1 MiB.

Configurar exportações com a opção spanner_options

Você pode usar a opção spanner_options para especificar um banco de dados e uma tabela de destino do Spanner. A configuração é expressa na forma de uma string JSON, conforme mostrado neste exemplo:

EXPORT DATA OPTIONS(
   uri="https://spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID",
  format='CLOUD_SPANNER',
   spanner_options = """{
      "table": "TABLE_NAME",
      "priority": "PRIORITY",
      "tag": "TAG",
   }"""
)

Substitua:

  • PROJECT_ID: o nome do seu projeto do Google Cloud.
  • INSTANCE_ID: o nome da instância do banco de dados.
  • DATABASE_ID: o nome do banco de dados.
  • TABLE_NAME: o nome de uma tabela de destino atual.
  • PRIORITY (opcional): prioridade das solicitações de gravação. Valores permitidos: LOW, MEDIUM, HIGH. Valor padrão: MEDIUM.
  • TAG (opcional): tag de solicitação para ajudar a identificar o tráfego do exportador no monitoramento do Spanner. Valor padrão: bq_export.

Requisitos de consulta de exportação

Para exportar resultados de consulta para o Spanner, eles precisam atender aos seguintes requisitos:

  • Todas as colunas do conjunto de resultados precisam existir na tabela de destino e seus tipos devem corresponder.
  • O conjunto de resultados precisa conter todas as colunas NOT NULL da tabela de destino.
  • Os valores das colunas não podem exceder os limites de tamanho de dados em tabelas do Spanner.
  • Os tipos de coluna incompatíveis precisam ser convertidos em um dos tipos compatíveis antes de exportar para o Spanner.

Exportar dados

É possível usar a instrução EXPORT DATA para exportar dados de uma tabela do BigQuery para uma tabela do Spanner.

O exemplo a seguir exporta campos selecionados de uma tabela chamada mydataset.table1:

EXPORT DATA OPTIONS (
  uri="https://spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID",
  format='CLOUD_SPANNER',
  spanner_options="""{ "table": "TABLE_NAME" }"""
)
AS SELECT * FROM mydataset.table1;

Substitua:

  • PROJECT_ID: o nome do seu projeto do Google Cloud
  • INSTANCE_ID: o nome da sua instância de banco de dados.
  • DATABASE_ID: o nome do banco de dados.
  • TABLE_NAME: o nome de uma tabela de destino atual.

Otimização da exportação

Para otimizar a exportação de registros do BigQuery para o Spanner, tente o seguinte:

  • Aumentar o número de nós na instância de destino do Spanner. O exportador escalona automaticamente o número de slots do BigQuery Export em proporção ao número de nós do Spanner e unidades processamento. Para mais detalhes sobre como maximizar a capacidade de gravação, consulte Visão geral do desempenho.

  • Evite ordenar os resultados da consulta. Se o conjunto de resultados tiver todas as colunas de chaves primárias, o exportador classificará automaticamente as chaves primárias da tabela de destino para simplificar as gravações e minimizar a contenção.

    Se a chave primária da tabela de destino incluir colunas geradas, você deverá adicionar as expressões das colunas geradas à consulta para garantir que os dados exportados sejam classificados corretamente.

Preços

Para informações sobre os preços de exportação de dados, consulte Preços do BigQuery.

Depois que os dados são exportados, você é cobrado pelo armazenamento dos dados no Spanner. Para mais informações, consulte os preços do Spanner.