Analyse fonctionnelle détaillée des différentes approches pour l'importation et l'exportation de données externes. Elle couvre l'utilisation de PROC IMPORT pour les fichiers CSV et Excel, la création de tables dans un SGBD via un DATA step, l'intégration de déclarations LIBNAME dans des vues PROC SQL, l'exploitation de la fonction SQL Pass-Through, ainsi que l'importation de données XML et JSON à l'aide des moteurs XMLV2 et JSON, respectivement. Chaque exemple est conçu pour être autonome, en fournissant les moyens d'acquérir ou de créer les données nécessaires.
Analyse des données
Type : MIXTE
Les exemples utilisent des données externes (CSV, Excel, XML, JSON) dont l'acquisition est expliquée ou des données créées en interne (datalines) pour des démonstrations SGBD.
1 Bloc de code
PROC HTTP / PROC IMPORT
Explication : Cet exemple utilise l'instruction FILENAME pour attribuer la fileref 'chol' à un fichier temporaire. La procédure HTTP est ensuite utilisée pour télécharger un fichier CSV depuis une URL spécifiée et le sauvegarder dans la fileref 'chol'. La procédure IMPORT lit les données CSV et crée le jeu de données SAS 'work.mycholesterol'. Enfin, PROC PRINT affiche le contenu du jeu de données pour vérifier l'importation.
Explication : Cet exemple importe des données à partir d'un fichier Microsoft Excel (.xlsx) en utilisant la procédure IMPORT et le moteur XLSX. Pour que cet exemple soit autonome, vous devez d'abord créer un fichier Excel nommé 'cholesterol.xlsx' (par exemple, en sauvegardant le fichier 'cholesterol.csv' de l'exemple précédent au format .xlsx). L'option 'VALIDVARNAME=V7' est utilisée pour convertir les noms de colonnes Excel en noms de variables SAS valides (remplaçant les espaces par des underscores). Le moteur XLSX nécessite que l'interface SAS/ACCESS to PC Files soit configurée. L'option REPLACE permet de remplacer un jeu de données SAS existant.
Explication : Cet exemple montre comment créer une table directement dans un système de gestion de base de données (SGBD) externe, ici Teradata. L'instruction LIBNAME 'mytddata' est définie pour établir une connexion au serveur Teradata, incluant les informations d'identification. Un DATA step est ensuite utilisé pour créer une table nommée 'grades' dans ce SGBD en utilisant des 'datalines' pour fournir les données. La procédure DATASETS est utilisée pour afficher les informations de la bibliothèque 'mytddata', confirmant que la table a été créée dans le SGBD.
Explication : Cet exemple illustre la création d'une vue SAS (mygrades dans la bibliothèque viewlib) qui intègre une instruction LIBNAME pour une connexion à une base de données Teradata. La libref 'viewlib' est assignée à l'emplacement où la vue SAS sera stockée, utilisant le moteur V9. La clause 'USING' de l'instruction 'CREATE VIEW' permet d'embarquer les détails de connexion au SGBD, ce qui rend la vue auto-suffisante pour accéder à la table 'mytddata.grades'. Enfin, PROC PRINT exécute cette vue et affiche son contenu.
Copié !
libname viewlib v9 'library-path';
proc sql;
create view viewlib.mygrades as
select *
from mytddata.grades
using libname mytddata teradata
server=mytera
user=myid password=mypw;
quit;
proc print data=viewlib.mygrades noobs;
run;
1
LIBNAME viewlib v9 'library-path';
2
PROC SQL;
3
create view viewlib.mygrades as
4
select *
5
from mytddata.grades
6
using LIBNAME mytddata teradata
7
server=mytera
8
user=myid password=mypw;
9
QUIT;
10
PROC PRINTDATA=viewlib.mygrades noobs;
11
RUN;
5 Bloc de code
PROC SQL
Explication : Cet exemple utilise la fonction SQL Pass-Through au sein de PROC SQL pour envoyer des requêtes SQL directement à une base de données externe (Teradata). L'instruction 'CONNECT TO' établit une connexion nommée 'myconn' au serveur Teradata avec les informations d'identification spécifiées. Ensuite, une clause 'SELECT * FROM CONNECTION TO myconn (...)' permet d'exécuter une requête SQL native (filtrant les 'grades' avec 'final gt 90') directement sur le SGBD. L'instruction 'DISCONNECT FROM' est utilisée pour terminer la connexion à la base de données après l'exécution de la requête.
Copié !
proc sql;
connect to teradata as myconn (server=mytera
user=myid password=mypw);
select *
from connection to myconn
(select *
from grades
where final gt 90);
disconnect from myconn;
quit;
1
PROC SQL;
2
connect to teradata as myconn (server=mytera
3
user=myid password=mypw);
4
select *
5
from connection to myconn
6
(select *
7
from grades
8
where final gt 90);
9
disconnect from myconn;
10
QUIT;
6 Bloc de code
LIBNAME / PROC PRINT
Explication : Cet exemple importe des données à partir d'un fichier XML en utilisant le moteur XMLV2. Pour rendre cet exemple autonome, créez un fichier nommé 'nhl.xml' avec le contenu XML suivant, et remplacez 'file-path' par le chemin réel :
```xml
<?xml version="1.0" encoding="iso-8859-1" ?>
<NHL>
<CONFERENCE> Eastern
<DIVISION> Southeast
<TEAM name="Thrashers" abbrev="ATL" />
<TEAM name="Hurricanes" abbrev="CAR" />
<TEAM name="Panthers" abbrev="FLA" />
<TEAM name="Lightning" abbrev="TB" />
<TEAM name="Capitals" abbrev="WSH" />
</DIVISION>
</CONFERENCE>
<CONFERENCE> Western
<DIVISION> Pacific
<TEAM name="Stars" abbrev="DAL" />
<TEAM name="Kings" abbrev="LA" />
<TEAM name="Ducks" abbrev="ANA" />
<TEAM name="Coyotes" abbrev="PHX" />
<TEAM name="Sharks" abbrev="SJ" />
</DIVISION>
</CONFERENCE>
</NHL>
```
L'instruction FILENAME assigne la fileref 'nhl' au fichier XML. Une deuxième instruction FILENAME assigne la fileref 'map' à un fichier qui stockera le XMLMap généré. L'instruction LIBNAME, avec le moteur XMLV2 et les options 'AUTOMAP=REPLACE' et 'XMLMAP=map', lit le fichier XML et génère un XMLMap. PROC PRINT affiche ensuite les variables 'TEAM_name' et 'TEAM_abbrev' du jeu de données 'nhl.team' créé en mémoire.
Copié !
filename nhl 'file-path/nhl.xml';
filename map 'file-path/nhlgenerate.map';
libname nhl xmlv2 automap=replace xmlmap=map;
proc print data=nhl.team noobs;
var TEAM_name TEAM_abbrev;
run;
1
filename nhl 'file-path/nhl.xml';
2
filename map 'file-path/nhlgenerate.map';
3
LIBNAME nhl xmlv2 automap=replace xmlmap=map;
4
PROC PRINTDATA=nhl.team noobs;
5
var TEAM_name TEAM_abbrev;
6
RUN;
7 Bloc de code
LIBNAME / PROC DATASETS
Explication : Cet exemple importe des données JSON en utilisant le moteur JSON. Pour rendre cet exemple autonome, créez un fichier nommé 'example.json' avec un contenu JSON valide (par exemple, un objet JSON simple avec quelques champs et valeurs) et remplacez 'file-path' par le chemin réel. L'instruction LIBNAME 'mydata' est assignée au moteur JSON et pointe vers le fichier 'example.json'. La procédure DATASETS est ensuite utilisée pour lister les jeux de données SAS créés en mémoire à partir de ce fichier JSON, vérifiant ainsi l'importation.
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.
« Pour les fichiers JSON et XML, utilisez la PROC DATASETS immédiatement après votre LIBNAME pour explorer la structure générée. Ces formats créent souvent plusieurs tables (niveaux de hiérarchie) ; il est crucial de repérer laquelle contient l'information principale avant de lancer vos analyses »
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.