Resumen

Escribir consultas SQL eficientes es una tarea fundamental en ingeniería de datos, análisis y ciencia de datos. Herramientas como GitHub Copilot y ChatGPT permiten acelerar este proceso, pero solo si se les proporciona el contexto adecuado. Aquí se explora cómo aprovechar estos modelos de lenguaje para generar queries SQL funcionales a partir de la estructura de una base de datos real.

¿Por qué el contexto del modelo de datos es esencial para los LLM?

Un modelo de lenguaje grande (LLM) no conoce las tablas, columnas ni relaciones de tu base de datos. Por eso, antes de pedirle cualquier consulta, es necesario cargar la estructura DDL (Data Definition Language) dentro del contexto que le proporcionas [0:55]. Esto incluye sentencias CREATE TABLE con nombres de tablas, columnas y referencias entre ellas.

Sin este paso, el modelo genera consultas genéricas que probablemente fallarán. La clave está en que el LLM pueda "ver" la definición de tablas como orders, order_details, products o regions para construir joins y filtros correctos.

¿Cómo generar queries con GitHub Copilot en Visual Studio Code?

Desde Visual Studio Code, con el plugin de Copilot y una extensión de Postgres instalados, se puede escribir un comentario descriptivo directamente en el archivo SQL [1:40]. Por ejemplo:

sql -- Crea una consulta para los cinco productos más vendidos por región, -- tomando en cuenta las tablas DDL de arriba.

Copilot interpreta ese comentario y sugiere código SQL. Sin embargo, la primera sugerencia no siempre es precisa. En el ejemplo, Copilot devolvió un simple LIMIT 5 global en lugar de un top cinco por cada región [3:10]. Aquí entra la experticia del profesional de datos: reconocer que la consulta necesita funciones de ventana.

¿Qué hacer cuando la sugerencia inicial es incorrecta?

Cuando el resultado no cumple el objetivo, se pueden tomar dos caminos:

  • Agregar instrucciones más específicas. Se le indicó a Copilot que usara ROW_NUMBER() y PARTITION BY para obtener el ranking por región [3:50].
  • Explorar múltiples soluciones. Con Ctrl + Enter en VS Code, Copilot presenta varias alternativas que el usuario puede evaluar.

Al seleccionar una de las opciones, la consulta resultante usaba ROW_NUMBER() particionado por región y ordenado por cantidad. Aun así presentó un error: la columna region_id era ambigua porque existía en más de una tabla del join [4:55]. Bastó con cualificarla como r.region_id para resolverlo.

sql SELECT r.region_id, region_description, product_name, total_quantity, rn FROM ( SELECT r.region_id, ..., ROW_NUMBER() OVER (PARTITION BY r.region_id ORDER BY SUM(quantity) DESC) as rn ... ) sub WHERE rn <= 5;

El resultado final mostró el top cinco de productos por región, con nombre del producto y cantidad vendida [5:30].

¿Cómo se compara ChatGPT para redactar consultas SQL?

ChatGPT funciona de forma similar, pero requiere que le envíes el modelo de datos en el prompt inicial [6:50]. Un enfoque efectivo es establecer un rol:

"Eres un experto en Postgres y SQL. Te daré un modelo de datos para que me ayudes a redactar distintas consultas."

Después se pega la estructura DDL y se formulan peticiones concretas. Por ejemplo, se le pidió una consulta que mostrara empleado, orden, customer, producto y fechas, filtrando pedidos enviados después de la fecha requerida [7:20].

ChatGPT generó una query con múltiples JOIN y una cláusula WHERE comparando shipped_date > required_date. Al copiarla y ejecutarla en Visual Studio Code, funcionó sin errores [8:15].

Otras herramientas como Bard o Bing también sirven para este propósito, siempre que reciban el contexto del modelo de datos.

¿Cuáles son las mejores prácticas al usar IA para SQL?

  • Siempre incluir el DDL de las tablas relevantes en el contexto.
  • Ser específico con funciones y técnicas deseadas: ROW_NUMBER, PARTITION BY, UPPER, concatenaciones.
  • Iterar sobre las soluciones. Los errores suelen ser menores: columnas ambiguas, alias faltantes o límites mal aplicados.
  • Validar cada resultado. La IA no reemplaza el conocimiento del equipo de datos; es un asistente que acelera la escritura de código [9:00].

Estas herramientas escriben código, proponen lógicas y ahorran tiempo, pero la responsabilidad de entender cuál es la mejor forma de construir una consulta sigue siendo del profesional. ¿Has probado generar queries complejas con alguna de estas herramientas? Comparte tu experiencia.