Traducir consultas con el traductor de SQL interactivo
En este documento se describe cómo traducir una consulta de un dialecto de SQL diferente a una consulta de GoogleSQL mediante el traductor de SQL interactivo de BigQuery. El traductor interactivo de SQL puede ayudarte a reducir el tiempo y el esfuerzo necesarios para migrar cargas de trabajo a BigQuery. Este documento está dirigido a usuarios que conocen la Google Cloud consola.
Si tu ubicación es compatible, puedes usar la función de reglas de traducción para personalizar la forma en que el traductor interactivo de SQL traduce el SQL.
Antes de empezar
Si tu proyecto de la CLI de Google Cloud se creó antes del 15 de febrero del 2022, habilita la API BigQuery Migration de la siguiente manera:
En la Google Cloud consola, ve a la página API BigQuery Migration.
Haz clic en Enable (Habilitar).
Permisos y roles
En esta sección se describen los permisos de gestión de identidades y accesos (IAM) que necesitas para usar el traductor interactivo de SQL, incluidos los roles de IAM predefinidos que conceden esos permisos. En esta sección también se describen los permisos necesarios para configurar traducciones adicionales.
Permisos para usar el traductor de SQL interactivo
Para obtener los permisos que necesitas para usar el traductor interactivo, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Editor de MigrationWorkflow (roles/bigquerymigration.editor
) en el recurso parent
.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar 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 se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para usar el traductor interactivo, se necesitan los siguientes permisos:
-
bigquerymigration.workflows.create
-
bigquerymigration.workflows.get
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Permisos para configurar ajustes de traducción adicionales
Puede configurar otras opciones de traducción mediante los campos ID de configuración de traducción y Ubicación de la fuente de configuración de traducción en los ajustes de traducción. Para configurar estas opciones de traducción, necesitas los siguientes permisos:
bigquerymigration.workflows.get
bigquerymigration.workflows.list
El siguiente rol de gestión de identidades y accesos predefinido proporciona los permisos que necesitas para configurar traducciones adicionales:
roles/bigquerymigration.viewer
Para obtener más información sobre la gestión de identidades y accesos de BigQuery, consulta el artículo sobre el control de acceso con la gestión de identidades y accesos.
Dialectos de SQL admitidos
El traductor interactivo de SQL de BigQuery puede traducir los siguientes dialectos de SQL a GoogleSQL:
- SQL de Amazon Redshift
- Apache HiveQL y Beeline CLI
- IBM Netezza SQL y NZPLSQL
- Teradata y Teradata Vantage:
- SQL
- Basic Teradata Query (BTEQ)
- Teradata Parallel Transport (TPT)
Además, se admite la traducción de los siguientes dialectos de SQL en versión preliminar:
- Apache Spark SQL
- T-SQL de Azure Synapse
- Greenplum SQL
- IBM DB2 SQL
- MySQL SQL
- Oracle SQL, PL/SQL y Exadata
- SQL de PostgreSQL
- Trino o PrestoSQL
- SQL de Snowflake
- T-SQL de SQL Server
- SQLite
- Vertica SQL
Gestionar funciones de SQL no admitidas con UDFs auxiliares
Al traducir SQL de un dialecto de origen a BigQuery, es posible que algunas funciones no tengan un equivalente directo. Para solucionar este problema, BigQuery Migration Service (y la comunidad de BigQuery en general) proporcionan funciones definidas por el usuario (UDFs) auxiliares que replican el comportamiento de estas funciones de dialecto de origen no admitidas.
Estas funciones definidas por el usuario se suelen encontrar en el conjunto de datos público bqutil
, lo que permite que las consultas traducidas hagan referencia a ellas inicialmente con el formato bqutil.<dataset>.<function>()
. Por ejemplo, bqutil.fn.cw_count()
.
Cuestiones importantes sobre los entornos de producción:
Aunque bqutil
ofrece un acceso cómodo a estas funciones definidas por el usuario auxiliares para la traducción y las pruebas iniciales, no se recomienda depender directamente de bqutil
para las cargas de trabajo de producción por varios motivos:
- Control de versiones: el proyecto
bqutil
aloja la versión más reciente de estas funciones definidas por el usuario, lo que significa que sus definiciones pueden cambiar con el tiempo. Si dependes directamente debqutil
, se pueden producir comportamientos inesperados o cambios en tus consultas de producción si se actualiza la lógica de una UDF. - Aislamiento de dependencias: al implementar UDFs en tu propio proyecto, tu entorno de producción se aísla de los cambios externos.
- Personalización: es posible que tenga que modificar u optimizar estas funciones definidas por el usuario para que se adapten mejor a la lógica de su empresa o a sus requisitos de rendimiento. Esto solo es posible si están en tu proyecto.
- Seguridad y gobernanza: las políticas de seguridad de tu organización pueden restringir el acceso directo a conjuntos de datos públicos, como
bqutil
, para el tratamiento de datos de producción. Copiar las funciones definidas por el usuario en tu entorno controlado se ajusta a estas políticas.
Para desplegar UDFs auxiliares en tu proyecto, sigue estos pasos:
Para un uso fiable y estable en producción, debe implementar estas UDFs auxiliares en su propio proyecto y conjunto de datos. De esta forma, tendrás pleno control sobre su versión, personalización y acceso. Para obtener instrucciones detalladas sobre cómo implementar estas funciones definidas por el usuario, consulta la guía de implementación de funciones definidas por el usuario en GitHub. En esta guía se proporcionan las secuencias de comandos y los pasos necesarios para copiar las funciones definidas por el usuario en tu entorno.
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 | |||
Deli | asia-south2 |
||
Hong Kong | asia-east2 |
||
Yakarta | asia-southeast2 |
||
Melbourne | australia-southeast2 |
||
Bombay | asia-south1 |
||
Osaka | asia-northeast2 |
||
Seúl | asia-northeast3 |
||
Singapur | asia-southeast1 |
||
Sídney | australia-southeast1 |
||
Taiwán | asia-east1 |
||
Tokio | asia-northeast1 |
||
Europa | |||
Bélgica | europe-west1 |
|
|
Berlín | europe-west10 |
|
|
Multirregional de la UE | eu |
||
Finlandia | europe-north1 |
|
|
Fráncfort | europe-west3 |
||
Londres | europe-west2 |
|
|
Madrid | europe-southwest1 |
|
|
Milán | europe-west8 |
||
Países Bajos | europe-west4 |
|
|
París | europe-west9 |
|
|
Estocolmo | europe-north2 |
|
|
Turín | europe-west12 |
||
Varsovia | europe-central2 |
||
Zúrich | europe-west6 |
|
|
América | |||
Columbus (Ohio) | us-east5 |
||
Dallas | us-south1 |
|
|
Iowa | us-central1 |
|
|
Las Vegas | us-west4 |
||
Los Ángeles | us-west2 |
||
México | northamerica-south1 |
||
Norte de Virginia | us-east4 |
||
Oregón | us-west1 |
|
|
Quebec | northamerica-northeast1 |
|
|
São Paulo | southamerica-east1 |
|
|
Salt Lake City | us-west3 |
||
Santiago | southamerica-west1 |
|
|
Carolina del Sur | us-east1 |
||
Toronto | northamerica-northeast2 |
|
|
Multirregional de EE. UU. | us |
||
África | |||
Johannesburgo | africa-south1 |
||
MiddleEast | |||
Dammam | me-central2 |
||
Doha | me-central1 |
||
Israel | me-west1 |
De forma predeterminada, la función regla de traducción está disponible en las siguientes ubicaciones de procesamiento:
us
(multirregional de EE. UU.)eu
(multirregional de la UE)us-central1
(Iowa)europe-west4
(Países Bajos)
Las configuraciones de traducción basadas en Gemini solo están disponibles en determinadas ubicaciones de procesamiento. Para obtener más información, consulta Ubicaciones de los endpoints de los modelos de Google.
Traducir una consulta a GoogleSQL
Sigue estos pasos para traducir una consulta a GoogleSQL:
En la Google Cloud consola, ve a la página BigQuery.
En el panel Editor, haz clic en Más y, a continuación, selecciona Configuración de traducción.
En Dialecto de origen, selecciona el dialecto SQL que quieras traducir.
Opcional. En Ubicación de procesamiento, selecciona la ubicación en la que quieras que se ejecute el trabajo de traducción. Por ejemplo, si te encuentras en Europa y no quieres que tus datos crucen ninguna frontera, selecciona la región
eu
.Haz clic en Guardar.
En el panel Editor, haz clic en Más y, a continuación, selecciona Habilitar traducción de SQL.
El panel Editor se divide en dos.
En el panel de la izquierda, introduce la consulta que quieras traducir.
Haz clic en Traducir.
BigQuery traduce tu consulta a GoogleSQL y la muestra en el panel de la derecha. Por ejemplo, en la siguiente captura de pantalla se muestra el SQL de Teradata traducido:
Opcional: Para ejecutar la consulta de GoogleSQL traducida, haz clic en Ejecutar.
Opcional: Para volver al editor de SQL, haz clic en Más y, a continuación, selecciona Inhabilitar traducción de SQL.
El panel Editor vuelve a ser un único panel.
Usar Gemini con el traductor de SQL interactivo
Puedes configurar el traductor de SQL interactivo para ajustar cómo traduce el SQL de origen. Para ello, puedes proporcionar tus propias reglas para usarlas con Gemini en un archivo de configuración YAML o proporcionar un archivo YAML de configuración que contenga metadatos de objetos SQL o información de asignación de objetos.
Crear y aplicar reglas de traducción mejoradas con Gemini
Puedes personalizar la forma en que el traductor interactivo de SQL traduce el lenguaje SQL creando reglas de traducción. El traductor interactivo de SQL ajusta sus traducciones en función de las reglas de traducción de SQL mejoradas con Gemini que le asignes, lo que te permite personalizar los resultados de la traducción en función de tus necesidades de migración. Esta función solo está disponible en determinadas ubicaciones.
Para crear una regla de traducción de SQL mejorada con Gemini, puedes crearla en la consola o crear un archivo YAML de configuración y subirlo a Cloud Storage.
Consola
Para crear una regla de traducción de SQL mejorada con Gemini para el SQL de entrada, escribe una consulta de SQL de entrada en el editor de consultas y, a continuación, haz clic en ASISTIR > Personalizar. Vista previa
Del mismo modo, para crear una regla de traducción de SQL mejorada con Gemini para el SQL de salida, ejecuta una traducción interactiva y, a continuación, haz clic en ASISTIR > Personalizar esta traducción.
Cuando aparezca el menú Personalizar, sigue estos pasos.
Usa una o ambas de las siguientes peticiones para crear una regla de traducción:
En la petición Buscar y reemplazar un patrón, especifica un patrón de SQL que quieras sustituir en el campo Reemplazar y un patrón de SQL por el que quieras sustituirlo en el campo Por.
Un patrón de SQL puede contener cualquier número de instrucciones, cláusulas o funciones en una secuencia de comandos de SQL. Cuando creas una regla con esta petición, la traducción de SQL mejorada con Gemini identifica cualquier instancia de ese patrón de SQL en la consulta de SQL y la sustituye dinámicamente por otro patrón de SQL. Por ejemplo, puedes usar esta petición para crear una regla que sustituya todas las instancias de
months_between (X,Y)
pordate_diff(X,Y,MONTH)
.En el campo Describe a change to the output (Describe un cambio en el resultado), escribe en lenguaje natural el cambio que quieres hacer en el resultado de la traducción de SQL.
Cuando creas una regla con esta petición, la traducción de SQL mejorada con Gemini identifica la solicitud y hace el cambio especificado en la consulta de SQL.
Haz clic en Vista previa.
En el cuadro de diálogo Sugerencias generadas por Gemini, revisa los cambios que ha hecho la traducción de SQL mejorada con Gemini en la consulta de SQL según tu regla.
Opcional: Para añadir esta regla y usarla en futuras traducciones, selecciona la casilla Guardar esta petición....
Las reglas se guardan en el archivo YAML de configuración predeterminado o en
__default.ai_config.yaml
. Este archivo YAML de configuración se guarda en la carpeta de Cloud Storage especificada en el campo Ubicación de origen de la configuración de traducción de los ajustes de traducción. Si la opción Ubicación de origen de la configuración de traducción aún no está definida, aparecerá un explorador de carpetas que te permitirá seleccionar una. Los archivos YAML de configuración están sujetos a limitaciones de tamaño.Para aplicar los cambios sugeridos a la consulta SQL, haz clic en Aplicar.
YAML
Para crear una regla de traducción de SQL mejorada con Gemini, puedes crear un archivo YAML de configuración basado en Gemini y subirlo a Cloud Storage. Para obtener más información, consulta Crear un archivo YAML de configuración basado en Gemini.
Una vez que hayas subido una regla de traducción de SQL mejorada con Gemini a Cloud Storage, podrás aplicarla siguiendo estos pasos:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, haz clic en Más > Configuración de traducción.
En el campo Translation Configuration Source Location (Ubicación de origen de la configuración de traducción), especifica la ruta al archivo YAML basado en Gemini almacenado en una carpeta de Cloud Storage.
Haz clic en Guardar.
Una vez guardada, haz una traducción interactiva. El traductor interactivo sugiere cambios en tus traducciones en función de las reglas del archivo YAML de configuración, si está disponible.
Si hay una sugerencia de Gemini disponible para la entrada en función de tu regla, aparecerá el cuadro de diálogo Vista previa de los cambios sugeridos, que muestra los posibles cambios en la entrada de traducción. Vista previa
Si hay una sugerencia de Gemini disponible para el resultado en función de tu regla, aparecerá un banner de notificación en el editor de código. Para revisar y aplicar estas sugerencias, haz lo siguiente:
Haz clic en Asistente > Ver sugerencias a ambos lados del editor de código para volver a ver los cambios sugeridos en la consulta correspondiente.
En el cuadro de diálogo Sugerencias generadas por Gemini, revisa los cambios que ha hecho Gemini en la consulta SQL en función de tu regla de traducción.
Para aplicar los cambios sugeridos al resultado de la traducción, haz clic en Aplicar.
Actualizar el archivo YAML de configuración basado en Gemini
Para actualizar un archivo YAML de configuración, sigue estos pasos:
En el cuadro de diálogo Sugerencias generadas en Gemini, haz clic en Ver archivo de configuración de reglas de Gemini.
Cuando aparezca el editor de configuración, seleccione el archivo YAML de configuración que quiera editar.
Aplica los cambios y haz clic en Guardar.
Cierra el editor de YAML haciendo clic en Hecho.
Ejecuta una traducción interactiva para aplicar la regla actualizada.
Explicar una traducción
Después de hacer una traducción interactiva, puedes pedir una explicación de texto generada por Gemini. El texto generado incluye un resumen de la consulta SQL traducida. Gemini también identifica las diferencias e incoherencias de traducción entre la consulta SQL de origen y la consulta de GoogleSQL traducida.
Para obtener una explicación de la traducción de SQL generada por Gemini, haz lo siguiente:
Para crear una explicación de la traducción de SQL generada por Gemini, haz clic en Asistencia y, a continuación, en Explica esta traducción.
Traducir 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 proporcionando un ID de configuración de traducción por lotes.
- En el editor de consultas, haz clic en Más > Configuración de traducción.
En el campo ID de configuración de traducción, proporcione un ID de configuración de traducción por lotes para aplicar la misma configuración de traducción de una tarea de migración por lotes de BigQuery completada.
Para encontrar el ID de configuración de traducción por lotes de un trabajo, selecciona un trabajo de traducción por lotes en la página Traducción de SQL y, a continuación, haz clic en la pestaña Configuración de traducción. El ID de la configuración de traducción por lotes se indica como Nombre del recurso.
Haz clic en Guardar.
Traducir con configuraciones adicionales
Puedes ejecutar una consulta interactiva con configuraciones de traducción adicionales especificando archivos YAML de configuración almacenados en una carpeta de Cloud Storage. Las configuraciones de traducción pueden incluir metadatos de objetos SQL o información de asignación de objetos de la base de datos de origen que pueden mejorar la calidad de la traducción. Por ejemplo, incluye información de DDL o esquemas de la base de datos de origen para mejorar la calidad de la traducción interactiva de SQL.
Para especificar las configuraciones de traducción proporcionando una ubicación a los archivos de origen de configuración de traducción, haz lo siguiente:
- En el editor de consultas, haz clic en Más > Configuración de traducción.
En el campo Ubicación de origen de la configuración de traducción, especifica la ruta a los archivos de configuración de traducción almacenados en una carpeta de Cloud Storage.
El traductor interactivo de SQL de BigQuery admite archivos ZIP de metadatos 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 Subir objetos desde un sistema de archivos.
Haz clic en Guardar.
Limitaciones de tamaño de los archivos de configuración
Cuando usas un archivo de configuración de traducción con el traductor interactivo de SQL de BigQuery, el archivo de metadatos comprimido o el archivo de configuración YAML deben tener un tamaño inferior a 50 MB. Si el tamaño del archivo supera los 50 MB, el traductor interactivo omitirá ese archivo de configuración durante la traducción y mostrará 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).
Una forma de 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 sean relevantes para las consultas de entrada de traducción. Para obtener más información sobre cómo usar estas marcas al generar archivos de metadatos, consulta Marcas globales.
Solucionar errores de traducción
A continuación, se indican algunos de los errores que se suelen producir al usar el traductor de SQL interactivo.
Problemas de traducción de RelationNotFound
o AttributeNotFound
Para que la traducción sea lo más precisa posible, puedes introducir las instrucciones del lenguaje de definición de datos (DDL) de las tablas que se usen en una consulta antes de la propia consulta. Por ejemplo, si quieres traducir la consulta de Amazon Redshift select table1.field1, table2.field1
from table1, table2 where table1.id = table2.id;
, debes introducir las siguientes instrucciones SQL en el traductor de SQL interactivo:
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
El uso del traductor de SQL interactivo no conlleva ningún coste. Sin embargo, el almacenamiento que se usa para almacenar archivos de entrada y salida está sujeto a las tarifas normales. Para obtener más información, consulta los precios de almacenamiento.
Siguientes pasos
Consulta más información sobre los siguientes pasos de la migración de almacenes de datos:
- Información general sobre la migración
- Evaluación de la migración
- Información general sobre la transferencia de esquemas y datos
- Traducción de SQL por lotes
- Flujos de datos
- Gobierno y seguridad de los datos
- Herramienta de validación de datos