Los ejemplos utilizan datos generados (datalines) para asegurar la autonomía del código.
1 Bloque de código
PROC DMSRVDATASVC Data
Explicación : Este ejemplo ilustra el uso más simple del procedimiento DMSRVDATASVC. Crea un conjunto de datos de entrada `work.insrv` con nombres y direcciones. Luego, ejecuta un servicio llamado 'StandardizeAddresses' (que debe existir en el servidor DataFlux) usando este conjunto de datos como entrada y almacena los resultados en `work.outsrv_basic`. Finalmente, muestra el conjunto de datos de salida.
¡Copiado!
DATA work.insrv;
LENGTH Name $30 Address $50;
INPUT Name $ Address $;
DATALINES;
John Doe 123 Main St
Jane Smith 456 Oak Ave
;
RUN;
PROC DMSRVDATASVC
SERVICE='StandardizeAddresses'
DATA=work.insrv
OUT=work.outsrv_basic;
RUN;
PROC PRINT DATA=work.outsrv_basic;
TITLE 'Résultats du service de standardisation basique';
RUN;
1
DATA work.insrv;
2
LENGTH Name $30 Address $50;
3
INPUT Name $ Address $;
4
DATALINES;
5
John Doe 123 Main St
6
Jane Smith 456 Oak Ave
7
;
8
RUN;
9
10
PROC DMSRVDATASVC
11
SERVICE='StandardizeAddresses'
12
DATA=work.insrv
13
OUT=work.outsrv_basic;
14
RUN;
15
16
PROC PRINTDATA=work.outsrv_basic;
17
TITLE 'Résultats du service de standardisation basique';
18
RUN;
2 Bloque de código
PROC DMSRVDATASVC Data
Explicación : Este ejemplo muestra cómo especificar opciones adicionales al ejecutar un servicio. Además de `SERVICE`, `DATA` y `OUT`, utiliza `SERVER` para designar explícitamente el servidor DataFlux (aquí 'localhost') y `PORT` para un puerto no estándar (21037). La opción `LOG` se añade para capturar los mensajes de error o información del servicio en un conjunto de datos SAS.
¡Copiado!
DATA work.input_data;
LENGTH Email $50;
INPUT Email $;
DATALINES;
test @example.com
invalid-email
another.one @domain.co.uk
;
RUN;
PROC DMSRVDATASVC
SERVICE='EmailValidationService'
SERVER='localhost'
PORT=21037
DATA=work.input_data
OUT=work.output_data_intermediate
LOG=work.service_log;
RUN;
PROC PRINT DATA=work.output_data_intermediate;
TITLE 'Résultats du service de validation d''e-mails';
RUN;
PROC PRINT DATA=work.service_log;
TITLE 'Journal d''exécution du service';
RUN;
1
DATA work.input_data;
2
LENGTH Email $50;
3
INPUT Email $;
4
DATALINES;
5
test @example.com
6
invalid-email
7
another.one @domain.co.uk
8
;
9
RUN;
10
11
PROC DMSRVDATASVC
12
SERVICE='EmailValidationService'
13
SERVER='localhost'
14
PORT=21037
15
DATA=work.input_data
16
OUT=work.output_data_intermediate
17
LOG=work.service_log;
18
RUN;
19
20
PROC PRINTDATA=work.output_data_intermediate;
21
TITLE 'Résultats du service de validation d''e-mails';
22
RUN;
23
24
PROC PRINTDATA=work.service_log;
25
TITLE 'Journal d''exécution du service';
26
RUN;
3 Bloque de código
PROC DMSRVDATASVC Data
Explicación : Este ejemplo avanzado simula el procesamiento por lotes de nombres de clientes utilizando un servicio de estandarización. La opción `ERRORONFAILURE=YES` es crucial aquí: le indica a SAS que genere un error si el servicio DataFlux falla, lo que es útil para la integración en cadenas de procesamiento automatizadas. El código incluye una macro simple para verificar el éxito de la operación a través del código de retorno de apertura del conjunto de datos, señalando los errores de forma programática.
¡Copiado!
DATA work.customer_names;
LENGTH CustomerID 8 FirstName $20 LastName $20;
INPUT CustomerID FirstName $ LastName $;
DATALINES;
1 John Doe
2 Jane Smith
3 PETER J. JONES
4 mary_ann
;
RUN;
PROC DMSRVDATASVC
SERVICE='NameStandardizationBatch'
DATA=work.customer_names
OUT=work.standardized_names
ERRORONFAILURE=YES;
RUN;
/* Verificar posibles errores en el log */
%MACRO CheckLog;
%LOCAL rc;
%LET rc = %SYSFUNC(OPEN(WORK.standardized_names, I));
%IF &rc EQ 0 %THEN %DO;
%PUT NOTE: El servicio se ejecutó correctamente.;
%LET rc = %SYSFUNC(CLOSE(&rc));
%END;
%ELSE %DO;
%PUT ERROR: El servicio falló. Consulte el log de SAS para más detalles.;
%END;
%MEND CheckLog;
%CheckLog;
PROC PRINT DATA=work.standardized_names;
TITLE 'Noms des clients standardisés';
RUN;
%PUT ERROR: El servicio falló. Consulte el log de SAS para más detalles.;
29
%END;
30
%MEND CheckLog;
31
32
%CheckLog;
33
34
PROC PRINTDATA=work.standardized_names;
35
TITLE 'Noms des clients standardisés';
36
RUN;
4 Bloque de código
PROC DMSRVDATASVC Data
Explicación : Este ejemplo demuestra la integración del procedimiento DMSRVDATASVC en un entorno SAS Viya con tablas CAS. Inicializa una sesión CAS y crea una tabla CAS (`mycas.raw_products`). El procedimiento DMSRVDATASVC se llama luego especificando esta tabla CAS como entrada. El servicio de calidad de datos (aquí 'ProductDescriptionCleanse') procesa la tabla en memoria distribuida, y los resultados se almacenan en una nueva tabla CAS (`mycas.cleaned_products`). Los comandos PROC CASUTIL y PROC PRINT se utilizan para verificar las tablas CAS y mostrar los datos procesados, destacando el procesamiento en memoria.
¡Copiado!
CAS;
CASLIB _ALL_ ASSIGN;
DATA _NULL_;
CALL SYMPUTX('CAS_SESSION_NAME', %SYSFUNC(GETOPTION(CASAUTOSESS)));
RUN;
/* Creación de una tabla CAS a partir de datos SAS */
DATA mycas.raw_products;
LENGTH ProductID $10 Description $100;
INPUT ProductID $ Description $;
DATALINES;
P001 Hand Sanitizer 500ml
P002 Hand sanitizer 100ml
P003 Hand SANITIZER 200 ml
;
RUN;
/* Ejecución del servicio de Calidad de Datos en la tabla CAS */
PROC DMSRVDATASVC
SERVICE='ProductDescriptionCleanse'
DATA=mycas.raw_products
OUT=mycas.cleaned_products;
RUN;
/* Visualización de los resultados de la tabla CAS */
PROC CASUTIL SESSREF=&CAS_SESSION_NAME;
LIST TABLES / CASLIB='CASUSER';
QUIT;
PROC PRINT DATA=mycas.cleaned_products;
TITLE 'Descriptions de produits nettoyées via CAS';
RUN;
/* Creación de una tabla CAS a partir de datos SAS */
9
DATA mycas.raw_products;
10
LENGTH ProductID $10 Description $100;
11
INPUT ProductID $ Description $;
12
DATALINES;
13
P001 Hand Sanitizer 500ml
14
P002 Hand sanitizer 100ml
15
P003 Hand SANITIZER 200 ml
16
;
17
RUN;
18
19
/* Ejecución del servicio de Calidad de Datos en la tabla CAS */
20
PROC DMSRVDATASVC
21
SERVICE='ProductDescriptionCleanse'
22
DATA=mycas.raw_products
23
OUT=mycas.cleaned_products;
24
RUN;
25
26
/* Visualización de los resultados de la tabla CAS */
27
PROC CASUTIL SESSREF=&CAS_SESSION_NAME;
28
LIST TABLES / CASLIB='CASUSER';
29
QUIT;
30
31
PROC PRINTDATA=mycas.cleaned_products;
32
TITLE 'Descriptions de produits nettoyées via CAS';
33
RUN;
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.