Traduza consultas com o tradutor de SQL interativo

Este documento descreve como traduzir uma consulta de um dialeto SQL diferente para uma consulta GoogleSQL através do tradutor de SQL interativo do BigQuery. O tradutor de SQL interativo pode ajudar a reduzir o tempo e o esforço quando migra cargas de trabalho para o BigQuery. Este documento destina-se a utilizadores que estão familiarizados com a Trusted Cloud consola.

Se a sua localização for suportada, pode usar a funcionalidade de regra de tradução para personalizar a forma como o tradutor de SQL interativo traduz o SQL.

Antes de começar

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

  1. Na Trusted Cloud consola, aceda à página API BigQuery Migration.

    Aceda à API BigQuery Migration

  2. Clique em Ativar.

Autorizações e funções

Esta secção descreve as autorizações da gestão de identidade e de acesso (IAM) de que precisa para usar o tradutor de SQL interativo, incluindo as funções da IAM predefinidas que concedem essas autorizações. A secção também descreve as autorizações necessárias para configurar configurações de tradução adicionais.

Autorizações para usar o tradutor de SQL interativo

Para receber as autorizações de que precisa para usar o tradutor interativo, peça ao seu administrador que lhe conceda a função de IAM de Editor do MigrationWorkflow (roles/bigquerymigration.editor) no recurso parent. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Esta função predefinida contém as autorizações necessárias para usar o tradutor interativo. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:

Autorizações necessárias

São necessárias as seguintes autorizações para usar o tradutor interativo:

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

Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.

Autorizações para configurar configurações de tradução adicionais

Pode configurar configurações de tradução adicionais através dos campos ID da configuração de tradução e Localização de origem da configuração de tradução nas definições de tradução. Para configurar estas configurações de tradução, precisa das seguintes autorizações:

  • bigquerymigration.workflows.get
  • bigquerymigration.workflows.list

A seguinte função de IAM predefinida fornece as autorizações de que precisa para configurar configurações de tradução adicionais:

  • roles/bigquerymigration.viewer

Para mais informações sobre a IAM do BigQuery, consulte o artigo Controlo de acesso com a IAM.

Dialetos de SQL suportados

O tradutor de SQL interativo do BigQuery pode traduzir os seguintes dialetos de SQL para GoogleSQL:

  • SQL do Amazon Redshift
  • Apache HiveQL e CLI Beeline
  • IBM Netezza SQL e NZPLSQL
  • Teradata e Teradata Vantage:
    • SQL
    • Basic Teradata Query (BTEQ)
    • Teradata Parallel Transport (TPT)

Além disso, a tradução dos seguintes dialetos de SQL é suportada na pré-visualização:

  • Apache Spark SQL
  • Azure Synapse T-SQL
  • Greenplum SQL
  • IBM DB2 SQL
  • MySQL SQL
  • Oracle SQL, PL/SQL, Exadata
  • SQL PostgreSQL
  • Trino ou PrestoSQL
  • SQL do Snowflake
  • SQL Server T-SQL
  • SQLite
  • Vertica SQL

Processamento de funções SQL não suportadas com UDFs auxiliares

Quando traduz SQL de um dialeto de origem para o BigQuery, algumas funções podem não ter um equivalente direto. Para resolver este problema, o serviço de migração do BigQuery (e a comunidade do BigQuery em geral) disponibilizam funções definidas pelo utilizador (UDFs) auxiliares que replicam o comportamento destas funções de dialeto de origem não suportadas.

Estas FDU são frequentemente encontradas no conjunto de dados público bqutil, o que permite que as consultas traduzidas as referenciem inicialmente através do formato bqutil.<dataset>.<function>(). Por exemplo, bqutil.fn.cw_count().

Considerações importantes para ambientes de produção:

Embora o bqutil ofereça acesso conveniente a estas FDU auxiliares para tradução e testes iniciais, a confiança direta no bqutil para cargas de trabalho de produção não é recomendada por vários motivos:

  1. Controlo de versões: o projeto bqutil aloja a versão mais recente destas FDU, o que significa que as respetivas definições podem mudar ao longo do tempo. A utilização direta de bqutil pode levar a um comportamento inesperado ou a alterações significativas nas suas consultas de produção se a lógica de uma FDU for atualizada.
  2. Isolamento de dependências: a implementação de FDU no seu próprio projeto isola o ambiente de produção de alterações externas.
  3. Personalização: pode ter de modificar ou otimizar estas FDU para se adequarem melhor à sua lógica de negócio específica ou aos requisitos de desempenho. Isto só é possível se estiverem no seu próprio projeto.
  4. Segurança e governação: as políticas de segurança da sua organização podem restringir o acesso direto a conjuntos de dados públicos, como o bqutil, para o tratamento de dados de produção. A cópia de FDU para o seu ambiente controlado está alinhada com essas políticas.

