Traduce consultas con el traductor interactivo de SQL

En este documento, se describe cómo traducir una consulta de un dialecto de SQL diferente a una consulta en GoogleSQL mediante el traductor de SQL interactivo de BigQuery. El traductor interactivo de SQL puede ayudar a reducir el tiempo y el esfuerzo cuando migras cargas de trabajo a BigQuery. Este documento está dirigido a usuarios familiarizados con la consola de Google Cloud.

Si tu ubicación es compatible, puedes usar la función de reglas de traducción (Vista previa) para personalizar la forma en que el traductor interactivo de SQL traduce SQL.

Limitaciones

Debes acceder con una Cuenta de Google para usar el traductor interactivo de SQL. El traductor de SQL interactivo no admite el uso de identidades federadas.

Antes de comenzar

Si tu proyecto de Google Cloud CLI se creó antes del 15 de febrero de 2022, habilita la API de BigQuery Migration de la siguiente manera:

  1. En la consola de Google Cloud, ve a la página API de BigQuery Migration.

    Ir a la API de BigQuery Migration

  2. Haz clic en Habilitar.

Permisos y roles

En esta sección se describen los permisos de Identity and Access Management (IAM) que necesitarás para usar el traductor interactivo de SQL y las funciones predefinidas de IAM que otorgan esos permisos. En la sección, también se describen los permisos necesarios para establecer parámetros de configuración de traducción adicionales.

Permisos para usar el traductor interactivo de SQL

Para obtener los permisos que necesitas para usar el traductor interactivo, pídele a tu administrador que te otorgue el rol de IAM de editor de MigrationWorkflow (roles/bigquerymigration.editor) en el recurso parent. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para usar el traductor interactivo. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para usar el traductor interactivo:

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

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Permisos para establecer opciones de configuración de traducción adicionales

Puedes establecer configuraciones de traducción adicionales mediante los campos ID de configuración de traducción y Ubicación del origen de la configuración de traducción en la configuración de traducción. Para establecer esta configuración de traducción, necesitas los siguientes permisos:

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

El siguiente rol predefinido de IAM proporciona los permisos que necesitas para establecer opciones de configuración de traducción adicionales:

  • roles/bigquerymigration.viewer

Para obtener más información sobre IAM de BigQuery, consulta Control de acceso con IAM.

Dialectos de SQL compatibles

El traductor de SQL interactivo de BigQuery puede traducir los siguientes dialectos de SQL a GoogleSQL:

  • SQL de Amazon Redshift
  • Apache HiveQL y Beeline CLI
  • SQL de IBM Netezza y NZPLSQL
  • Teradata y Teradata Vantage:
    • SQL
    • Consulta básica de Teradata (BTEQ)
    • Teradata Parallel Transport (TPT)

Además, se admite la traducción de los siguientes dialectos de SQL en la vista previa:

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

Ubicaciones

El traductor interactivo de SQL está disponible en las siguientes ubicaciones de procesamiento:

Descripción de la región Nombre de la región Detalles
Asia-Pacífico
Tokio asia-northeast1
Bombay asia-south1
Singapur asia-southeast1
Sídney australia-southeast1
Europa
UE multirregión eu
Varsovia europe-central2
Finlandia europe-north1 ícono de hoja CO2 bajo
Madrid europe-southwest1 ícono de hoja CO2 bajo
Bélgica europe-west1 ícono de hoja CO2 bajo
Londres europe-west2 ícono de hoja CO2 bajo
Fráncfort europe-west3 ícono de hoja CO2 bajo
Países Bajos europe-west4 ícono de hoja CO2 bajo
Zúrich europe-west6 ícono de hoja CO2 bajo
París europe-west9 ícono de hoja CO2 bajo
Turín europe-west12
América
São Paulo southamerica-east1 ícono de hoja CO2 bajo
EE.UU. multirregión us
Iowa us-central1 ícono de hoja CO2 bajo
Carolina del Sur us-east1
Virginia del Norte us-east4
Columbus, Ohio us-east5
Dallas us-south1 ícono de hoja CO2 bajo
Oregón us-west1 ícono de hoja CO2 bajo
Los Ángeles us-west2
Salt Lake City us-west3

La función de regla de traducción está disponible en las siguientes ubicaciones de procesamiento:

  • us (EE.UU. multirregión)
  • eu (UE multirregión)
  • us-central1 (Iowa)
  • europe-west4 (Países Bajos)

Traduce una consulta a GoogleSQL

Sigue estos pasos para traducir una consulta a GoogleSQL:

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el panel Editor, haz clic en Más y, luego, selecciona Configuración de traducción.

  3. En Dialecto de origen, selecciona el dialecto de SQL que deseas traducir.

  4. Opcional. En Ubicación de procesamiento, selecciona la ubicación en la que deseas que se ejecute el trabajo de traducción. Por ejemplo, si estás en Europa y no quieres que tus datos pasen ningún límite de ubicación, selecciona la región eu.

  5. Haz clic en Guardar.

  6. En el panel Editor, haz clic en Más y, luego, selecciona Habilitar la traducción de SQL.

    El panel Editor se divide en dos paneles.

  7. En el panel izquierdo, ingresa la consulta que deseas traducir.

  8. Haz clic en Traducir.

    BigQuery traduce tu consulta en GoogleSQL y la muestra en el panel derecho. Por ejemplo, en la siguiente captura de pantalla se muestra SQL de Teradata traducido:

    Muestra una consulta de SQL de Teradata traducida a GoogleSQL.

  9. Opcional: Para ejecutar la consulta de GoogleSQL traducida, haz clic en Ejecutar.

  10. Para volver al editor de SQL, haz clic en Más y, luego, selecciona Inhabilitar la traducción de SQL (opcional).

    El panel del Editor regresa a un solo panel.

Configura el traductor de SQL interactivo

Puedes configurar el traductor de SQL interactivo para ajustar la forma en que este traduce tu SQL de origen. Para ello, proporciona tus propias reglas para usar con Gemini en un archivo de configuración de YAML o proporciona un archivo de configuración de YAML que contenga metadatos de objetos SQL o información de asignación de objetos.

Crea una regla de traducción

Puedes personalizar la forma en que el traductor interactivo de SQL traduce SQL mediante la creación de reglas de traducción. El traductor interactivo de SQL ajusta sus traducciones según cualquier regla de traducción de SQL mejorada por Gemini que le asignes, lo que te permite personalizar los resultados de traducción según tus necesidades de migración. Esta función solo se admite en ciertas ubicaciones.

Para crear una regla de traducción de SQL mejorada con Gemini, haz una de las siguientes acciones:

Console

Para crear una regla de traducción de SQL mejorada con Gemini, haz lo siguiente:

  1. Después de ejecutar una traducción interactiva, haz clic en Personalizar.

    Botón Personalizar traducción.

  2. Usa uno de los siguientes mensajes o ambos para crear una regla de traducción:

    • En el mensaje Reemplazar un patrón de SQL por otro, especifica un patrón de SQL que desees reemplazar en el campo Reemplazar y un patrón SQL para reemplazar en el campo Con.

      Un patrón de SQL puede contener cualquier cantidad de instrucciones, cláusulas o funciones en una secuencia de comandos de SQL. Cuando creas una regla con este mensaje, la traducción de SQL mejorada de Gemini identifica cualquier instancia de ese patrón de SQL en el resultado de la traducción y lo reemplaza de forma dinámica por otro patrón de SQL. Por ejemplo, puedes usar este mensaje para crear una regla que reemplace todos los casos de months_between (X,Y) por date_diff(X,Y,MONTH).

    • En el campo Describe un cambio en el resultado de la traducción, describe un cambio en el resultado de la traducción de SQL en lenguaje natural.

      Cuando creas una regla con este mensaje, la traducción de SQL mejorada por Gemini identifica la solicitud y realiza el cambio especificado en el resultado de la traducción.

  3. Haz clic en Vista previa.

  4. En el diálogo Vista previa de cambios sugeridos, revisa los cambios que realizó la traducción de SQL mejorada por Gemini en el resultado de la traducción según tu regla.

  5. Opcional: Para agregar esta regla a fin de usarla con traducciones futuras, selecciona la casilla de verificación Agregar regla….

    Las reglas se guardan en el archivo YAML de configuración predeterminado o __default.ai_config.yaml. Este archivo YAML de configuración se guarda en la carpeta de Cloud Storage como se especifica en el campo Ubicación del origen de la configuración de traducción en la configuración de traducción. Un archivo YAML de configuración puede admitir hasta 10 reglas de traducción y está sujeto a limitaciones de tamaño de archivo de configuración.

  6. Para aplicar los cambios sugeridos al resultado de la traducción, haz clic en Aplicar.

YAML

Para crear una regla de traducción de SQL mejorada con Gemini, crea un archivo YAML de configuración y súbelo a Cloud Storage.

Requisitos

El archivo YAML de la regla de traducción debe tener el sufijo .ai_config.yaml. Por ejemplo, rules_1.ai_config.yaml

Limitaciones

Campos disponibles

En el siguiente ejemplo, se muestra cómo puedes crear un archivo YAML de reglas de traducción mejoradas con Gemini usando una instrucción de lenguaje natural.

rewrite_target: TARGET
instruction: NL_PROMPT

Reemplaza lo siguiente:

  • TARGET: Especifica si deseas aplicar la regla de traducción a tu SQL de entrada, SOURCE_SQL, o al SQL de salida, TARGET_SQL (predeterminado).
  • NL_PROMPT: En lenguaje natural, describe un cambio en el SQL de destino. La traducción de SQL mejorada con Gemini identifica la solicitud y realiza el cambio especificado.

También puedes crear un archivo YAML de reglas de traducción con varias reglas de traducción (hasta 10). Cada regla puede constar de una instrucción en lenguaje natural (instruction) que describe una regla y uno o más ejemplos para reemplazar un patrón de SQL (input) por otro (output). Una regla de traducción puede usar el campo instruction, uno o más campos examples, o ambos tipos de campos para describir tu regla.

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


Reemplaza lo siguiente:

  • NL_RULE_1 (opcional): En lenguaje natural, describe una regla de traducción.
  • RULE_1_INPUT_1 (opcional): Es un patrón de SQL que deseas reemplazar.
  • RULE_1_OUTPUT_1 (opcional): Es el patrón de SQL esperado después de reemplazar input.

    Puedes agregar más translation_rules (hasta 10) y más examples según sea necesario.

Para obtener ejemplos de archivos YAML de reglas de traducción de SQL mejorados con Gemini, consulta Ejemplos de archivos YAML de reglas de traducción.

Aplica un archivo YAML de reglas de traducción a tu próxima traducción

Para aplicar un archivo YAML de reglas de traducción, haz lo siguiente:

  1. En el editor de consultas, haz clic en Más > Configuración de traducción.
  2. En el campo Ubicación del origen de la configuración de traducción, especifica la ruta de acceso al archivo YAML de la regla de traducción almacenado en una carpeta de Cloud Storage.
  3. Haz clic en Guardar.

Ejemplos de archivos YAML de reglas de traducción

Los siguientes ejemplos son de archivos YAML de reglas de traducción de SQL mejorados con Gemini.

Ejemplo 1: Especifica una función que se reemplazará por otra.

translation_rules:
- instruction:  "Remove upper() function"
  examples:
  - input: "upper(X)"
    output: "X"

Ejemplo 2: Especifica varias reglas de traducción en un solo archivo 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."

Traduce con un ID de configuración de traducción por lotes

Puedes ejecutar una consulta interactiva con las mismas configuraciones de traducción que un trabajo de traducción por lotes si proporcionas un ID de configuración de traducción por lotes.

  1. En el editor de consultas, haz clic en Más > Configuración de traducción.
  2. En el campo ID de configuración de traducción, proporciona un ID de configuración de traducción por lotes para aplicar la misma configuración de traducción a partir de un trabajo de migración por lotes de BigQuery completado.

    Para encontrar el ID de configuración de la traducción por lotes de un trabajo, selecciona un trabajo de traducción por lotes de la página Traducción de SQL y haz clic en la pestaña Configuración de traducción. El ID de configuración de traducción por lotes se muestra como Nombre del recurso.

  3. Haz clic en Guardar.

Cómo traducir con parámetros de configuración adicionales

Puedes ejecutar una consulta interactiva con configuraciones de traducción adicionales si especificas archivos YAML de configuración almacenados en una carpeta de Cloud Storage. Las configuraciones de traducción pueden incluir metadatos de objeto SQL o información de asignación de objetos de la base de datos de origen que puedan mejorar la calidad de la traducción. Por ejemplo, incluye información o esquemas de DDL de la base de datos de origen para mejorar la calidad de la traducción interactiva de SQL.

Para especificar configuraciones de traducción, proporciona una ubicación a los archivos de origen de configuración de traducción y haz lo siguiente:

  1. En el editor de consultas, haz clic en Más > Configuración de traducción.
  2. En la sección Ubicación del origen de la configuración de traducción, especifica la ruta a un archivo de configuración de traducción almacenado en una carpeta de Cloud Storage.

    El traductor interactivo de SQL de BigQuery admite archivos de configuración que contienen metadatos de traducción y asignación de nombres de objetos. Para obtener información sobre cómo subir archivos a Cloud Storage, consulta Carga objetos desde un sistema de archivos.

  3. Haz clic en Guardar.

Limitaciones del tamaño del archivo de configuración

Cuando usas un archivo de configuración de traducción con el traductor interactivo de SQL de BigQuery, el tamaño del archivo de metadatos comprimido o del archivo de configuración YAML debe ser inferior a 50 MB. Si el tamaño del archivo supera los 50 MB, el traductor interactivo omite ese archivo de configuración durante la traducción y produce un mensaje de error similar al siguiente:

CONFIG ERROR: Skip reading file "gs://metadata-file.zip". File size (150,000,000 bytes) exceeds limit (50 MB).

Un método que permite reducir el tamaño del archivo de metadatos es usar las marcas --database o --schema para extraer solo los metadatos de las bases de datos o los esquemas que son relevantes para las consultas de entrada de traducción. Para obtener más información sobre el uso de estas marcas cuando generas archivos de metadatos, consulta Marcas globales.

Soluciona problemas de errores de traducción

Los siguientes son errores que se suelen encontrar cuando se usa el traductor interactivo de SQL.

Problemas de traducción de RelationNotFound o AttributeNotFound

Para garantizar la traducción más precisa, ingresa las declaraciones del lenguaje de definición de datos (DDL) de todas las tablas usadas en una consulta antes de la consulta. Por ejemplo, si deseas traducir la consulta select table1.field1, table2.field1 from table1, table2 where table1.id = table2.id; de Amazon Redshift, debes ingresar las siguientes instrucciones de SQL en el traductor interactivo de SQL:

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;

Precios

No se aplican cargos por usar el traductor interactivo de SQL. Sin embargo, se aplican las tarifas normales al almacenamiento que se usa para almacenar archivos de entrada y salida. Para obtener más información, consulta los precios de almacenamiento.

¿Qué sigue?

Obtén más información sobre los siguientes pasos en la migración de almacenes de datos: