Das Ziel ist zu zeigen, wie die Aktion `table.view` des Aktionssets 'table' verwendet werden kann, um eine logische Ansicht aus zwei CAS In-Memory-Tabellen zu erstellen. Das Beispiel lädt einen 'cars.csv'-Datensatz, erstellt eine Zusammenfassungstabelle 'cars_summary' über FedSQL und kombiniert diese beiden Tabellen dann zu einer Ansicht namens 'cars_view'. Optionen wie `replace=True` und die Verwendung von Präfixen für verknüpfte Spalten (`f1_`, `d1_`) werden ebenfalls veranschaulicht. Schließlich werden die Ansichtsinformationen über `table.tableInfo` angezeigt und die ersten Zeilen mit `table.fetch`, einschließlich berechneter Variablen, extrahiert. Zusätzliche Beispiele untersuchen die Erstellung grundlegender Ansichten, die Anwendung von Filtern und berechneten Spalten, die Integration kategorisierter Daten und die Fehlerbehandlung bei der Erstellung von Ansichten.
Datenanalyse
Type : CREATION_INTERNE
Die Beispiele verwenden CSV-Daten, die von einer support.sas.com-URL geladen und dann aggregiert oder direkt zur Erstellung temporärer CAS In-Memory-Tabellen verwendet werden, sowie Daten, die über `datalines` generiert werden.
1 Codeblock
DATA STEP / table.view Data
Erklärung : Dieses Beispiel erstellt zwei kleine In-Memory-CAS-Tabellen mithilfe von DATA-Steps und `datalines`. Anschließend wird die Aktion `table.view` verwendet, um eine Ansicht namens `simple_view` zu erstellen, die `table1` und `table2` über die Spalte `ID` verbindet. Die Aliase `t1` und `t2` werden verwendet, um die Spalten in der Ansicht zu präfixieren. Schließlich werden die Informationen und die ersten Zeilen der Ansicht angezeigt.
Kopiert!
/* Exemple 1 : Utilisation Basique */
/* Crée deux tables CAS simples et une vue qui les joint. */
/* Assurez-vous d'avoir une session CAS active */
options cashost="cloud.example.com" casport=5570;
cas casauto;
/* Création de la première table (fictif) */
data casuser.table1(promote=yes);
input ID $ Name $;
datalines;
101 Alice
102 Bob
103 Charlie
;
run;
/* Création de la deuxième table (fictif) */
data casuser.table2(promote=yes);
input ID $ Score;
datalines;
101 85
102 92
104 78
;
run;
/* Création de la vue en joignant les deux tables */
proc cas;
table.view /
name="simple_view",
replace=True,
tables={
{name="table1", as="t1"},
{name="table2", as="t2", keys="t1_ID=t2_ID"}
};
run;
/* Affichage des informations de la vue */
proc cas;
table.tableInfo / table="simple_view";
run;
/* Affichage des premières lignes de la vue */
proc cas;
table.fetch /
table="simple_view",
to=5;
run;
1
/* Exemple 1 : Utilisation Basique */
2
/* Crée deux tables CAS simples et une vue qui les joint. */
3
4
/* Assurez-vous d'avoir une session CAS active */
5
options cashost="cloud.example.com" casport=5570;
6
cas casauto;
7
8
/* Création de la première table (fictif) */
9
DATA casuser.table1(promote=yes);
10
INPUT ID $ Name $;
11
DATALINES;
12
101 Alice
13
102 Bob
14
103 Charlie
15
;
16
RUN;
17
18
/* Création de la deuxième table (fictif) */
19
DATA casuser.table2(promote=yes);
20
INPUT ID $ Score;
21
DATALINES;
22
10185
23
10292
24
10478
25
;
26
RUN;
27
28
/* Création de la vue en joignant les deux tables */
29
PROC CAS;
30
TABLE.view /
31
name="simple_view",
32
replace=True,
33
tables={
34
{name="table1", as="t1"},
35
{name="table2", as="t2", keys="t1_ID=t2_ID"}
36
};
37
RUN;
38
39
/* Affichage des informations de la vue */
40
PROC CAS;
41
TABLE.tableInfo / TABLE="simple_view";
42
RUN;
43
44
/* Affichage des premières lignes de la vue */
45
PROC CAS;
46
TABLE.fetch /
47
TABLE="simple_view",
48
to=5;
49
RUN;
50
2 Codeblock
DATA STEP / table.view Data
Erklärung : Dieses Beispiel erweitert den Grundfall, indem ein Filter (`where='t2_Score > 80'`) hinzugefügt wird, um nur Zeilen einzubeziehen, bei denen der Score größer als 80 ist. Es führt auch eine berechnete Spalte `FullInfo` unter Verwendung von `computedVarsProgram` ein, die die Namen- und Score-Informationen verkettet. Der Befehl `table.fetch` wählt dann spezifische Variablen aus, einschließlich der berechneten Variablen.
Kopiert!
/* Exemple 2 : Options Courantes (Filtrage et sélection de colonnes) */
/* Utilise les tables de l'exemple 1 et crée une vue filtrée avec des colonnes spécifiques. */
/* Assurez-vous d'avoir une session CAS active */
options cashost="cloud.example.com" casport=5570;
cas casauto;
/* Création de la première table (fictif) */
data casuser.table1(promote=yes);
input ID $ Name $;
datalines;
101 Alice
102 Bob
103 Charlie
104 David
;
run;
/* Création de la deuxième table (fictif) */
data casuser.table2(promote=yes);
input ID $ Score;
datalines;
101 85
102 92
103 78
104 65
;
run;
/* Création de la vue avec un filtre et sélection de colonnes */
proc cas;
table.view /
name="filtered_view",
replace=True,
tables={
{name="table1", as="t1"},
{name="table2", as="t2", keys="t1_ID=t2_ID"}
},
where="t2_Score > 80",
computedVarsProgram="FullInfo = t1_Name || ' (Score: ' || strip(put(t2_Score, 3.)) || ')'",
computedVars={"FullInfo"}
;
run;
/* Affichage des informations de la vue */
proc cas;
table.tableInfo / table="filtered_view";
run;
/* Affichage des premières lignes de la vue avec les colonnes sélectionnées */
proc cas;
table.fetch /
table="filtered_view",
fetchVars={"t1_ID", "t1_Name", "t2_Score", "FullInfo"},
to=5;
run;
1
/* Exemple 2 : Options Courantes (Filtrage et sélection de colonnes) */
2
/* Utilise les tables de l'exemple 1 et crée une vue filtrée avec des colonnes spécifiques. */
3
4
/* Assurez-vous d'avoir une session CAS active */
5
options cashost="cloud.example.com" casport=5570;
6
cas casauto;
7
8
/* Création de la première table (fictif) */
9
DATA casuser.table1(promote=yes);
10
INPUT ID $ Name $;
11
DATALINES;
12
101 Alice
13
102 Bob
14
103 Charlie
15
104 David
16
;
17
RUN;
18
19
/* Création de la deuxième table (fictif) */
20
DATA casuser.table2(promote=yes);
21
INPUT ID $ Score;
22
DATALINES;
23
10185
24
10292
25
10378
26
10465
27
;
28
RUN;
29
30
/* Création de la vue avec un filtre et sélection de colonnes */
Erklärung : Dieses Beispiel lädt den Datensatz 'cars.csv'. Anschließend wird eine aggregierte Tabelle `cars_summary_with_category` unter Verwendung von `fedSql.execDirect` erstellt. Diese Tabelle aggregiert die Daten nach `drivetrain` und einer dynamisch abgeleiteten `Weight_Category` über eine SQL-`CASE`-Anweisung. Die Ansicht `advanced_cars_view` wird dann durch Verknüpfen von `cars_raw` und dieser neuen aggregierten Tabelle über die Spalte `Drivetrain` erstellt. Eine berechnete Spalte `FullCarInfo` wird hinzugefügt, um mehrere Textinformationen zu kombinieren.
Kopiert!
/* Exemple 3 : Cas Avancé (Table dérivée avec catégorie de poids et jointure) */
/* Charge le jeu de données Cars, crée une table agrégée avec une catégorie de poids, puis une vue. */
/* Assurez-vous d'avoir une session CAS active */
options cashost="cloud.example.com" casport=5570;
cas casauto;
/* Téléchargement et chargement du fichier CSV cars.csv */
%let data='http://support.sas.com/documentation/onlinedoc/viya/exampledatasets/cars.csv';
filename t temp;
proc http method="get" url=&data. out=t;
run;
%let temppath = %sysfunc(quote(%sysfunc(pathname(t))));
proc cas;
upload path=&temppath.
importoptions={
fileType="csv",
getNames=True
},
casout={
name="cars_raw",
replace=True
};
run;
/* Création d'une table agrégée avec une catégorie de poids dérivée */
proc cas;
fedSql.execDirect /
query="create table cars_summary_with_category{options replace=True} as
select
drivetrain,
(case
when weight <= 1500 then 'Light'
when weight > 1500 and weight <= 3000 then 'Medium'
else 'Heavy'
end) as Weight_Category,
avg(mpg_city) as Avg_MPG_City
from cars_raw
group by drivetrain, Weight_Category;";
run;
/* Création de la vue en joignant cars_raw et cars_summary_with_category */
proc cas;
table.view /
name="advanced_cars_view",
replace=True,
tables={
{name="cars_raw", as="r1"},
{name="cars_summary_with_category", as="s1", keys="r1_Drivetrain=s1_Drivetrain"}
},
computedVarsProgram="FullCarInfo = r1_Make || ' - ' || r1_Model || ' (' || s1_Weight_Category || ')';"
;
run;
/* Affichage des informations de la vue */
proc cas;
table.tableInfo / table="advanced_cars_view";
run;
/* Affichage des premières lignes de la vue */
proc cas;
table.fetch /
table="advanced_cars_view",
fetchVars={"FullCarInfo", "r1_Drivetrain", "r1_Weight", "s1_Weight_Category", "s1_Avg_MPG_City"},
to=5;
run;
1
/* Exemple 3 : Cas Avancé (Table dérivée avec catégorie de poids et jointure) */
2
/* Charge le jeu de données Cars, crée une table agrégée avec une catégorie de poids, puis une vue. */
3
4
/* Assurez-vous d'avoir une session CAS active */
5
options cashost="cloud.example.com" casport=5570;
6
cas casauto;
7
8
/* Téléchargement et chargement du fichier CSV cars.csv */
Erklärung : Dieses Beispiel erstellt eine einfache `existing_table`. Dann versucht es absichtlich, eine Ansicht (`error_view`) zu erstellen, indem es `existing_table` mit einer `non_existent_table` verknüpft. Da `non_existent_table` nicht existiert, schlägt die Aktion `table.view` fehl und demonstriert somit ein Fehlerszenario. Die Fehler werden im SAS/CAS-Protokoll aufgezeichnet. Der nachfolgende Versuch, mit `table.tableInfo` auf `error_view` zuzugreifen, führt ebenfalls zu einem Fehler, was bestätigt, dass die Ansicht nicht erstellt wurde. Die Tabelle `existing_table` wird anschließend gelöscht.
Kopiert!
/* Exemple 4 : Intégration Viya (Gestion d'erreur lors de la création de vue) */
/* Tente de créer une vue avec une table inexistante et capture l'erreur. */
/* Assurez-vous d'avoir une session CAS active */
options cashost="cloud.example.com" casport=5570;
cas casauto;
/* Création d'une table valide pour la démonstration */
data casuser.existing_table(promote=yes);
input ID $ Value;
datalines;
A 10
B 20
C 30
;
run;
/* Tentative de création d'une vue avec une table inexistante */
/* La vue ne sera pas créée, et une erreur sera loguée. */
proc cas;
/* La commande 'table.view' générera une erreur si 'non_existent_table' n'existe pas. */
/* Dans un programme CASL plus robuste, un bloc try/catch serait utilisé. */
/* Pour cet exemple, l'erreur sera visible dans le log SAS/CAS. */
table.view /
name="error_view",
replace=True,
tables={
{name="existing_table", as="e1"},
{name="non_existent_table", as="n1", keys="e1_ID=n1_ID"} /* Cette table n'existe pas */
};
run; quit; /* La vue ne sera pas créée. */
/* Tenter d'afficher des informations sur la vue inexistante (cela générera aussi une erreur) */
proc cas;
table.tableInfo / table="error_view";
run; quit;
/* Nettoyage: suppression de la table existante */
proc cas;
table.dropTable / caslib="casuser" name="existing_table";
run;
1
/* Exemple 4 : Intégration Viya (Gestion d'erreur lors de la création de vue) */
2
/* Tente de créer une vue avec une table inexistante et capture l'erreur. */
3
4
/* Assurez-vous d'avoir une session CAS active */
5
options cashost="cloud.example.com" casport=5570;
6
cas casauto;
7
8
/* Création d'une table valide pour la démonstration */
9
DATA casuser.existing_table(promote=yes);
10
INPUT ID $ Value;
11
DATALINES;
12
A 10
13
B 20
14
C 30
15
;
16
RUN;
17
18
/* Tentative de création d'une vue avec une table inexistante */
19
/* La vue ne sera pas créée, et une erreur sera loguée. */
20
PROC CAS;
21
/* La commande 'table.view' générera une erreur si 'non_existent_table' n'existe pas. */
22
/* Dans un programme CASL plus robuste, un bloc try/catch serait utilisé. */
23
/* Pour cet exemple, l'erreur sera visible dans le log SAS/CAS. */
24
TABLE.view /
25
name="error_view",
26
replace=True,
27
tables={
28
{name="existing_table", as="e1"},
29
{name="non_existent_table", as="n1", keys="e1_ID=n1_ID"} /* Cette table n'existe pas */
30
};
31
RUN; QUIT; /* La vue ne sera pas créée. */
32
33
/* Tenter d'afficher des informations sur la vue inexistante (cela générera aussi une erreur) */
34
PROC CAS;
35
TABLE.tableInfo / TABLE="error_view";
36
RUN; QUIT;
37
38
/* Nettoyage: suppression de la table existante */
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.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.