Implementar UDFs auxiliares no seu projeto:

Para uma utilização de produção fiável e estável, deve implementar estas UDFs auxiliares no seu próprio projeto e conjunto de dados. Isto dá-lhe controlo total sobre a versão, a personalização e o acesso. Para instruções detalhadas sobre como implementar estas FDU, consulte o guia de implementação de FDUs no GitHub. Este guia fornece os scripts e os passos necessários para copiar as FDUs para o seu ambiente.

Localizações

O tradutor de SQL interativo está disponível nas seguintes localizações de processamento:

Descrição da região Nome da região Detalhes
Ásia-Pacífico
Deli asia-south2
Hong Kong asia-east2
Jacarta asia-southeast2
Melbourne australia-southeast2
Mumbai asia-south1
Osaca asia-northeast2
Seul asia-northeast3
Singapura asia-southeast1
Sydney australia-southeast1
Taiwan asia-east1
Tóquio asia-northeast1
Europa
Bélgica europe-west1 ícone de folha Baixo CO2
Berlim europe-west10
Multirregional da UE eu
Finlândia europe-north1 ícone de folha Baixo CO2
Frankfurt europe-west3
Londres europe-west2 ícone de folha Baixo CO2
Madrid europe-southwest1 ícone de folha Baixo CO2
Milão europe-west8
Países Baixos europe-west4 ícone de folha Baixo CO2
Paris europe-west9 ícone de folha Baixo CO2
Estocolmo europe-north2 ícone de folha Baixo CO2
Turim europe-west12
Varsóvia europe-central2
Zurique europe-west6 ícone de folha Baixo CO2
Americas
Columbus, Ohio us-east5
Dallas us-south1 ícone de folha Baixo CO2
Iowa us-central1 ícone de folha Baixo CO2
Las Vegas us-west4
Los Angeles us-west2
México northamerica-south1
Virgínia do Norte us-east4
Oregon us-west1 ícone de folha Baixo CO2
Quebeque northamerica-northeast1 ícone de folha Baixo CO2
São Paulo southamerica-east1 ícone de folha Baixo CO2
Salt Lake City us-west3
Santiago southamerica-west1 ícone de folha Baixo CO2
Carolina do Sul us-east1
Toronto northamerica-northeast2 ícone de folha Baixo CO2
Multirregião dos EUA us
África
Joanesburgo africa-south1
MiddleEast
Damã me-central2
Doha me-central1
Israel me-west1

Por predefinição, a funcionalidade regra de tradução está disponível nas seguintes localizações de processamento:

  • us (várias regiões nos EUA)
  • eu (multirregião da UE)
  • us-central1 (Iowa)
  • europe-west4 (Países Baixos)

As configurações de tradução baseadas no Gemini só estão disponíveis em localizações de processamento específicas. Para mais informações, consulte o artigo Localizações dos pontos finais do modelo da Google

Traduza uma consulta para GoogleSQL

Siga estes passos para traduzir uma consulta para GoogleSQL:

  1. Na Trusted Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. No painel Editor, clique em Mais e, de seguida, selecione Definições de tradução.

  3. Em Dialeto de origem, selecione o dialeto de SQL que quer traduzir.

  4. Opcional. Para Localização de processamento, selecione a localização onde quer que a tarefa de tradução seja executada. Por exemplo, se estiver na Europa e não quiser que os seus dados atravessem limites de localizações, selecione a região eu.

  5. Clique em Guardar.

  6. No painel Editor, clique em Mais e, de seguida, selecione Ativar tradução de SQL.

    O painel Editor divide-se em dois painéis.

  7. No painel esquerdo, introduza a consulta que quer traduzir.

  8. Clique em Traduzir.

    O BigQuery traduz a sua consulta para GoogleSQL e apresenta-a no painel direito. Por exemplo, a captura de ecrã seguinte mostra o SQL do Teradata traduzido:

    Apresenta uma consulta SQL do Teradata traduzida para GoogleSQL

  9. Opcional: para executar a consulta GoogleSQL traduzida, clique em Executar.

  10. Opcional: para voltar ao editor de SQL, clique em Mais e, de seguida, selecione Desativar tradução de SQL.

    O painel do Editor volta a ser um único painel.

Use o Gemini com o tradutor de SQL interativo

Pode configurar o tradutor de SQL interativo para ajustar a forma como o tradutor de SQL interativo traduz o seu SQL de origem. Pode fazê-lo fornecendo as suas próprias regras para utilização com o Gemini num ficheiro de configuração YAML ou fornecendo um ficheiro YAML de configuração que contenha metadados de objetos SQL ou informações de mapeamento de objetos.

Crie e aplique regras de tradução melhoradas pelo Gemini

