fedSql

execDirect

##file_io ##set_fedsql

Description

L'action fedSql.execDirect  est le point d'entrée principal pour exécuter des requêtes SQL directement sur votre serveur CAS .

L'action fedSql.execDirect est le point d'entrée principal pour exécuter des requêtes SQL directement sur votre serveur CASMoteur analytique "in-memory" de SAS Viya. Il traite les données en parallèle (MPP) sur plusieurs nœuds pour offrir une puissance de calcul massive et une exécution ultra-rapide des actions.. Elle utilise le moteur FedSQL, une implémentation SAS du standard ANSI SQL:1999, pour interroger, joindre et manipuler des tables chargées en mémoireGemini said

Espace de stockage temporaire (RAM) utilisé par le moteur CAS pour charger et traiter les données à haute vitesse, minimisant les accès disque pour optimiser les performances de SAS Viya.
. C'est un peu comme avoir un interprète polyglotte pour vos données : que vos tables viennent de TeradataSystème de gestion de base de données relationnelle hautement parallèle, conçu pour le stockage et l'analyse massive de données (Data Warehouse) en parfaite intégration avec SAS Viya., Oracle ou d'un simple fichier CSV, FedSQL les traite avec la même rigueur et élégance. Pas besoin de parler couramment le 'Cloud-ien', le bon vieux SQL suffit !

Syntaxe Officielle
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;

Paramètres Clés

Nom du paramètre Description
query Spécifie l'instruction SAS FedSQL à exécuter (généralement un SELECT, CREATE TABLE ou DROP TABLE). C'est le cœur de votre demande.
method Si positionné à True, affiche une description succincte du plan d'exécution généré par FedSQL dans le journal. Pratique pour voir si le moteur ne fait pas n'importe quoi avec vos jointures !
cntl Un dictionnaire de paramètres de contrôle pour affiner l'optimisation, comme forcer l'ordre des jointures ou désactiver le pass-through.
showPlan Génère un arbre XML représentant le plan de requête. C'est la version 'Matrix' de votre SQL, réservée aux amateurs de détails techniques profonds.
validateOnly Vérifie si votre syntaxe est correcte sans réellement exécuter la requête. Idéal pour tester sans risquer de faire exploser (figurativement) votre mémoire CAS.

Préparation des données

Préparation des données de test

Création de deux tables simples (Ventes et Magasins) pour illustrer les capacités de jointure de FedSQL.

1PROC CAS;
2 TABLE.loadTable / path="cars.sashdat", caslib="Samples", casOut={name="cars", replace=true};
3 fedSql.execDirect / query="create table work.sales_summary{options replace=true} as select Origin, count(*) as Count, avg(MSRP) as AvgPrice from cars group by Origin";
4RUN;

Exemples d'utilisation

Exécution d'un SELECT basique

Une simple interrogation pour compter le nombre de véhicules par origine.

1PROC CAS;
2 fedSql.execDirect / query="select Origin, count(*) from cars group by Origin";
3RUN;
Résultat Attendu :
Un tableau de résultats affichant les colonnes Origin et la fonction d'agrégation Count.
Jointure complexe avec analyse du plan d'exécution

Cet exemple montre comment exécuter une requête avec des options de diagnostic (method et showStages) pour comprendre comment FedSQL optimise la requête.

1PROC CAS;
2 fedSql.execDirect /
3 query="select a.Make, a.Model, b.AvgPrice from cars as a inner join sales_summary as b on a.Origin = b.Origin where a.MSRP > b.AvgPrice",
4 method=true,
5 cntl={showStages=true};
6RUN;
Résultat Attendu :
Les résultats de la jointure filtrée, accompagnés dans le log SAS des détails sur les étapes d'exécution (Stages) et la méthode d'optimisation choisie.
Validation de syntaxe uniquement

Vérifier si une requête complexe est valide avant de la lancer en production.

1PROC CAS;
2 fedSql.execDirect /
3 query="select * from cars where Horsepower > 300",
4 validateOnly=true;
5RUN;
Résultat Attendu :
Un message dans le log confirmant que la requête est valide, sans aucune ligne de données produite.