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
cntlEspecifica parámetros de control opcionales para ajustar el comportamiento del optimizador y la ejecución.
cntl.disablePassThroughSi se establece en True, deshabilita el paso implícito (implicit pass-through) de FedSQL a la fuente de datos subyacente.
cntl.dynamicCardinalitySi 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.optimizeVarbinaryPrecisionSi 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.optimizeVarcharPrecisionSi 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.preserveJoinOrderSi 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.requireFullPassThroughSi 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.showStagesSi 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.
methodSi se establece en True, imprime una breve descripción del plan de ejecución de la consulta FedSQL en el registro.
queryCadena que especifica la instrucción SQL (FedSQL) que se va a ejecutar. Es el único parámetro obligatorio.
showPlanSi se establece en True, imprime un árbol XML detallado que representa el plan de consulta de FedSQL.
showStagesAlias para el parámetro cntl.showStages. Imprime detalles de las etapas de ejecución.
validateOnlySi 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'?