Pode personalizar a forma como o tradutor de SQL interativo traduz o SQL criando regras de tradução. O tradutor de SQL interativo ajusta as traduções com base nas regras de tradução de SQL melhoradas pelo Gemini que lhe atribuir, o que lhe permite personalizar os resultados da tradução com base nas suas necessidades de migração. Esta funcionalidade só é suportada em determinadas localizações.

Para criar uma regra de tradução de SQL melhorada pelo Gemini, pode criá-la na consola ou criar um ficheiro YAML de configuração e carregá-lo para o Cloud Storage.

Consola

Para criar uma regra de tradução de SQL melhorada pelo Gemini para o SQL de entrada, escreva uma consulta SQL de entrada no editor de consultas e, de seguida, clique em ASSIST > Personalizar. (Pré-visualizar)

Personalize a entrada de tradução

Da mesma forma, para criar uma regra de tradução de SQL melhorada pelo Gemini para o SQL de saída, execute uma tradução interativa e, de seguida, clique em AJUDA > Personalizar esta tradução.

Personalize o resultado da tradução

Quando o menu Personalizar aparecer, continue com os passos seguintes.

  1. Use um ou ambos os comandos seguintes para criar uma regra de tradução:

    • No comando Localizar e substituir um padrão, especifique um padrão SQL que quer substituir no campo Substituir e um padrão SQL para o substituir no campo Por.

      Um padrão SQL pode conter qualquer número de declarações, cláusulas ou funções num script SQL. Quando cria uma regra com este comando, a tradução de SQL melhorada do Gemini identifica todas as instâncias desse padrão de SQL na consulta SQL e substitui-as dinamicamente por outro padrão de SQL. Por exemplo, pode usar este comando para criar uma regra que substitua todas as ocorrências de months_between (X,Y) por date_diff(X,Y,MONTH).

    • No campo Descreva uma alteração à saída, escreva uma alteração à saída da tradução de SQL em linguagem natural.

      Quando cria uma regra com este comando, a tradução de SQL melhorada pelo Gemini identifica o pedido e faz a alteração especificada à consulta SQL.

  2. Clique em Pré-visualizar.

  3. Na caixa de diálogo Sugestões geradas pelo Gemini, reveja as alterações feitas pela tradução de SQL melhorada pelo Gemini à consulta SQL com base na sua regra.

    Aplique alterações a partir do ficheiro YAML de configuração baseado no Gemini

  4. Opcional: para adicionar esta regra para utilização com traduções futuras, selecione a caixa de verificação Guardar este comando....

    As regras são guardadas no ficheiro YAML de configuração predefinido ou __default.ai_config.yaml. Este ficheiro YAML de configuração é guardado na pasta do Cloud Storage, conforme especificado no campo Localização da origem da configuração de tradução nas definições de tradução. Se a Localização de origem da configuração de tradução ainda não estiver definida, é apresentado um navegador de pastas que lhe permite selecionar uma. Um ficheiro YAML de configuração está sujeito a limitações de tamanho do ficheiro de configuração.

  5. Para aplicar as alterações sugeridas à consulta SQL, clique em Aplicar.

YAML

Para criar uma regra de tradução de SQL melhorada pelo Gemini, pode criar um ficheiro YAML de configuração baseado no Gemini e carregá-lo para o Cloud Storage. Para mais informações, consulte o artigo Crie um ficheiro YAML de configuração baseado no Gemini.

Depois de carregar uma regra de tradução de SQL melhorada pelo Gemini e carregá-la para o Cloud Storage, pode aplicar a regra da seguinte forma:

  1. Na Trusted Cloud consola, aceda à página BigQuery.

    Aceda ao BigQuery

  2. No editor de consultas, clique em Mais > Definições de tradução.

  3. No campo Localização da origem da configuração de tradução, especifique o caminho para o ficheiro YAML baseado no Gemini armazenado numa pasta do Cloud Storage.

  4. Clique em Guardar.

    Depois de guardar, execute uma tradução interativa. O tradutor interativo sugere alterações às suas traduções com base nas regras no ficheiro YAML de configuração, se estiver disponível.

Se estiver disponível uma sugestão do Gemini para a entrada com base na sua regra, é apresentado o diálogo Pré-visualizar alterações sugeridas, que mostra possíveis alterações à entrada de tradução. (Pré-visualizar)

Se estiver disponível uma sugestão do Gemini para o resultado com base na sua regra, é apresentada uma faixa de notificação no editor de código. Para rever e aplicar estas sugestões, faça o seguinte:

  1. Clique em Assistir > Ver sugestões em qualquer um dos lados do editor de código para rever as alterações sugeridas à consulta correspondente.

    Aplique alterações a partir do ficheiro YAML de configuração baseado no Gemini

  2. Na caixa de diálogo Sugestões geradas pelo Gemini, reveja as alterações feitas pelo Gemini à consulta SQL com base na sua regra de tradução.

  3. Para aplicar as alterações sugeridas ao resultado da tradução, clique em Aplicar.

Atualize o ficheiro YAML de configuração baseado no Gemini

Para atualizar um ficheiro YAML de configuração existente, faça o seguinte:

  1. Na caixa de diálogo Sugestões geradas no Gemini, clique em Ver ficheiro de configuração de regras do Gemini.

  2. Quando o editor de configuração for apresentado, selecione o ficheiro YAML de configuração que quer editar.

  3. Faça a alteração e clique em Guardar.

  4. Clique em Concluído para fechar o editor YAML.

  5. Execute uma tradução interativa para aplicar a regra atualizada.

Explicar uma tradução

Depois de executar uma tradução interativa, pode pedir uma explicação de texto gerada pelo Gemini. O texto gerado inclui um resumo da consulta SQL traduzida. O Gemini também identifica diferenças de tradução e inconsistências entre a consulta SQL de origem e a consulta GoogleSQL traduzida.

Para receber uma explicação da tradução de SQL gerada pelo Gemini, faça o seguinte:

  1. Para criar uma explicação da tradução de SQL gerada pelo Gemini, clique em Assistir e, de seguida, em Explicar esta tradução.

    Botão Explicar tradução.

Traduza com um ID de configuração de tradução em lote

Pode executar uma consulta interativa com as mesmas configurações de tradução que um trabalho de tradução em lote, fornecendo um ID de configuração de tradução em lote.

  1. No editor de consultas, clique em Mais > Definições de tradução.
  2. No campo ID de configuração de tradução, indique um ID de configuração de tradução em lote para aplicar a mesma configuração de tradução de uma tarefa de migração em lote do BigQuery concluída.

    Para encontrar o ID de configuração da tradução em lote de uma tarefa, selecione uma tarefa de tradução em lote na página Tradução de SQL e, de seguida, clique no separador Configuração da tradução. O ID da configuração de tradução em lote é apresentado como Nome do recurso.

  3. Clique em Guardar.

Traduza com configurações adicionais

Pode executar uma consulta interativa com configurações de tradução adicionais especificando ficheiros YAML de configuração armazenados numa pasta do Cloud Storage. As configurações de tradução podem incluir metadados de objetos SQL ou informações de mapeamento de objetos da base de dados de origem que podem melhorar a qualidade da tradução. Por exemplo, inclua informações DDL ou esquemas da base de dados de origem para melhorar a qualidade da tradução de SQL interativa.

Para especificar configurações de tradução fornecendo uma localização para os ficheiros de origem da configuração de tradução, faça o seguinte:

  1. No editor de consultas, clique em Mais > Definições de tradução.
  2. No campo Localização de origem da configuração de tradução, especifique o caminho para os ficheiros de configuração de tradução armazenados numa pasta do Cloud Storage.

    O tradutor de SQL interativo do BigQuery suporta ficheiros ZIP de metadados que contêm metadados de tradução e mapeamento de nomes de objetos. Para ver informações sobre como carregar ficheiros para o Cloud Storage, consulte o artigo Carregue objetos a partir de um sistema de ficheiros.

  3. Clique em Guardar.

Limitações do tamanho do ficheiro de configuração

Quando usa um ficheiro de configuração de tradução com o tradutor de SQL interativo do BigQuery, o ficheiro de metadados comprimido ou o ficheiro de configuração YAML tem de ter menos de 50 MB. Se o tamanho do ficheiro exceder 50 MB, o tradutor interativo ignora esse ficheiro de configuração durante a tradução e produz uma mensagem de erro semelhante à seguinte:

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 ficheiro de metadados é usar as flags --database ou --schema para extrair apenas metadados de bases de dados ou esquemas relevantes para as consultas de entrada de tradução. Para mais informações sobre a utilização destas flags quando gera ficheiros de metadados, consulte o artigo Flags globais.

Resolva problemas de erros de tradução

Seguem-se os erros encontrados com frequência quando usa o tradutor de SQL interativo.

Problemas de tradução de RelationNotFound ou AttributeNotFound

Para garantir a tradução mais precisa, pode introduzir as declarações da linguagem de definição de dados (DDL) para quaisquer tabelas usadas numa consulta antes da própria consulta. Por exemplo, se quiser traduzir a consulta do Amazon Redshift select table1.field1, table2.field1 from table1, table2 where table1.id = table2.id;, introduza as seguintes declaraçõ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 é cobrado qualquer valor pela utilização do tradutor de SQL interativo. No entanto, o armazenamento usado para guardar ficheiros de entrada e saída incorre nas taxas normais. Para mais informações, consulte os preços de armazenamento.

O que se segue?

Saiba mais sobre os seguintes passos na migração do armazém de dados: