Chargement de données PostgreSQL vers CAS avec PROC CASUTIL et options multi-nœuds
En attente de validation
Le script initialise une session CAS, configure une caslib pour se connecter à une base de données PostgreSQL, puis charge la table 'film' dans CAS. Il démontre l'utilisation de `PROC CASUTIL` pour charger des données avec des options spécifiques telles que `sliceColumn` et `sliceExpressions` pour optimiser le chargement multi-nœuds. Il inclut également des étapes pour afficher et nettoyer les fichiers de trace du connecteur de données.
Analyse des données
Type : EXTERNE
Les données proviennent de la base de données PostgreSQL 'dvdrental' sur le serveur 'myserver', spécifiquement de la table 'film'. La connexion est établie via une caslib nommée 'caspg' avec des identifiants et des paramètres de trace spécifiés.
1 Bloc de code
CAS COMMAND / MACRO EXECUTION
Explication : Initialise une session CAS nommée 'mySession' avec les options de métriques activées. Définit des variables macro pour spécifier le chemin et le préfixe des fichiers de trace du connecteur de données SAS. Affiche l'ID utilisateur actuel. Configure les options SAS pour le niveau de message `i` (informatif). Exécute la macro `%deleteTraceFiles` (supposée nettoyer les traces précédentes) et supprime la caslib 'caspg' si elle existe.
Copié !
cas mySession sessopts=(metrics=true) ;
%let dclogpath=/gelcontent/demo/DM/data/LOG ;
%let logprefix=&sysuserid._sasdcpg_ ;
%put My Userid is: &sysuserid ;
options msglevel=i ;
%deleteTraceFiles(dclogpath=&dclogpath,logprefix=&logprefix) ;
caslib caspg drop ;
Explication : Définit une caslib nommée 'caspg' pour établir une connexion avec une base de données PostgreSQL. Elle spécifie les paramètres de connexion tels que le serveur, la base de données, le schéma et les identifiants. Les options `numreadnodes` et `numwritenodes` sont réglées pour tenter une configuration multi-nœuds. Des options de traçage détaillées pour le pilote de données sont activées, spécifiant le fichier de trace et les options d'enregistrement.
Copié !
/* Set the numreadnodes parameter high so the log tells us CAS is attempting multi-node load */
/* Set some tracing options */
caslib caspg datasource=(srctype="postgres",username="myuser",password="mypw",server="myserver",
database="dvdrental",schema="public",numreadnodes=10,numwritenodes=10,
DRIVER_TRACE="SQL",
DRIVER_TRACEFILE="&dclogpath/&logprefix.$SAS_CURRENT_HOST.log",
DRIVER_TRACEOPTIONS="TIMESTAMP|APPEND") libref=caspg ;
1
/* Set the numreadnodes parameter high so the log tells us CAS is attempting multi-node load */
Explication : Utilise `PROC CASUTIL` pour lister les fichiers et les tables disponibles via la caslib 'caspg'. Cela permet de vérifier la connexion et de voir les objets accessibles dans la source de données externe.
Copié !
/* List source files and target tables */
proc casutil incaslib="caspg" ;
list files ;
list tables ;
quit ;
1
/* List source files and target tables */
2
PROC CASUTIL incaslib="caspg" ;
3
list files ;
4
list tables ;
5
QUIT ;
6
4 Bloc de code
PROC CASUTIL Data
Explication : Supprime la table CAS cible si elle existe (pour éviter les conflits). Charge ensuite la table 'film' depuis la source PostgreSQL vers la caslib CAS 'caspg', en créant une table CAS nommée avec le nom d'utilisateur. La commande `list tables` confirme le chargement.
Copié !
/* Load the FILM PostgreSQL table in CAS in multi-node mode */
/* Drop the CAS table before in case it exists */
/* List target tables */
proc casutil incaslib="caspg" outcaslib="caspg" ;
droptable casdata="&sysuserid._PG_film" quiet ;
load casdata="film" casout="&sysuserid._PG_film" ;
list tables ;
quit ;
1
/* Load the FILM PostgreSQL table in CAS in multi-node mode */
Explication : Affiche le contenu des fichiers de trace générés par le connecteur de données SAS pour la session en cours. Ensuite, supprime ces fichiers de trace pour nettoyer. `%displayTrace` et `%deleteTraceFiles` sont des macros personnalisées.
Copié !
/* Display SAS Data Connector trace files */
%displayTrace(dclogpath=&dclogpath,logprefix=&logprefix) ;
/* Delete the SAS Data Connector trace files */
%deleteTraceFiles(dclogpath=&dclogpath,logprefix=&logprefix) ;
Explication : Charge à nouveau la table 'film' depuis PostgreSQL vers CAS, en utilisant l'option `replace` pour écraser la table existante. L'option `sliceColumn='length'` est utilisée pour spécifier une colonne qui peut être utilisée pour le partitionnement ou le découpage des données, potentiellement pour améliorer les performances multi-nœuds.
Copié !
/* Force the multi-node mode to use the LENGTH column */
proc casutil incaslib="caspg" outcaslib="caspg" ;
load casdata="film" casout="&sysuserid._PG_film" options=(sliceColumn="length") replace ;
list tables ;
quit ;
1
/* Force the multi-node mode to use the LENGTH column */
Explication : Affiche et supprime les fichiers de trace du connecteur de données SAS. `%displayTrace` et `%deleteTraceFiles` sont des macros personnalisées.
Copié !
/* Display SAS Data Connector trace files */
%displayTrace(dclogpath=&dclogpath,logprefix=&logprefix) ;
/* Delete the SAS Data Connector trace files */
%deleteTraceFiles(dclogpath=&dclogpath,logprefix=&logprefix) ;
Explication : Charge à nouveau la table 'film', en spécifiant explicitement `numreadnodes=2` pour utiliser deux nœuds de lecture. L'option `sliceExpressions` est utilisée pour définir des conditions de découpage (`length < 100` et `length >= 100`), ce qui permet de répartir le chargement des données en fonction de ces expressions. `replace` écrase la table existante et `copies=0` évite la création de copies inutiles.
Copié !
/* Force the multi-node mode to use slicing expressions on the LENGTH column */
proc casutil incaslib="caspg" outcaslib="caspg" ;
load casdata="film" casout="&sysuserid._PG_film" options=(numreadnodes=2 sliceExpressions=("length < 100","length >= 100")) replace copies=0 ;
list tables ;
quit ;
1
/* Force the multi-node mode to use slicing expressions on the LENGTH column */
Explication : Affiche et supprime les fichiers de trace du connecteur de données SAS. `%displayTrace` et `%deleteTraceFiles` sont des macros personnalisées.
Copié !
/* Display SAS Data Connector trace files */
%displayTrace(dclogpath=&dclogpath,logprefix=&logprefix) ;
/* Delete the SAS Data Connector trace files */
%deleteTraceFiles(dclogpath=&dclogpath,logprefix=&logprefix) ;
Explication : Termine la session CAS nommée 'mySession' et libère les ressources associées.
Copié !
cas mysession terminate ;
1
cas mysession terminate ;
2
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« Choisissez toujours une colonne numérique indexée dans PostgreSQL (comme une clé primaire ou une date) pour votre sliceColumn. Cela permet à la base de données de répondre beaucoup plus vite aux requêtes segmentées envoyées par les différents nœuds de calcul CAS. »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.