Wenn Sie in einem DATA-Schritt ohne Eingabedaten eine CAS-Engine-Libref für das Ausgabedataset angeben, wird der DATA-Schritt in CAS ausgeführt. Der CAS-DATA-Schritt funktioniert nur mit In-Memory-CAS-Tabellen, was bedeutet, dass sowohl die Eingabe- als auch die Ausgabedaten In-Memory-CAS-Tabellen sein müssen. CAS-Tabellen müssen mindestens eine Variable enthalten. Der DATA-Schritt wird automatisch in CAS ausgeführt, wenn Sie CAS-Engine-Librefs für die Eingabe- und Ausgabedatasets verwenden oder wenn Sie kein Eingabedataset angeben und Ausgabedaten über eine CAS-Engine-Libref angeben. Nicht alle Sprachelemente werden in einem CAS-DATA-Schritt unterstützt.
Datenanalyse
Type : CREATION_INTERNE
Die Beispiele verwenden generierte Daten (Datalines) oder dynamisch erstellte Daten.
1 Codeblock
DATA Step / PROC PRINT Data
Erklärung : Dieses grundlegende Beispiel zeigt, wie eine CAS-Tabelle 'produits_cas' aus Inline-Daten erstellt und anschließend in ein lokales SAS-Dataset 'mysas.produits_sas' konvertiert wird. Eine Libref 'mysas' wird erstellt, um den Speicherpfad des SAS-Datasets anzugeben. Abschließend wird ein PROC PRINT verwendet, um den Inhalt der neuen SAS-Tabelle anzuzeigen. Die temporäre CAS-Tabelle wird dann gelöscht.
Kopiert!
libname mycas cas;
data mycas.produits_cas;
input ID $ NomProduit $ Prix;
datalines;
A001 Pomme 1.00
B002 Poire 1.20
C003 Orange 0.90
;
run;
libname mysas '/tmp';
data mysas.produits_sas;
set mycas.produits_cas;
run;
proc print data=mysas.produits_sas;
title 'Produits convertis en SAS Dataset';
run;
/* Nettoyage */
proc casutil;
droptable casdata='produits_cas' incaslib='CASUSER';
run;
Erklärung : Dieses Zwischenbeispiel zeigt, wie eine CAS-Tabelle in ein SAS-Dataset konvertiert wird, wobei gängige Optionen angewendet werden. Wir erstellen eine CAS-Tabelle 'ventes_cas'. Während der Konvertierung werden nur Verkäufe mit einer 'Quantite' größer als 8 ausgewählt ('where') und die Variable 'IDVente' wird gelöscht ('drop=IDVente'). Zusätzlich wird eine neue Variable 'TotalVente' berechnet. Das resultierende SAS-Dataset 'mysas.ventes_filtrees' enthält nur die angegebenen Datensätze und Variablen sowie die neue berechnete Variable. Die temporäre CAS-Tabelle wird dann gelöscht.
Kopiert!
libname mycas cas;
data mycas.ventes_cas;
input IDVente $ Produit $ Quantite PrixUnitaire DateVente :yymmdd10.;
format DateVente yymmdd10.;
datalines;
V001 Pomme 10 1.00 2023-01-05
V002 Poire 5 1.20 2023-01-05
V003 Orange 12 0.90 2023-01-06
V004 Pomme 7 1.00 2023-01-06
V005 Banane 20 0.75 2023-01-07
;
run;
libname mysas '/tmp';
data mysas.ventes_filtrees (drop=IDVente);
set mycas.ventes_cas;
where Quantite > 8;
TotalVente = Quantite * PrixUnitaire;
run;
proc print data=mysas.ventes_filtrees;
title 'Ventes filtrées et calculées, converties en SAS Dataset';
run;
/* Nettoyage */
proc casutil;
droptable casdata='ventes_cas' incaslib='CASUSER';
run;
1
LIBNAME mycas cas;
2
3
DATA mycas.ventes_cas;
4
INPUT IDVente $ Produit $ Quantite PrixUnitaire DateVente :yymmdd10.;
5
FORMAT DateVente yymmdd10.;
6
DATALINES;
7
V001 Pomme 101.002023-01-05
8
V002 Poire 51.202023-01-05
9
V003 Orange 120.902023-01-06
10
V004 Pomme 71.002023-01-06
11
V005 Banane 200.752023-01-07
12
;
13
RUN;
14
15
LIBNAME mysas '/tmp';
16
17
DATA mysas.ventes_filtrees (drop=IDVente);
18
SET mycas.ventes_cas;
19
where Quantite > 8;
20
TotalVente = Quantite * PrixUnitaire;
21
RUN;
22
23
PROC PRINTDATA=mysas.ventes_filtrees;
24
title 'Ventes filtrées et calculées, converties en SAS Dataset';
Erklärung : Dieses fortgeschrittene Beispiel verwendet eine Makro-Variable, um Daten zu filtern und wendet während der Konvertierung ein benutzerdefiniertes Format an. Eine CAS-Tabelle 'employes_cas' wird erstellt. Ein benutzerdefiniertes Format 'service_fmt' wird definiert und auf die Variable 'Service' angewendet. Eine Makro-Variable `min_salaire` wird in der WHERE-Klausel verwendet, um Mitarbeiter mit einem Gehalt größer oder gleich einem definierten Wert auszuwählen. Eine neue Variable 'CategorieAge' wird ebenfalls basierend auf dem Geburtsjahr erstellt. Das resultierende SAS-Dataset 'mysas.employes_filtres_cas' enthält die gefilterten Daten, die neue Variable und das angewendete Format. Die CAS-Tabellen und das temporäre Format werden dann gelöscht.
Kopiert!
libname mycas cas;
/* Création d'une table CAS avec des données */
data mycas.employes_cas;
input ID Employe $ Service $ Salaire Anniversaire :yymmdd10.;
format Anniversaire yymmdd10.;
datalines;
101 Dupont RH 50000 1980-05-15
102 Martin Ventes 65000 1975-11-22
103 Dubois RH 52000 1992-03-01
104 Lefevre Marketing 60000 1988-07-30
;
run;
/* Création d'un format personnalisé dans CAS */
proc format library=mycas.formats_lib;
value $service_fmt
'RH' = 'Ressources Humaines'
'Ventes' = 'Commercial'
'Marketing' = 'Marketing & Com';
run;
libname mysas '/tmp';
%let min_salaire = 55000;
data mysas.employes_filtres_cas;
set mycas.employes_cas;
where Salaire >= &min_salaire;
length CategorieAge $15.;
if year(Anniversaire) <= 1980 then CategorieAge = 'Senior';
else CategorieAge = 'Junior';
format Service $service_fmt.;
run;
proc print data=mysas.employes_filtres_cas;
title 'Employés filtrés et formatés (SAS Dataset)';
run;
/* Nettoyage */
proc casutil;
droptable casdata='employes_cas' incaslib='CASUSER';
run;
proc format library=mycas.formats_lib;
delete $service_fmt;
run;
1
LIBNAME mycas cas;
2
3
/* Création d'une table CAS avec des données */
4
DATA mycas.employes_cas;
5
INPUT ID Employe $ Service $ Salaire Anniversaire :yymmdd10.;
6
FORMAT Anniversaire yymmdd10.;
7
DATALINES;
8
101 Dupont RH 500001980-05-15
9
102 Martin Ventes 650001975-11-22
10
103 Dubois RH 520001992-03-01
11
104 Lefevre Marketing 600001988-07-30
12
;
13
RUN;
14
15
/* Création d'un format personnalisé dans CAS */
16
PROC FORMAT library=mycas.formats_lib;
17
value $service_fmt
18
'RH' = 'Ressources Humaines'
19
'Ventes' = 'Commercial'
20
'Marketing' = 'Marketing & Com';
21
RUN;
22
23
LIBNAME mysas '/tmp';
24
25
%let min_salaire = 55000;
26
27
DATA mysas.employes_filtres_cas;
28
SET mycas.employes_cas;
29
where Salaire >= &min_salaire;
30
LENGTH CategorieAge $15.;
31
IF year(Anniversaire) <= 1980THEN CategorieAge = 'Senior';
32
ELSE CategorieAge = 'Junior';
33
FORMAT Service $service_fmt.;
34
RUN;
35
36
PROC PRINTDATA=mysas.employes_filtres_cas;
37
title 'Employés filtrés et formatés (SAS Dataset)';
Erklärung : Dieses auf Viya/CAS fokussierte Beispiel zeigt, wie man bei der Konvertierung einer CAS-Tabelle in ein SAS-Dataset erweiterte Fälle behandelt, einschließlich der Verwaltung fehlender Werte und der Protokollierung. Eine CAS-Tabelle 'transactions_cas' wird mit fehlenden Beträgen erstellt. Der Konvertierungs-DATA-Schritt enthält eine Logik, um fehlende Beträge durch 0 zu ersetzen. Er verwendet auch eine Bedingung, um die Erkennung ungültiger Daten zu simulieren (obwohl der Teil `call cas.log` in diesem Beispiel auskommentiert ist, um einen tatsächlichen Fehler zu vermeiden, veranschaulicht er den Ansatz zur Fehlerbehandlung). Ziel ist es, die Robustheit der Konvertierung zu gewährleisten und den Datenprozess in einer verteilten Umgebung zu optimieren. Die temporäre CAS-Tabelle wird dann gelöscht.
Kopiert!
libname mycas cas;
/* Création d'une table CAS avec des données et des valeurs manquantes */
data mycas.transactions_cas;
input IDTrans $ Montant DateTrans :yymmdd10. Statut $;
format DateTrans yymmdd10.;
datalines;
T001 100.50 2023-10-01 Succes
T002 . 2023-10-02 Echec
T003 250.00 2023-10-03 Succes
T004 50.25 2023-10-04 Succes
T005 . 2023-10-05 Annule
;
run;
libname mysas '/tmp';
/* Utilisation de l'option _ERROR_ pour la gestion d'erreurs et de VALIDFMT */
data mysas.transactions_processed;
set mycas.transactions_cas;
/* Gérer les montants manquants - les remplacer par 0 */
if missing(Montant) then Montant = 0;
/* Simuler une erreur de format pour illustrer _ERROR_ (non exécutée dans cet exemple, mais pour démonstration) */
/* if IDTrans = 'T002' then call symputx('invalid_data_found', 'YES'); */
/* Utilisation de l'option VALIDFMT pour vérifier les formats des variables */
/* L'option VALIDFMT est généralement appliquée lors de la lecture, ici on s'assure de la propreté des données */
if Statut not in ('Succes', 'Echec', 'Annule') then call cas.log('Statut invalide détecté pour IDTrans: ' || IDTrans, 'ERROR');
run;
proc print data=mysas.transactions_processed;
title 'Transactions traitées et converties (SAS Dataset)';
run;
/* Nettoyage */
proc casutil;
droptable casdata='transactions_cas' incaslib='CASUSER';
run;
1
LIBNAME mycas cas;
2
3
/* Création d'une table CAS avec des données et des valeurs manquantes */
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.