Converter consultas SQL com a API de tradução

Neste documento, descrevemos como usar a API de tradução no BigQuery para traduzir scripts escritos em outros dialetos SQL em consultas do GoogleSQL. A API Translation pode simplificar o processo de migração de cargas de trabalho para o BigQuery.

Antes de começar

Antes de enviar um job de tradução, siga estas etapas:

  1. Verifique se você tem todas ss permissões necessárias.
  2. Ative a API BigQuery Migration.
  3. Colete os arquivos de origem que contêm os scripts SQL e as consultas a serem traduzidos.
  4. Faça upload dos arquivos de origem para o Cloud Storage.

Permissões necessárias

Para receber as permissões necessárias para criar jobs de tradução usando a API consolidada de tradução, peça ao administrador para conceder a você o papel MigrationWorkflow Editor (roles/bigquerymigration.editor) do IAM no recurso parent. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esse papel predefinido contém as permissões necessárias para criar jobs de tradução usando a API consolidada de tradução. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para criar jobs de tradução usando a API consolidada de tradução:

  • bigquerymigration.workflows.create
  • bigquerymigration.workflows.get

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Ativar a API BigQuery Migration

Se o projeto da Google Cloud CLI foi criado antes de 15 de fevereiro de 2022, ative a API BigQuery Migration da seguinte maneira:

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

    Acesse a API BigQuery Migration

  2. Clique em Enable.

Fazer upload de arquivos de entrada no Cloud Storage

Se você quiser usar o console do Google Cloud ou a API BigQuery Migration para executar um job de tradução, faça upload dos arquivos de origem que contêm as consultas e os scripts que você quer traduzir para o Cloud Storage. Também é possível fazer upload de qualquer arquivo de metadados ou arquivos YAML de configuração para o mesmo bucket do Cloud Storage que contém os arquivos de origem. Para mais informações sobre como criar buckets e fazer upload de arquivos para o Cloud Storage, consulte Criar buckets e Fazer upload de objetos de um sistema de arquivos.

Tipos de tarefas com suporte

A API Translation pode traduzir os seguintes dialetos SQL para o GoogleSQL:

  • SQL do Amazon Redshift: Redshift2BigQuery_Translation
  • Apache HiveQL e CLI Beeline: HiveQL2BigQuery_Translation
  • SQL do Apache Spark: SparkSQL2BigQuery_Translation
  • T-SQL do Azure Synapse: AzureSynapse2BigQuery_Translation
  • IBM Netezza SQL e NZPLSQL: Netezza2BigQuery_Translation
  • SQL para MySQL: MySQL2BigQuery_Translation
  • SQL da Oracle, PL/SQL, Exadata: Oracle2BigQuery_Translation
  • SQL do PostgreSQL: Postgresql2BigQuery_Translation
  • Presto ou Trino SQL: Presto2BigQuery_Translation
  • SQL do Snowflake: Snowflake2BigQuery_Translation
  • T-SQL do SQL Server: SQLServer2BigQuery_Translation
  • Teradata e Teradata Vantage: Teradata2BigQuery_Translation
  • SQL da Vertica: Vertica2BigQuery_Translation

A API Translation também oferece suporte às seguintes tarefas de tradução:

  • Converter SQL do Oracle para SQL do PostgreSQL: Oracle2Postgresql_Translation

Locais

A API Translation está disponível nos seguintes locais de processamento:

Descrição da região Nome da região Detalhes
Ásia-Pacífico
Tóquio asia-northeast1
Mumbai asia-south1
Singapura asia-southeast1
Sydney australia-southeast1
Europa
UE multirregião eu
Varsóvia europe-central2
Finlândia europe-north1 Ícone de folha Baixo CO2
Madri europe-southwest1
Bélgica europe-west1 Ícone de folha Baixo CO2
Londres europe-west2 ícone de folha CO2 baixo
Frankfurt europe-west3 ícone de folha Baixo CO2
Países Baixos europe-west4
Zurique europe-west6 Ícone de folha Baixo CO2
Paris europe-west9 Ícone de folha Baixo CO2
Turim europe-west12
América
São Paulo southamerica-east1 Ícone de folha Baixo CO2
EUA multirregião us
Iowa us-central1 Ícone de folha CO2 baixo
Carolina do Sul us-east1
Norte da Virgínia us-east4
Columbus, Ohio us-east5
Dallas us-south1
Oregon us-west1 Ícone de folha Baixo CO2
Los Angeles us-west2
Salt Lake City us-west3

