SAS Base – Lister les bibliothèques SAS affectées
Le code ci-dessous permet de lister les bibliothèques SAS affectées dans la session SAS :
|
1 |
libname _all_ list; |
Le code ci-dessous permet de lister les bibliothèques SAS affectées dans la session SAS :
|
1 |
libname _all_ list; |
Le code complet ci-dessous permet de créer une table dans la work SAS, en utilisant une Proc DS2 pour filter une table Hive :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
options set=SAS_HADOOP_CONFIG_PATH="/opt/sas/viya/config/data/hadoop/conf"; options set=SAS_HADOOP_JAR_PATH="/opt/sas/viya/config/data/hadoop/lib"; libname hivelib hadoop server='MON_SERVEUR_HIVE'; proc ds2; data cars; method run(); set {select * from hivelib.person where nom='housset'}; end; enddata; run; quit; |
La log complète de ce programme : Note :...
|
1 2 3 4 |
proc sql; connect to hadoop(server='MON_SERVEUR_HIVE' user='USER_HIVE' ....... ); select * from connection to hadoop(select * from person); quit; |
Pour créer une table Hive en SQL explicit, vous pouvez consulter le snippet Créer une table Hive en SAS Explicit SQL Pass-Through
Le programme suivant montre comment un thread crée des données et transmet des variables au programme de données :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
proc ds2; thread monThread /overwrite=yes; dcl double x; method init(); do i=1 to 3; x=i; output; end; end; endthread; data monDataset; dcl thread monThread t_instance; method run(); set from t_instance threads=3; end; enddata; run; quit; |
Ce qui donne dans la log : La table monThread dans la work...
Le programme ci-dessous montre comment convertir une date DS2 en SAS Date. Nous utilisons la fonction DS2 to_double :
|
1 2 3 4 5 6 7 8 9 10 11 12 |
proc ds2; data _null_; dcl date maDateDs2; dcl double maDateSAS; method init(); maDateDs2=date'2018-12-25'; maDateSAS=to_double(maDateDs2); put maDateSAS=; end; enddata; run; quit; |
Source : Converting a Date Value to a SAS Date Value
Dans le langage SAS DS2, les variables sont toujours globales sauf si elle sont déclarées dans une méthode. Exemple :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
proc ds2; data _null_ ; dcl int a; dcl int b; method init(); end; method run(); dcl int c; dcl int d; end; enddata; run; |
Les variables a et b sont globales car définit avant le init() (...
Pour illustrer l’utilisation des variables, labels et formats, prenons un exemple de définition dans une DATA STEP classique :
|
1 2 |
format Var euro9.2; label Var='MavariablePrix" |
Cela donne en DS2 :
|
1 |
dcl double var having format euro9.2. label "MavariablePrix"; |
L’instruction TABLEINFO est utilisée pour renvoyer des informations sur une table en mémoire. Ces informations incluent le nom de la table, les label, le nombre de lignes et de colonnes, le propriétaire, l’encoding et...
|
1 2 3 4 5 |
proc sql; connect to hadoop(server='MON_SERVEUR' user='nicolas' password='monpasswordhive'); execute(create table persons(nom string)) by hadoop; execute(insert into persons values ('nicolas housset')) by hadoop; quit; |
La table est bien créée : Au passage, notez la longueur du champ « nom » ( type string dans hadoop), 32767. Pour comprendre cette longueur et le pourquoi du comment, je vous invite à lire...
Un répertoire HDFS contient deux fichiers csv de données : Il est possible de lire ces deux fichiers comme s’il s’agissait d’un seul fichier, avec l’option concat de l’instruction filename :
|
1 |
filename foo hadoop "/companyData/" concat; |
|
1 2 3 4 5 |
data _null_; infile foo truncover; input a $1024.; put a; run; |