En el entorno SAS© Viya™, el lenguaje FedSQL es el estándar para interactuar con los datos. Si bien es excelente para traducir consultas estándar (SQL ANSI) a bases de datos (Pass-Through Implícito), muestra sus límites cuando se desea utilizar funcionalidades propietarias del motor de base de datos, como funciones geoespaciales o el análisis de JSON.
Este artículo se centra en una técnica potente: el Pass-Through Explícito, ilustrado aquí con la extracción de datos JSON almacenados en PostgreSQL.
El Desafío: Los límites de la traducción automática
Cuando escribe una consulta FedSQL clásica, SAS© intenta traducirla a SQL nativo para enviarla a la base de datos. Sin embargo, si su consulta contiene operadores que SAS© no conoce, la traducción falla o SAS© intenta recuperar todos los datos para procesarlos localmente.
Tomemos el caso de PostgreSQL, que posee excelentes capacidades de procesamiento JSON a través de operadores específicos como -> o ->>. Si utiliza estos símbolos directamente en una consulta FedSQL estándar, obtendrá un error de sintaxis, porque el intérprete SAS© no los reconoce.
La Solución: El Pass-Through Explícito
La solución consiste en utilizar la cláusula CONNECTION TO. Esta sintaxis crea un "túnel" directo a la base de datos.
El principio es simple: Todo lo que se escribe dentro de la cláusula de conexión es invisible para el intérprete SAS©/FedSQL. SAS© se limita a tomar la cadena de caracteres y pasarla tal cual al motor PostgreSQL.
Sintaxis General
Caso Concreto: Análisis de datos JSON
Imaginemos una tabla PostgreSQL que contiene una columna data_json que almacena información en bruto. Queremos extraer un campo específico de este JSON y calcular una agregación, sin cargar nunca el JSON en bruto en CAS (lo que sería pesado e inútil).
El Código
Análisis Técnico
He aquí por qué este enfoque es óptimo:
La Invisibilidad para el intérprete (Black Box):
El intérprete FedSQL no "ve" los operadores -> y ->>. Por lo tanto, no intenta validarlos. Si los viera, devolvería un error de sintaxis ya que estos símbolos no existen en el estándar SQL ANSI compatible con SAS©. Es PostgreSQL quien recibe la cadena en bruto y la interpreta.
Uso de los Operadores Nativos:
->: Recupera un campo de objeto JSON como objeto JSON.
->>: Recupera un campo de objeto JSON como texto (String).
Estos operadores permiten navegar por la estructura jerárquica de los datos directamente en el motor de almacenamiento.
Rendimiento y "Movimiento de Datos":
Este es el punto crucial.
Sin Pass-Through Explícito: Habría que cargar toda la tabla (con el JSON pesado) en CAS, y luego intentar analizar el texto con funciones SAS© complejas. Esto consume una enorme cantidad de memoria y de red.
Con Pass-Through Explícito: PostgreSQL realiza la extracción JSON y la agregación ("pesada"). El servidor CAS solo recibe el resultado final: una pequeña tabla de síntesis ("pequeña tabla lista para usar").
El Pass-Through Explícito a través de CONNECTION TO es indispensable para los usuarios avanzados de SAS© Viya™. Permite romper las barreras del lenguaje FedSQL estándar para explotar el 100% de las capacidades de sus bases de datos (análisis JSON, XML, indexación específica), al tiempo que minimiza drásticamente los movimientos de datos al servidor CAS.