ETL CAS

CSV Caslib Laden mit Informats

Dieser Code ist auch verfügbar auf: English Español
Schwierigkeitsgrad
Anfänger
Veröffentlicht am :
Die Aktion `table.loadTable` wird verwendet, um eine CSV-Datei in eine In-Memory-Tabelle auf dem CAS-Server zu laden. Die `importOptions` sind konfiguriert, um den Dateityp (CSV) anzugeben und die Variablen explizit über den Parameter `vars` zu definieren. Für jede Variable werden Name, Datentyp (double), Informat (`ANYDTDTE10.` für Daten, `COMMA9.` für Zahlen mit Kommas und `PERCENT8.` für Prozentsätze) und Format (`NLDATE20.`, `COMMA.`, `PERCENT.`) definiert. Die Aktion `table.columnInfo` zeigt Metadaten der Tabelle an, einschließlich der angewendeten Datentypen und Formate. Schließlich wird `table.fetch` zweimal verwendet: einmal, um die rohen numerischen Werte (ohne Format) anzuzeigen, und einmal, um die von CAS formatierten Werte anzuzeigen, was die Auswirkung von Informats und Formaten veranschaulicht.
Datenanalyse

Type : CREATION_INTERNE


Die Beispiele verwenden CSV-Daten, die direkt im Code über `filename`-Anweisungen generiert werden, wodurch ihre Autonomie und Reproduzierbarkeit ohne Abhängigkeit von externen, bereits auf dem CAS-Dateisystem vorhandenen Dateien gewährleistet wird.

