Publié le :
ETL SASHELP

Traitement de données et export XML

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script commence par une macro `%defaults` qui initialise la variable globale `dset` à `sashelp.class` si elle n'est pas déjà définie. Ensuite, un `DATA _NULL_` est utilisé pour ouvrir le dataset spécifié par `&dset` et récupérer le nombre d'observations (`nobs`), qui est ensuite stocké dans une variable macro globale `nobs`. Une section dédiée à l'XML est ensuite exécutée. Elle utilise la fonction `pathname(work)` pour obtenir le chemin du répertoire de travail, puis définit une bibliothèque XML nommée `test` qui pointe vers un fichier `temp.xml` dans ce répertoire. Le contenu du dataset `&dset` est ensuite copié dans cette bibliothèque XML, générant ainsi le fichier `temp.xml`. Après la libération de la libname `test`, le script lit le fichier `temp.xml` et en affiche le contenu via `_webout`. Une partie du code pour la génération JSON est présente mais commentée. Le script se termine par les déclarations `%STPBEGIN` et `%STPEND`, indiquant qu'il est conçu pour être exécuté comme un processus stocké SAS©.
Analyse des données

Type : SASHELP


Le script utilise le dataset `sashelp.class` par défaut. Ce dataset est interne à SAS et toujours disponible.

1 Bloc de code
MACRO
Explication :
Ce bloc définit et appelle une macro `%defaults`. Cette macro vérifie l'existence de la variable macro `dset`. Si `dset` n'existe pas, elle la déclare globale et l'initialise avec le chemin `sashelp.class`.
Copié !
1%macro defaults ;
2 %* these defaults may be passed in, or ELSE they default ;
3 %IF %symexist(dset)=0 %THEN %DO;
4 %global dset;
5 %let dset=sashelp.class;
6 %END;
7%mend defaults;
8%defaults
2 Bloc de code
DATA STEP
Explication :
Ce `DATA _NULL_` pas-à-pas ouvre le dataset spécifié par `&dset` (par défaut `sashelp.class`), récupère le nombre d'observations (`nobs`) via la fonction `attrn` et le stocke dans une variable macro nommée `nobs` à l'aide de `call symput`.
Copié !
1DATA _null_ ;
2 dsid=open("&dset");
3 nobs=attrn(dsid,'nobs');
4 call symput('nobs',strip(put(nobs,8.)));
5RUN;
3 Bloc de code
DATA STEP Data
Explication :
Ce bloc génère un fichier XML. Il récupère d'abord le chemin du répertoire de travail (`work`) et le stocke dans la variable macro `pathname`. Une libname `test` de type `xml` est ensuite assignée à un fichier `temp.xml` dans ce répertoire. Le contenu du dataset `&dset` est copié dans `test.test`, créant ainsi le fichier XML. La libname est ensuite libérée. Enfin, un `DATA _NULL_` lit le fichier `temp.xml` et affiche son contenu directement via `_webout`.
Copié !
1%let pathname=%sysfunc(pathname(work)) ;
2LIBNAME test xml "&pathname/temp.xml" ;
3DATA test.test ;
4 SET &dset ;
5RUN ;
6LIBNAME test ;
7DATA _null_ ;
8 INFILE "&pathname/temp.xml" ;
9 file _webout ;
10 INPUT ;
11 put _infile_ ;
12RUN ;
4 Bloc de code
MACRO
Explication :
Ces lignes définissent les délimiteurs pour un processus stocké SAS. `%STPBEGIN` et `%STPEND` encadrent le code qui sera exécuté dans le cadre du processus stocké. La ligne `*';*\"*/;run;` est une syntaxe standard pour terminer potentiellement des blocs de code ou des instructions en attente, souvent utilisée pour assurer une exécution propre dans le contexte des processus stockés.
Copié !
1%let _result=streamfragment ;
2%STPBEGIN;
3*';*";*/;run;
4%STPEND;
5*';*";*/;RUN;
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.