Traduzir consultas com o tradutor SQL interativo
Neste documento, descrevemos como traduzir uma consulta de um dialeto SQL diferente para uma consulta do GoogleSQL pelo tradutor de SQL interativo do BigQuery. O tradutor de SQL interativo pode ajudar a reduzir o tempo e o esforço da migração de cargas de trabalho para o BigQuery. Este documento é destinado a usuários familiarizados com o Console do Google Cloud.
Se o local tiver suporte, use o recurso de regra de tradução (pré-lançamento) para personalizar a forma como o tradutor de SQL interativo traduz o SQL.
Limitações
É preciso fazer login com uma Conta do Google para usar o conversor de SQL interativo. O conversor de SQL interativo não é compatível com o uso de identidades federadas.
Antes de começar
Se o projeto da Google Cloud CLI foi criado antes de 15 de fevereiro de 2022, ative a API BigQuery Migration da seguinte maneira:
No console do Google Cloud, acesse a página da API BigQuery Migration.
Clique em Ativar.
Permissões e papéis
Nesta seção, descrevemos as permissões do Identity and Access Management (IAM) necessárias para usar o tradutor de SQL interativo e os papéis predefinidos do IAM que concedem essas permissões. Nesta seção, também descrevemos as permissões necessárias para a definição de configurações de tradução adicionais.
Permissões para usar o conversor de SQL interativo
Para receber as permissões necessárias a fim de usar o tradutor interativo,
peça que o administrador conceda a você o
papel do IAM de MigrationWorkflow Editor (roles/bigquerymigration.editor
) no recurso parent
.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para usar o tradutor interativo. 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 usar o tradutor interativo:
-
bigquerymigration.workflows.create
-
bigquerymigration.workflows.get
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Permissões para definir outras configurações de tradução
É possível definir configurações de tradução adicionais pelos campos Translation Config ID e Translation Configuration Source Location das configurações de tradução. Para definir essas configurações de tradução, você precisa destas permissões:
bigquerymigration.workflows.get
bigquerymigration.workflows.list
O papel predefinido do IAM a seguir fornece as permissões necessárias para definir configurações de tradução adicionais:
roles/bigquerymigration.viewer
Consulte mais informações sobre o IAM do BigQuery em Controle de acesso com o IAM.
Dialetos SQL compatíveis
O tradutor de SQL interativo do BigQuery traduz os seguintes dialetos SQL para o GoogleSQL:
- SQL do Amazon Redshift
- Apache HiveQL e CLI Beeline
- IBM Netezza SQL e NZPLSQL
- Teradata e Teradata Vantage
- SQL
- Basic Teradata Query (BTEQ)
- Transporte paralelo do Teradata (TPT)
Além disso, a tradução dos seguintes dialetos SQL é suportada na versão de pré-lançamento:
- SQL do Apache Spark
- T-SQL do Azure Synapse
- SQL do Greenplum
- SQL do IBM DB2
- SQL para MySQL
- SQL da Oracle, PL/SQL, Exadata
- SQL do PostgreSQL
- Trino ou PrestoSQL
- SQL do Snowflake
- T-SQL do SQL Server
- SQLite
- SQL da Vertica
Locais
O conversor de SQL interativo 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 |
Baixo CO2 | |
Madri | europe-southwest1 |
Baixo CO2 | |
Bélgica | europe-west1 |
Baixo CO2 | |
Londres | europe-west2 |
CO2 baixo | |
Frankfurt | europe-west3 |
Baixo CO2 | |
Países Baixos | europe-west4 |
Baixo CO2 | |
Zurique | europe-west6 |
Baixo CO2 | |
Paris | europe-west9 |
Baixo CO2 | |
Turim | europe-west12 |
||
América | |||
São Paulo | southamerica-east1 |
Baixo CO2 | |
EUA multirregião | us |
||
Iowa | us-central1 |
CO2 baixo | |
Carolina do Sul | us-east1 |
||
Norte da Virgínia | us-east4 |
||
Columbus, Ohio | us-east5 |
||
Dallas | us-south1 |
Baixo CO2 | |
Oregon | us-west1 |
Baixo CO2 | |
Los Angeles | us-west2 |
||
Salt Lake City | us-west3 |
O recurso de regra de tradução está disponível nos seguintes locais de processamento:
us
(EUA multirregional)eu
(UE multirregião)us-central1
(Iowa)europe-west4
(Países Baixos)
Traduzir uma consulta em GoogleSQL
Siga estas etapas para traduzir uma consulta em GoogleSQL:
No Console do Google Cloud, acesse a página BigQuery.
No painel Editor, clique em Mais e selecione Configurações de tradução.
Em Dialeto de origem, selecione o dialeto SQL que você quer traduzir.
Opcional. Em local de processamento, selecione o local em que você quer que o trabalho de tradução seja executado. Por exemplo, se você estiver na Europa e não quiser que seus dados cruzem os limites de local, selecione a região
eu
.Clique em Salvar.
No painel Editor, clique em Mais e selecione Ativar tradução do SQL.
O painel Editor é dividido em dois.
No painel esquerdo, digite a consulta que você quer traduzir.
Clique em Traduzir.
O BigQuery traduz a consulta em GoogleSQL e a exibe no painel direito. Por exemplo, a captura de tela a seguir mostra o Teradata SQL traduzido:
Opcional: para executar a consulta traduzida do GoogleSQL, clique em Executar.
Opcional: para retornar ao editor SQL, clique em Mais e selecione Desativar tradução do SQL.
O painel Editor retorna para um único painel.
Configurar o tradutor de SQL interativo
É possível configurar o tradutor de SQL interativo para ajustar a tradução do SQL de origem. Para fazer isso, forneça suas regras para uso com o Gemini em um arquivo de configuração YAML ou um arquivo de configuração YAML contendo metadados de objetos SQL ou informações de mapeamento de objetos.
Criar uma regra de tradução
É possível personalizar a forma como o tradutor de SQL interativo converte o SQL criando regras de tradução. O conversor de SQL interativo ajusta as traduções com base nas regras de conversão SQL aprimoradas do Gemini atribuídas a ele, permitindo personalizar os resultados de conversão com base nas necessidades de migração. Esse recurso é compatível apenas com determinados locais.
Para criar uma regra de conversão de SQL aprimorada do Gemini, faça o seguinte:
Console
Para criar uma regra de conversão de SQL aprimorada do Gemini, faça o seguinte:
Depois de executar uma tradução interativa, clique em Personalizar.
Use uma ou as duas solicitações a seguir para criar uma regra de tradução:
No prompt Substituir um padrão SQL por outro, especifique um padrão SQL que você queira substituir no campo Substituir e um padrão SQL para substituir. no campo With.
Um padrão SQL pode conter qualquer número de instruções, cláusulas ou funções em um script SQL. Quando você cria uma regra usando esse prompt, a tradução de SQL aprimorada do Gemini identifica todas as instâncias desse padrão de SQL na saída da tradução e as substitui dinamicamente por outro padrão de SQL. Por exemplo, use essa solicitação para criar uma regra que substitua todas as ocorrências de
months_between (X,Y)
pordate_diff(X,Y,MONTH)
.No campo Descrever uma alteração na saída de tradução, descreva uma mudança na saída de tradução do SQL na linguagem natural.
Quando você cria uma regra usando esse prompt, a tradução do SQL aprimorada do Gemini identifica a solicitação e faz a alteração especificada na saída da tradução.
Clique em Visualizar.
Na caixa de diálogo Visualizar alterações sugeridas, revise as mudanças feitas pela tradução aprimorada do SQL do Gemini para o resultado da tradução com base na sua regra.
Opcional: para adicionar essa regra para uso em traduções futuras, marque a caixa de seleção Adicionar regra....
As regras são salvas no arquivo YAML de configuração padrão ou
__default.ai_config.yaml
. Esse arquivo YAML de configuração é salvo na pasta do Cloud Storage, conforme especificado no campo Translation Configuration Source Location nas configurações de tradução. Um arquivo YAML de configuração pode aceitar até 10 regras de tradução e está sujeito a limitações de tamanho do arquivo de configuração.Para aplicar as mudanças sugeridas à saída da tradução, clique em Aplicar.
YAML
É possível criar uma regra de conversão de SQL aprimorada do Gemini criando um arquivo YAML de configuração e fazendo o upload dele para o Cloud Storage.
Requisitos
O arquivo YAML da regra de tradução precisa ter o sufixo .ai_config.yaml
.
Por exemplo, rules_1.ai_config.yaml
Limitações
- Só é possível aplicar um arquivo YAML de regra de tradução no tradutor de SQL interativo.
- Todos os arquivos YAML de regra de tradução aceitam até 10 regras e estão sujeitos a limitações de tamanho do arquivo de configuração.
Campos aceitos
O exemplo a seguir mostra como criar um arquivo YAML de regra de tradução aprimorada pelo Gemini usando um comando de linguagem natural.
rewrite_target: TARGET
instruction: NL_PROMPT
Substitua:
TARGET
: especifique se você quer aplicar a regra de tradução ao SQL de entrada,SOURCE_SQL
, ou ao SQL de saída,TARGET_SQL
(padrão).NL_PROMPT
: em linguagem natural, descreva uma mudança no SQL de destino. A tradução de SQL aprimorada do Gemini identifica a solicitação e faz a mudança especificada
Também é possível criar um arquivo YAML de regras de tradução com várias regras de tradução (até 10). Cada regra pode consistir em um comando de linguagem natural
(instruction
) que descreve uma regra e um ou mais exemplos para substituir
um padrão de SQL (input
) por outro (output
). Uma regra de tradução pode
usar o campo instruction
, um ou mais campos examples
ou
os dois tipos de campos para descrever a regra.
rewrite_target: TARGET
instruction: NL_PROMPT
translation_rules:
- instruction: NL_RULE_1
examples:
- input: RULE_1_INPUT_1
output: RULE_1_OUTPUT_1
- input: RULE_1_INPUT_2
output: RULE_1_OUTPUT_2
- instruction: NL_RULE_2
examples:
- input: RULE_2_INPUT_1
output: RULE_2_OUTPUT_1
…
…
Substitua:
NL_RULE_1
(opcional): em linguagem natural, descreva uma regra de tradução.RULE_1_INPUT_1
(opcional): um padrão SQL que você quer substituir.RULE_1_OUTPUT_1
(opcional): o padrão SQL esperado depois queinput
foi substituído.É possível adicionar mais
translation_rules
(até 10) e maisexamples
, conforme necessário.
Para conferir exemplos de arquivos YAML de regras de conversão de SQL aprimoradas do Gemini, consulte os Exemplos de arquivos YAML de regras de conversão.
Aplicar um arquivo YAML de regra de tradução à próxima tradução
Para aplicar um arquivo YAML de regra de tradução:
- No Editor de consultas, clique em Mais > Configurações de tradução.
- No campo Translation Configuration Source Location, especifique o caminho para o arquivo YAML da regra de tradução armazenado em uma pasta do Cloud Storage.
- Clique em Salvar.
Exemplos de arquivos YAML de regras de tradução
Os exemplos a seguir são arquivos YAML de regras de conversão de SQL aprimoradas do Gemini.
Exemplo 1: especifique uma função para ser substituída por outra.
translation_rules:
- instruction: "Remove upper() function"
examples:
- input: "upper(X)"
output: "X"
Exemplo 2: especifique várias regras de tradução em um único arquivo YAML.
translation_rules:
- instruction: "Remove upper() function"
examples:
- input: "upper(X)"
output: "X"
- instruction: "Insert a comment at the head that explains each statement in detail."
Traduzir com um ID de configuração de tradução em lote
É possível executar uma consulta interativa com as mesmas configurações de tradução de um job de tradução em lote fornecendo um ID de configuração de tradução em lote.
- No Editor de consultas, clique em Mais > Configurações de tradução.
No campo ID de configuração de tradução, forneça um ID de configuração para tradução em lote para aplicar a mesma configuração de tradução de um job de migração em lote concluído do BigQuery.
Para encontrar o ID de configuração de tradução em lote de um job, selecione um job de tradução em lote na página Tradução de SQL e clique na guia Configuração de tradução. O ID de configuração de tradução em lote é listado como Nome do recurso.
Clique em Salvar.
Traduzir com outras configurações
Execute uma consulta interativa com configurações de tradução adicionais especificando arquivos YAML de configuração armazenados em uma pasta do Cloud Storage. As configurações de tradução podem incluir metadados de objetos SQL ou informações de mapeamento de objetos do banco de dados de origem que podem melhorar a qualidade da tradução. Por exemplo, inclua informações DDL ou esquemas do banco de dados de origem para melhorar a qualidade da tradução de SQL interativa.
Para especificar as configurações de tradução fornecendo um local para os arquivos de origem da configuração de tradução, faça o seguinte:
- No Editor de consultas, clique em Mais > Configurações de tradução.
No campo Translation Configuration Source Location, especifique o caminho para os arquivos de configuração de tradução armazenados em uma pasta do Cloud Storage.
O tradutor de SQL interativo do BigQuery oferece suporte a arquivos de configuração que contêm metadados de tradução e mapeamento de nome de objeto. Consulte informações sobre como fazer upload de arquivos para o Cloud Storage em Fazer upload de objetos de um sistema de arquivos.
Clique em Salvar.
Limitações de tamanho do arquivo de configuração
Ao usar um arquivo de configuração de tradução com o conversor de SQL interativo do BigQuery, o arquivo de metadados compactado ou o arquivo de configuração YAML precisa ser menor que 50 MB. Se o tamanho do arquivo exceder 50 MB, o tradutor interativo pula esse arquivo de configuração durante a tradução e produz uma mensagem de erro semelhante a esta:
CONFIG ERROR: Skip reading file "gs://metadata-file.zip". File size (150,000,000 bytes)
exceeds limit (50 MB).
Um método para reduzir o tamanho do arquivo de metadados é usar as sinalizações --database
ou --schema
para extrair apenas metadados de bancos de dados ou esquemas relevantes para
as consultas de entrada de tradução. Para mais informações sobre como usar essas sinalizações ao
gerar arquivos de metadados, consulte Sinalizações globais.
Resolver erros de tradução
Os erros a seguir costumam ser encontrados ao usar o conversor de SQL interativo.
Problemas de tradução do RelationNotFound
ou AttributeNotFound
Para garantir a conversão mais precisa,
insira as instruções da linguagem de definição de dados (DDL) para todas as tabelas usadas
em uma consulta antes da consulta. Por exemplo, para traduzir a consulta do Amazon Redshift select table1.field1, table2.field1
from table1, table2 where table1.id = table2.id;
, é necessário inserir as seguintes instruções SQL no tradutor de SQL interativo:
create table schema1.table1 (id int, field1 int, field2 varchar(16));
create table schema1.table2 (id int, field1 varchar(30), field2 date);
select table1.field1, table2.field1
from table1, table2
where table1.id = table2.id;
Preços
Não há custo para usar o conversor de SQL interativo. No entanto, o armazenamento usado para armazenar arquivos de entrada e saída incorre em taxas normais. Para mais informações, consulte preços de armazenamento.
A seguir
Saiba mais sobre as seguintes etapas na migração do armazenamento de dados:
- Visão geral da migração
- Avaliação da migração
- Visão geral de esquema e transferência de dados
- Tradução de SQL em lote
- Pipelines de dados
- Segurança e governança de dados
- Ferramenta de validação de dados