1 Codeblock
PROC CAS / table.loadTable Data
Erklärung :
Dieses Basisbeispiel zeigt, wie eine CSV-Datei mit `table.loadTable` in CAS geladen wird. Die CSV-Datei wird dynamisch mit einer `filename`-Anweisung und einem `DATA _NULL_`-Schritt erstellt, um die Autonomie des Skripts zu gewährleisten. Der Parameter `importOptions` wird verwendet, um den Dateityp, das Fehlen von Spaltennamen und die Definition von Informats und Formaten für jede Variable (`dt`, `volume`, `pct`) anzugeben. Die resultierende Tabelle, `volume_basic`, wird mit `promote=True` auf die globale Ebene der CAS-Sitzung hochgestuft, um sie für andere Sitzungen oder Benutzer zugänglich zu machen. Die Aktion `table.columnInfo` wird verwendet, um die angewendeten Datentypen und Formate zu überprüfen. Schließlich wird `table.fetch` zweimal verwendet, um die rohen und formatierten Daten anzuzeigen.
Kopiert!
1/* Remplacez 'cloud.example.com' et '5570' par les valeurs de votre environnement */
2/*options cashost="cloud.example.com" casport=5570;*/
3 
4/* Démarre la session Casauto si ce n'est pas déjà fait. */
5/*cas casauto;*/
6 
7/* Création d'un fichier CSV temporaire dans une caslib accessible */
8filename volume_basic temp;
9DATA _null_;
10 file volume_basic;
11 put '12-06-2019,"1,245",10%';
12 put '01-03-2020,"3,400",27%';
13 put '02-07-2020,"2,341",18%';
14 put '03-06-2020,"5,700",45%';
15 put '04-03-2020,"12,686",100%';
16RUN;
17 
18PROC CAS;
19 SESSION casauto;
20 
21 /* Charge le fichier CSV temporaire en mémoire CAS */
22 TABLE.loadTable /
23 path="volume_basic",
24 caslib="casuser", /* Spécifie une caslib, ex: 'casuser' */
25 importOptions={
26 fileType="csv",
27 getNames=false,
28 vars={
29 {name="dt" type="double" informat="anydtdte10." FORMAT="nldate20."},
30 {name="volume" type="double" informat="comma9." FORMAT="comma."},
31 {name="pct" type="double" informat="percent8." FORMAT="percent."}
32 }
33 },
34 casout={name="volume_basic", replace=True, promote=True}; /* Promote rend la table globale */
35 
36 /* Affiche les informations sur les colonnes de la table chargée */
37 TABLE.columnInfo / TABLE="volume_basic";
38 
39 title "Valeurs numériques brutes (Exemple Basique)";
40 /* Récupère et affiche les données sans appliquer de formats */
41 TABLE.fetch /
42 TABLE="volume_basic",
43 fetchVars={
44 {name="dt", FORMAT=""},
45 {name="volume", FORMAT=""},
46 {name="pct", FORMAT=""}
47 };
48RUN;
49 
50 title "Formats appliqués par CAS (Exemple Basique)";
51 /* Récupère et affiche les données en appliquant les formats définis */
52 TABLE.fetch / TABLE="volume_basic", FORMAT=True;
53RUN;
54QUIT;
55 
56/* Nettoyage : supprime la table CAS en mémoire et le fichier temporaire */
57PROC CAS;
58 SESSION casauto;
59 TABLE.dropTable / caslib="casuser", name="volume_basic";
60RUN;
61QUIT;
62filename volume_basic clear;
2 Codeblock
PROC CAS / table.loadTable Data
Erklärung :
Dieses Beispiel konzentriert sich auf die Verwendung gängiger Optionen beim Laden von Daten. Die CSV-Datei wird in eine CAS-Tabelle namens `volume_inter_global` geladen. Die Option `caslib='casuser'` wird explizit verwendet, um die Ziel-Caslib anzugeben. Darüber hinaus sorgt `promote=True` im Parameter `casout` dafür, dass die geladene Tabelle von einer Session-Tabelle zu einer globalen Tabelle hochgestuft wird, wodurch sie für andere Benutzer oder Sitzungen verfügbar ist, ohne neu geladen werden zu müssen. Die Variablennamen sind ebenfalls expliziter für eine bessere Lesbarkeit. `table.fetch` wird verwendet, um eine Vorschau der formatierten Daten anzuzeigen.
Kopiert!
1/* Remplacez 'cloud.example.com' et '5570' par les valeurs de votre environnement */
2/*options cashost="cloud.example.com" casport=5570;*/
3 
4/* Démarre la session Casauto si ce n'est pas déjà fait. */
5/*cas casauto;*/
6 
7/* Création d'un fichier CSV temporaire avec plus de données */
8filename volume_inter temp;
9DATA _null_;
10 file volume_inter;
11 put '12-06-2019,"1,245",10%';
12 put '01-03-2020,"3,400",27%';
13 put '02-07-2020,"2,341",18%';
14 put '03-06-2020,"5,700",45%';
15 put '04-03-2020,"12,686",100%';
16 put '05-01-2020,"8,910",70%';
17 put '06-02-2020,"1,500",15%';
18RUN;
19 
20PROC CAS;
21 SESSION casauto;
22 
23 /* Charge le fichier CSV temporaire dans la caslib 'casuser' et le promeut */
24 TABLE.loadTable /
25 path="volume_inter",
26 caslib="casuser", /* Spécifie explicitement la caslib 'casuser' */
27 importOptions={
28 fileType="csv",
29 getNames=false,
30 vars={
31 {name="DateTransaction" type="double" informat="anydtdte10." FORMAT="nldate20."},
32 {name="VolumeVendu" type="double" informat="comma9." FORMAT="comma."},
33 {name="PourcentageCroissance" type="double" informat="percent8." FORMAT="percent."}
34 }
35 },
36 casout={name="volume_inter_global", replace=True, promote=True}; /* Promouvoir pour accès global */
37 
38 /* Affiche les 10 premières lignes de la table globale */
39 title "Données de Volume (Exemple Intermédiaire)";
40 TABLE.fetch / TABLE="volume_inter_global", to=10, FORMAT=True;
41RUN;
42QUIT;
43 
44/* Nettoyage : supprime la table CAS globale et le fichier temporaire */
45PROC CAS;
46 SESSION casauto;
47 TABLE.dropTable / caslib="casuser", name="volume_inter_global";
48RUN;
49QUIT;
50filename volume_inter clear;
3 Codeblock
PROC CAS / table.loadTable, dataStep.runCode Data
Erklärung :
Dieses fortgeschrittene Beispiel veranschaulicht eine komplexere Datenmanipulation direkt in der CAS-Umgebung. Nach dem anfänglichen Laden der Tabelle `volume_initial` wird ein `dataStep.runCode` verwendet, um einen CASL DATA Step auszuführen. Dieser DATA Step erstellt eine neue Variable `VolumeAjuste`, indem das `Volume` mit dem angepassten `CroissancePct` multipliziert wird. Zusätzlich wird eine Filterung (`if VolumeAjuste > 5000`) angewendet, um nur die Zeilen, die diese Bedingung erfüllen, in die neue Tabelle `volume_processed` aufzunehmen. Dies zeigt, wie Transformationen und Datenauswahlen im verteilten Speicher durchgeführt werden können.
Kopiert!
1/* Remplacez 'cloud.example.com' et '5570' par les valeurs de votre environnement */
2/*options cashost="cloud.example.com" casport=5570;*/
3 
4/* Démarre la session Casauto si ce n'est pas déjà fait. */
5/*cas casauto;*/
6 
7/* Création d'un fichier CSV temporaire pour l'exemple avancé */
8filename volume_adv temp;
9DATA _null_;
10 file volume_adv;
11 put '12-06-2019,"1,245",10%';
12 put '01-03-2020,"3,400",27%';
13 put '02-07-2020,"2,341",18%';
14 put '03-06-2020,"5,700",45%';
15 put '04-03-2020,"12,686",100%';
16 put '05-01-2020,"8,910",70%';
17 put '06-02-2020,"1,500",15%';
18 put '07-01-2020,"6,000",50%';
19 put '08-01-2020,"9,500",80%';
20RUN;
21 
22PROC CAS;
23 SESSION casauto;
24 
25 /* Charge le fichier CSV temporaire */
26 TABLE.loadTable /
27 path="volume_adv",
28 caslib="casuser",
29 importOptions={
30 fileType="csv",
31 getNames=false,
32 vars={
33 {name="Date" type="double" informat="anydtdte10." FORMAT="nldate20."},
34 {name="Volume" type="double" informat="comma9." FORMAT="comma."},
35 {name="CroissancePct" type="double" informat="percent8." FORMAT="percent."}
36 }
37 },
38 casout={name="volume_initial", replace=True, promote=False};
39 
40 /* Exécute un DATA step en CAS pour créer une nouvelle variable et filtrer les données */
41 dataStep.runCode /
42 code="
43 data casuser.volume_processed;
44 set casuser.volume_initial;
45 VolumeAjuste = Volume * (1 + CroissancePct);
46 if VolumeAjuste > 5000 then output;
47 run;",
48 single="yes";
49 
50 /* Affiche les informations sur la nouvelle table traitée */
51 TABLE.columnInfo / TABLE="volume_processed", caslib="casuser";
52 
53 title "Données de Volume Traitées (Exemple Avancé)";
54 /* Récupère et affiche les données de la table traitée */
55 TABLE.fetch / TABLE="volume_processed", caslib="casuser", FORMAT=True;
56RUN;
57QUIT;
58 
59/* Nettoyage : supprime les tables CAS et le fichier temporaire */
60PROC CAS;
61 SESSION casauto;
62 TABLE.dropTable / caslib="casuser", name="volume_initial";
63 TABLE.dropTable / caslib="casuser", name="volume_processed";
64RUN;
65QUIT;
66filename volume_adv clear;
4 Codeblock
PROC CAS / table.loadTable, simple.freq Data
Erklärung :
Dieses Beispiel veranschaulicht eine tiefere Integration mit den analytischen Funktionen von CAS. Eine CSV-Datei wird geladen, die eine neue kategoriale Variable 'Region' enthält. Anschließend wird die Aktion `simple.freq` verwendet, um die Häufigkeitsverteilung der Variable 'Region' in der verteilten In-Memory-Tabelle zu berechnen. Darüber hinaus wird `simple.summary` verwendet, um deskriptive Statistiken (Mittelwert) des `Volume` nach `Region` zu berechnen, was zeigt, wie CAS Aggregatanalysen effizient auf großen Datenmengen durchführen kann. Dies unterstreicht die parallele Rechenleistung von Viya.
Kopiert!
1/* Remplacez 'cloud.example.com' et '5570' par les valeurs de votre environnement */
2/*options cashost="cloud.example.com" casport=5570;*/
3 
4/* Démarre la session Casauto si ce n'est pas déjà fait. */
5/*cas casauto;*/
6 
7/* Création d'un fichier CSV temporaire avec une variable catégorielle */
8filename volume_cas_analysis temp;
9DATA _null_;
10 file volume_cas_analysis;
11 put '12-06-2019,"1,245",10%,Est';
12 put '01-03-2020,"3,400",27%,Ouest';
13 put '02-07-2020,"2,341",18%,Nord';
14 put '03-06-2020,"5,700",45%,Sud';
15 put '04-03-2020,"12,686",100%,Est';
16 put '05-01-2020,"8,910",70%,Ouest';
17 put '06-02-2020,"1,500",15%,Nord';
18 put '07-01-2020,"6,000",50%,Sud';
19 put '08-01-2020,"9,500",80%,Est';
20RUN;
21 
22PROC CAS;
23 SESSION casauto;
24 
25 /* Charge le fichier CSV temporaire avec une nouvelle variable 'Region' */
26 TABLE.loadTable /
27 path="volume_cas_analysis",
28 caslib="casuser",
29 importOptions={
30 fileType="csv",
31 getNames=false,
32 vars={
33 {name="Date" type="double" informat="anydtdte10." FORMAT="nldate20."},
34 {name="Volume" type="double" informat="comma9." FORMAT="comma."},
35 {name="CroissancePct" type="double" informat="percent8." FORMAT="percent."},
36 {name="Region" type="varchar" LENGTH=50}
37 }
38 },
39 casout={name="volume_regions", replace=True, promote=False};
40 
41 /* Exécute une analyse de fréquence sur la variable 'Region' */
42 title "Analyse de Fréquence par Région (Exemple Viya/CAS)";
43 SIMPLE.freq /
44 TABLE={name="volume_regions", caslib="casuser"},
45 inputs={{name="Region"}};
46 
47 /* Calcule les moyennes du volume par région */
48 title "Statistiques Descriptives par Région (Exemple Viya/CAS)";
49 SIMPLE.summary /
50 TABLE={name="volume_regions", caslib="casuser"},
51 casout={name="summary_volume_regions", replace=True},
52 subSet={"mean"},
53 group={{
54 name="Region"}
55 },
56 inputs={{
57 name="Volume"}
58 };
59RUN;
60 
61QUIT;
62 
63/* Nettoyage : supprime les tables CAS et le fichier temporaire */
64PROC CAS;
65 SESSION casauto;
66 TABLE.dropTable / caslib="casuser", name="volume_regions";
67 TABLE.dropTable / caslib="casuser", name="summary_volume_regions";
68RUN;
69QUIT;
70filename volume_cas_analysis clear;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.

Zugehörige Dokumentation

Aucune documentation spécifique pour cette catégorie.