Enviar um job de tradução

Para enviar um job de tradução usando a API Translation, use o método projects.locations.workflows.create e forneça uma instância do recurso MigrationWorkflow com um tipo de tarefa compatível.

Exemplo: criar uma tradução em lote

O comando curl a seguir cria um job de tradução em lote em que os arquivos de entrada e saída são armazenados no Cloud Storage. O campo source_target_mapping contém uma lista que mapeia as entradas literal de origem para um caminho relativo opcional para a saída de destino.

curl -d "{
  \"tasks\": {
      string: {
        \"type\": \"TYPE\",
        \"translation_details\": {
            \"target_base_uri\": \"TARGET_BASE\",
            \"source_target_mapping\": {
              \"source_spec\": {
                  \"base_uri\": \"BASE\"
              }
            },
        }
      }
  }
  }" \
  -H "Content-Type:application/json" \
  -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows

Substitua:

  • TYPE: o tipo de tarefa da tradução, que determina o dialeto de origem e de destino.
  • TARGET_BASE: o URI base de todas as saídas de tradução.
  • BASE: o URI de base de todos os arquivos lidos como origens para tradução.
  • TOKEN: o token para autenticação. Para gerar um token, use o comando gcloud auth print-access-token ou o OAuth 2.0 Playground (use o escopo https://www.googleapis.com/auth/cloud-platform).
  • PROJECT_ID: o projeto que vai processar a tradução.
  • LOCATION: o local em que o job é processao.

O comando anterior retorna uma resposta que inclui um ID de fluxo de trabalho escrito no formato projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID.

Exemplo: criar um job de tradução interativo com entradas e saídas de literal de string

O comando curl a seguir cria um job de tradução com entradas e saídas de literais de string. O campo source_target_mapping contém uma lista que mapeia os diretórios de origem para um caminho relativo opcional para a saída de destino.

curl -d "{
  \"tasks\": {
      string: {
        \"type\": \"TYPE\",
        \"translation_details\": {
        \"source_target_mapping\": {
            \"source_spec\": {
              \"literal\": {
              \"relative_path\": \"PATH\",
              \"literal_string\": \"STRING\"
              }
            }
        },
        \"target_return_literals\": \"TARGETS\",
        }
      }
  }
  }" \
  -H "Content-Type:application/json" \
  -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows

Substitua:

  • TYPE: o tipo de tarefa da tradução, que determina o dialeto de origem e de destino.
  • PATH: o identificador da entrada literal, semelhante a um nome de arquivo ou caminho.
  • STRING: string de dados de entrada literal (por exemplo, SQL) a serem traduzidos.
  • TARGETS: os segmentos esperados que o usuário quer que sejam retornados diretamente na resposta no formato literal. Eles precisam estar no formato de URI de destino (por exemplo, GENERATED_DIR + target_spec.relative_path + source_spec.literal.relative_path). O que estiver fora dessa lista não será retornado na resposta. O diretório gerado, GENERATED_DIR para traduções gerais de SQL, é sql/.
  • TOKEN: o token para autenticação. Para gerar um token, use o comando gcloud auth print-access-token ou o OAuth 2.0 Playground (use o escopo https://www.googleapis.com/auth/cloud-platform).
  • PROJECT_ID: o projeto que vai processar a tradução.
  • LOCATION: o local em que o job é processado.

O comando anterior retorna uma resposta que inclui um ID de fluxo de trabalho escrito no formato projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID.

Explorar o resultado da tradução

Depois de executar o job de tradução, recupere os resultados especificando o ID do fluxo de trabalho do job de tradução com o seguinte comando:

curl \
-H "Content-Type:application/json" \
-H "Authorization:Bearer TOKEN" -X GET https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID

Substitua:

  • TOKEN: o token para autenticação. Para gerar um token, use o comando gcloud auth print-access-token ou o OAuth 2.0 Playground (use o escopo https://www.googleapis.com/auth/cloud-platform).
  • PROJECT_ID: o projeto que vai processar a tradução.
  • LOCATION: o local em que o job é processado.
  • WORKFLOW_ID: o ID gerado quando você cria um fluxo de trabalho de tradução.