fedSql

execDirect

Descripción

Envía una instrucción del lenguaje SAS FedSQL para su ejecución inmediata en el servidor CAS. Esta acción permite realizar consultas SQL estándar, uniones y manipulaciones de datos directamente sobre tablas en memoria o fuentes de datos conectadas.

fedSql.execDirect <result=results> <status=rc> / cntl={disablePassThrough=TRUE | FALSE, dynamicCardinality=TRUE | FALSE, optimizeVarbinaryPrecision=TRUE | FALSE, optimizeVarcharPrecision=TRUE | FALSE, preserveJoinOrder=TRUE | FALSE, requireFullPassThrough=TRUE | FALSE, showStages=TRUE | FALSE}, method=TRUE | FALSE, * query="string", showPlan=TRUE | FALSE, showStages=TRUE | FALSE, validateOnly=TRUE | FALSE;
Parámetros
ParámetroDescripción
cntl Especifica parámetros de control opcionales para ajustar el comportamiento del optimizador y la ejecución.
cntl.disablePassThrough Si se establece en True, deshabilita el paso implícito (implicit pass-through) de FedSQL a la fuente de datos subyacente.
cntl.dynamicCardinality Si se establece en True, el planificador de consultas de FedSQL realiza estimaciones de cardinalidad dinámicas de los datos de entrada para optimizar el plan.
cntl.optimizeVarbinaryPrecision Si se establece en True, optimiza la precisión de las columnas VARBINARY utilizando una longitud adecuada para los datos reales, en lugar de la precisión declarada.
cntl.optimizeVarcharPrecision Si se establece en True, optimiza la precisión de las columnas VARCHAR utilizando una longitud adecuada para los datos reales, en lugar de la precisión declarada.
cntl.preserveJoinOrder Si se establece en True, fuerza la unión de las tablas en el orden especificado en la consulta, ignorando el orden sugerido por el optimizador de FedSQL.
cntl.requireFullPassThrough Si se establece en True, la acción fallará si no se puede lograr el paso implícito (implicit pass-through) completo de la consulta a la base de datos. Evita la carga accidental de datos masivos en CAS.
cntl.showStages Si se establece en True, imprime una descripción de las etapas del plan de consulta FedSQL y detalles de la ejecución en el registro.
method Si se establece en True, imprime una breve descripción del plan de ejecución de la consulta FedSQL en el registro.
query Cadena que especifica la instrucción SQL (FedSQL) que se va a ejecutar. Es el único parámetro obligatorio.
showPlan Si se establece en True, imprime un árbol XML detallado que representa el plan de consulta de FedSQL.
showStages Alias para el parámetro cntl.showStages. Imprime detalles de las etapas de ejecución.
validateOnly Si se establece en True, valida la sintaxis de la consulta SQL y retorna sin ejecutarla. Útil para depuración.
Carga de datos de ejemplo

Carga el conjunto de datos 'Cars' de la biblioteca Sashelp en la caslib activa para utilizarlo en los ejemplos.

¡Copiado!
1 
2PROC CAS;
3TABLE.loadTable / caslib="sashelp" path="cars.sashdat" casOut={name="cars", replace=true};
4 
5RUN;
6 

Ejemplos

Ejecuta una consulta SELECT simple para recuperar columnas específicas filtradas por una condición.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3fedSql.execDirect / query="select Make, Model, Invoice from cars where Origin = 'Asia' limit 5";
4 
5RUN;
6 
Resultado :
Muestra una tabla de resultados con las columnas Make, Model e Invoice para los primeros 5 coches de origen asiático.

Crea una nueva tabla en CAS ('Cars_Summary') que contiene el precio promedio por tipo de vehículo, ordenado descendentemente, utilizando la sintaxis 'CREATE TABLE AS SELECT'.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3fedSql.execDirect / query="create table cars_summary{options replace=true} as select Type, avg(Invoice) as Avg_Price from cars group by Type order by Avg_Price desc";
4 
5RUN;
6 
Resultado :
Genera una tabla en memoria llamada 'Cars_Summary' con el precio promedio calculado. El log indicará que la tabla fue creada exitosamente.

Muestra cómo verificar la sintaxis de una consulta compleja y visualizar su plan de ejecución sin procesar los datos realmente.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1 
2PROC CAS;
3fedSql.execDirect / validateOnly=true showPlan=true query="select distinct Make from cars where Cylinders > 6";
4 
5RUN;
6 
Resultado :
No produce tabla de salida. Imprime en el log el plan de ejecución XML y confirma que la sintaxis es válida.

FAQ

¿Cuál es el propósito principal de la acción execDirect?
¿Qué parámetro es estrictamente obligatorio para utilizar esta acción?
¿Cómo puedo validar la sintaxis de mi consulta sin llegar a ejecutarla?
¿Qué permite hacer el parámetro 'showPlan'?
¿Para qué sirve el parámetro 'method'?
¿Cómo puedo forzar que la consulta se detenga si no se logra el 'pass-through' completo?
¿Qué opción debo usar para ver detalles sobre las etapas de ejecución de la consulta?
¿Qué función cumple la opción 'dynamicCardinality' en el parámetro 'cntl'?