Cuando se especifica una libref del motor CAS en el conjunto de datos de salida en un paso DATA sin datos de entrada, el paso DATA se ejecuta en CAS. El paso DATA CAS solo funciona en tablas CAS en memoria, lo que significa que los datos de entrada y salida deben ser tablas CAS en memoria. Las tablas CAS deben contener al menos una variable. El paso DATA se ejecuta automáticamente en CAS cuando se utilizan librefs del motor CAS en los conjuntos de datos de entrada y salida, o cuando no se especifica un conjunto de datos de entrada y se especifican datos de salida usando una libref del motor CAS. No todos los elementos del lenguaje son compatibles en un paso DATA CAS.
Análisis de datos
Type : CREATION_INTERNE
Los ejemplos utilizan datos generados (datalines) o creados dinámicamente.
1 Bloque de código
DATA Step / PROC PRINT Data
Explicación : Este ejemplo básico muestra cómo crear una tabla CAS 'produits_cas' a partir de datos en línea, y luego convertirla en un conjunto de datos SAS local 'mysas.produits_sas'. Se crea una libref 'mysas' para especificar la ruta de guardado del conjunto de datos SAS. Finalmente, se usa un PROC PRINT para mostrar el contenido de la nueva tabla SAS. La tabla CAS temporal se elimina posteriormente.
¡Copiado!
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;
Explicación : Este ejemplo intermedio muestra cómo convertir una tabla CAS en un conjunto de datos SAS, aplicando opciones comunes. Creamos una tabla CAS 'ventes_cas'. Durante la conversión, solo se seleccionan las ventas con una 'Quantite' mayor que 8 ('where') y se elimina la variable 'IDVente' ('drop=IDVente'). Además, se calcula una nueva variable 'TotalVente'. La tabla SAS resultante 'mysas.ventes_filtrees' contiene solo los registros y las variables especificadas, más la nueva variable calculada. La tabla CAS temporal se elimina posteriormente.
¡Copiado!
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';
Explicación : Este ejemplo avanzado utiliza una macro-variable para filtrar los datos y aplica un formato personalizado durante la conversión. Se crea una tabla CAS 'employes_cas'. Se define un formato personalizado 'service_fmt' y se aplica a la variable 'Service'. Se utiliza una macro-variable `min_salaire` en la cláusula WHERE para seleccionar a los empleados con un salario mayor o igual a un valor definido. También se crea una nueva variable 'CategorieAge' basada en el año de nacimiento. La tabla SAS resultante 'mysas.employes_filtres_cas' contiene los datos filtrados, la nueva variable y el formato aplicado. Las tablas CAS y el formato temporal se eliminan posteriormente.
¡Copiado!
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)';
Explicación : Este ejemplo centrado en Viya/CAS muestra cómo gestionar casos avanzados durante la conversión de una tabla CAS a un conjunto de datos SAS, incluyendo la gestión de valores faltantes y el registro. Se crea una tabla CAS 'transactions_cas' con montos faltantes. El paso DATA de conversión incluye una lógica para reemplazar los montos faltantes por 0. También utiliza una condición para simular la detección de datos inválidos (aunque la parte `call cas.log` está comentada en este ejemplo para evitar un error real, ilustra el enfoque de gestión de errores). El objetivo es asegurar la robustez de la conversión y optimizar el proceso de datos en un entorno distribuido. La tabla CAS temporal se elimina posteriormente.
¡Copiado!
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 */
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.