Optimisation SAS : LIBNAME vs SQL Pass-Through pour les grosses volumétries
Simon 22 Aufrufe
Niveau de difficulté
Débutant
Veröffentlicht am :
Expertenrat
Michael
Ne passez pas au SQL Pass-Through explicite (CONNECT TO) à l'aveugle ! Avant de sacrifier la portabilité de votre code SAS, activez l'option SASTRACE. Souvent, c'est une simple fonction SAS non traduisible qui bloque le push-down vers la base de données. Identifiez-la, corrigez-la, et laissez le moteur LIBNAME faire le travail lourd sans écrire une ligne de SQL natif
Activez les options de trace pour voir le SQL généré par le moteur LIBNAME :
options sastrace=',,,d' sastraceloc=SASLOG;
1
options sastrace=',,,d' sastraceloc=SASLOG;
Si vous voyez une requête SQL complexe avec vos JOIN et WHERE dans le journal : Le moteur LIBNAME fonctionne bien (Implicit Pass-Through réussi). Le problème vient peut-être des index manquants côté base de données.
Inconvénient : Vous perdez la portabilité (le code devient spécifique à Oracle/SQL Server/etc.).
proc sql;
connect to oracle (user=... password=... path=...);
create table want as
select * from connection to oracle
(
SELECT A.id, B.value
FROM tableA A
INNER JOIN tableB B ON A.id = B.id
/* Ce code est exécuté par Oracle, pas SAS */
);
disconnect from oracle;
quit;
1
PROC SQL;
2
connect to oracle (user=... password=... path=...);
Il n'y a pas de magie, seulement des tests comparatifs (FULLSTIMER) dans votre environnement spécifique.
Pour optimiser vos jointures massives :
Auditez d'abord avec SASTRACE pour voir si le LIBNAME fait son travail.
Testez le Pass-Through explicite si le implicite échoue.
N'écartez pas l'option de rapatrier des sous-ensembles de données pour faire un MERGE local si le serveur de base de données est surchargé.
Wichtiger Haftungsausschluss
Die auf WeAreCAS.eu bereitgestellten Codes und Beispiele dienen Lehrzwecken. Es ist zwingend erforderlich, sie nicht blind in Ihre Produktionsumgebungen zu kopieren. Der beste Ansatz besteht darin, die Logik zu verstehen, bevor sie angewendet wird. Wir empfehlen dringend, diese Skripte in einer Testumgebung (Sandbox/Dev) zu testen. WeAreCAS übernimmt keine Verantwortung für mögliche Auswirkungen oder Datenverluste auf Ihren Systemen.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.