Type : CREATION_INTERNE
Die Beispiele verwenden CSV-Daten, die direkt im SAS-Code über einen DATA _NULL_ Schritt generiert werden, was die Verfügbarkeit einer lokalen CSV-Datei simuliert.
| 1 | /* Création du fichier CSV local */ |
| 2 | DATA _NULL_; |
| 3 | FILE "/tmp/myusage_basic.csv" DSD LRECL=200; |
| 4 | PUT 'account,high,low,recorddt,startdt,enddt,kwh'; |
| 5 | PUT '1000001,82,71,07/03/2013,07/01/2013,07/02/2013,54'; |
| 6 | PUT '1000001,85,70,07/02/2013,06/30/2013,07/01/2013,70'; |
| 7 | PUT '1000001,85,68,07/01/2013,06/29/2013,06/30/2013,78'; |
| 8 | RUN; |
| 9 | |
| 10 | /* Connexion au serveur CAS (remplacer par vos infos) */ |
| 11 | *options cashost='cloud.example.com' casport=5570; |
| 12 | cas casauto; |
| 13 | |
| 14 | PROC CAS; |
| 15 | SESSION casauto; |
| 16 | upload path="/tmp/myusage_basic.csv" |
| 17 | casout={name="myusage_basic", replace=True}, |
| 18 | importOptions={ |
| 19 | fileType="csv", |
| 20 | getNames=True, |
| 21 | vars={ |
| 22 | recorddt={informat="mmddyy10.", FORMAT="nldate20."}, |
| 23 | startdt={informat="mmddyy10.", FORMAT="nldate20."}, |
| 24 | enddt={informat="mmddyy10.", FORMAT="nldate20."} |
| 25 | }}; |
| 26 | |
| 27 | PRINT myusage_basic(obs=3); |
| 28 | RUN; |
| 29 | QUIT; |
| 30 | |
| 31 | /* Suppression du fichier CSV temporaire */ |
| 32 | x "rm /tmp/myusage_basic.csv"; |
| 1 | /* Création du fichier CSV local avec plus de données */ |
| 2 | DATA _NULL_; |
| 3 | FILE "/tmp/myusage_inter.csv" DSD LRECL=200; |
| 4 | PUT 'account,high,low,recorddt,startdt,enddt,kwh,cost'; |
| 5 | PUT '1000001,82,71,07/03/2013,07/01/2013,07/02/2013,54,12.50'; |
| 6 | PUT '1000001,85,70,07/02/2013,06/30/2013,07/01/2013,70,15.75'; |
| 7 | PUT '1000002,85,68,07/01/2013,06/29/2013,06/30/2013,78,20.00'; |
| 8 | PUT '1000002,90,70,06/30/2013,06/28/2013,06/29/2013,72,18.25'; |
| 9 | PUT '1000003,88,68,06/29/2013,06/27/2013,06/28/2013,54,10.00'; |
| 10 | RUN; |
| 11 | |
| 12 | /* Connexion au serveur CAS (remplacer par vos infos) */ |
| 13 | *options cashost='cloud.example.com' casport=5570; |
| 14 | cas casauto; |
| 15 | |
| 16 | PROC CAS; |
| 17 | SESSION casauto; |
| 18 | upload path="/tmp/myusage_inter.csv" |
| 19 | casout={name="myusage_inter", replace=True, promote=True}, |
| 20 | importOptions={ |
| 21 | fileType="csv", |
| 22 | getNames=True, |
| 23 | vars={ |
| 24 | recorddt={informat="mmddyy10.", FORMAT="nldate20."}, |
| 25 | startdt={informat="mmddyy10.", FORMAT="nldate20."}, |
| 26 | enddt={informat="mmddyy10.", FORMAT="nldate20."}, |
| 27 | cost={informat="comma8.2", FORMAT="dollar10.2"} |
| 28 | }}; |
| 29 | |
| 30 | TABLE.columnInfo RESULT=r / TABLE={name='myusage_inter'}; |
| 31 | PRINT r; |
| 32 | |
| 33 | PRINT myusage_inter; |
| 34 | RUN; |
| 35 | QUIT; |
| 36 | |
| 37 | /* Suppression du fichier CSV temporaire */ |
| 38 | x "rm /tmp/myusage_inter.csv"; |
| 1 | /* Création du fichier CSV local */ |
| 2 | %LET CSV_FILE = /tmp/mydata_advanced_&sysdate._%sysfunc(compress(&systime.)).csv; |
| 3 | %LET CAS_TABLE = mydata_advanced; |
| 4 | %LET CAS_LIB = CASUSER; |
| 5 | |
| 6 | DATA _NULL_; |
| 7 | FILE "&CSV_FILE" DSD LRECL=200; |
| 8 | PUT 'ID,Category,Value,EntryDate'; |
| 9 | PUT '1,A,123.45,12-JAN-2023'; |
| 10 | PUT '2,B,678.90,01-FEB-2023'; |
| 11 | PUT '3,A,111.22,03-MAR-2023'; |
| 12 | PUT '4,C,333.33,15-APR-2023'; |
| 13 | RUN; |
| 14 | |
| 15 | /* Connexion au serveur CAS (remplacer par vos infos) */ |
| 16 | *options cashost='cloud.example.com' casport=5570; |
| 17 | cas casauto; |
| 18 | |
| 19 | PROC CAS; |
| 20 | SESSION casauto; |
| 21 | /* Vérifier si la table existe déjà et la supprimer si nécessaire */ |
| 22 | IF TABLE.tableInfo(caslib="&CAS_LIB", name="&CAS_TABLE") THEN DO; |
| 23 | TABLE.dropTable caslib="&CAS_LIB" name="&CAS_TABLE"; |
| 24 | END; |
| 25 | |
| 26 | upload path="&CSV_FILE" |
| 27 | casout={name="&CAS_TABLE", caslib="&CAS_LIB", replace=True, promote=True}, |
| 28 | importOptions={ |
| 29 | fileType="csv", |
| 30 | getNames=True, |
| 31 | vars={ |
| 32 | EntryDate={informat="date9.", FORMAT="nldate20."}, |
| 33 | Value={informat="comma10.2", FORMAT="dollar10.2"} |
| 34 | }}; |
| 35 | |
| 36 | PRINT &CAS_TABLE; |
| 37 | RUN; |
| 38 | QUIT; |
| 39 | |
| 40 | /* Supprimer le fichier CSV temporaire après utilisation */ |
| 41 | x "rm &CSV_FILE"; |
| 1 | /* Création du fichier CSV local */ |
| 2 | DATA _NULL_; |
| 3 | FILE "/tmp/transactions.csv" DSD LRECL=200; |
| 4 | PUT 'TransactionID,CustomerID,Amount,TransactionDate,ProductCode'; |
| 5 | PUT '1,C001,150.75,2023-01-15,PROD001'; |
| 6 | PUT '2,C002,230.00,2023-01-16,PROD002'; |
| 7 | PUT '3,C001,50.25,2023-01-15,PROD003'; |
| 8 | PUT '4,C003,100.00,2023-01-17,PROD001'; |
| 9 | PUT '5,C002,75.50,2023-01-16,PROD004'; |
| 10 | RUN; |
| 11 | |
| 12 | /* Connexion au serveur CAS (remplacer par vos infos) */ |
| 13 | *options cashost='cloud.example.com' casport=5570; |
| 14 | cas casauto; |
| 15 | |
| 16 | PROC CAS; |
| 17 | SESSION casauto; |
| 18 | caslib _all_ assign; |
| 19 | |
| 20 | /* 1. Charger le fichier CSV */ |
| 21 | upload path="/tmp/transactions.csv" |
| 22 | casout={name="raw_transactions", replace=True, promote=True}, |
| 23 | importOptions={ |
| 24 | fileType="csv", |
| 25 | getNames=True, |
| 26 | vars={ |
| 27 | TransactionDate={informat="yymmdd10.", FORMAT="nldate20."}, |
| 28 | Amount={informat="comma10.2", FORMAT="dollar10.2"} |
| 29 | }}; |
| 30 | |
| 31 | /* 2. Effectuer une agrégation avec FedSQL sur la table CAS */ |
| 32 | fedsql.execDirect RESULT=res / query=" |
| 33 | CREATE TABLE aggregated_transactions AS |
| 34 | SELECT |
| 35 | CustomerID, |
| 36 | COUNT(TransactionID) AS TotalTransactions, |
| 37 | SUM(Amount) AS TotalAmountSpent |
| 38 | FROM raw_transactions |
| 39 | GROUP BY CustomerID |
| 40 | ORDER BY TotalAmountSpent DESC; |
| 41 | "; |
| 42 | PRINT res; |
| 43 | |
| 44 | /* 3. Sauvegarder la table agrégée dans une caslib (ex: CASUSER) */ |
| 45 | TABLE.save RESULT=saveres / |
| 46 | TABLE={name="aggregated_transactions", caslib="CASUSER"}, |
| 47 | name="aggregated_transactions.sashdat", |
| 48 | replace=True; |
| 49 | PRINT saveres; |
| 50 | |
| 51 | /* 4. Afficher les résultats agrégés */ |
| 52 | PRINT aggregated_transactions; |
| 53 | RUN; |
| 54 | QUIT; |
| 55 | |
| 56 | x "rm /tmp/transactions.csv"; |