Optimisation SAS : LIBNAME vs SQL Pass-Through pour les grosses volumétries
Simon 22 vistas
Niveau de difficulté
Débutant
Publicado el :
Consejo del experto
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é.
Aviso importante
Los códigos y ejemplos proporcionados en WeAreCAS.eu son con fines educativos. Es imperativo no copiarlos y pegarlos ciegamente en sus entornos de producción. El mejor enfoque es comprender la lógica antes de aplicarla. Recomendamos encarecidamente probar estos scripts en un entorno de prueba (Sandbox/Dev). WeAreCAS no acepta ninguna responsabilidad por cualquier impacto o pérdida de datos en sus sistemas.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.