Publicado el :

DataGridProvider

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script está diseñado para ser ejecutado como un Stored Process o un Job SAS©. Toma como entrada parámetros macro (dset, start, limit) para definir la tabla de origen y la ventana de paginación. Calcula el número total de observaciones, extrae el subconjunto solicitado en una tabla temporal y luego genera manualmente una estructura JSON que contiene el número total de registros y la tabla de datos para la página solicitada, todo ello enviado al flujo de salida web (_webout).
Análisis de datos

Type : MIXTE


Por defecto, el script utiliza 'sashelp.class' a través de la macro %defaults. La tabla de origen se puede modificar dinámicamente mediante la variable macro 'dset'. Se define una librería 'dtemp' que apunta a 'D:\Temp', pero no se utiliza explícitamente en la lógica de transformación principal.

1 Bloque de código
LIBNAME
Explicación :
Definición de una librería temporal (ruta de Windows, a adaptar para Viya/Linux).
¡Copiado!
1LIBNAME dtemp 'D:\Temp' ;
2 Bloque de código
MACRO
Explicación :
Inicialización de los parámetros por defecto (tabla de origen, inicio, límite) si no son proporcionados por el entorno de llamada.
¡Copiado!
1%macro defaults ;
2 %IF %symexist(dset)=0 %THEN %DO;
3 %global dset;
4 %let dset=sashelp.class;
5 %END;
6 %IF ^%symexist(start) %THEN %DO; %global start; %let start=0; %END;
7 %IF ^%symexist(limit) %THEN %DO; %global limit; %let limit=160; %END;
8%mend defaults;
9%defaults
3 Bloque de código
DATA STEP
Explicación :
Apertura de la tabla de origen para recuperar el número total de observaciones (metadato 'nobs') y almacenamiento en una variable macro.
¡Copiado!
1DATA _null_ ;
2 dsid=open("&dset");
3 nobs=attrn(dsid,'nobs');
4 call symput('nobs',strip(put(nobs,8.)));
5RUN;
4 Bloque de código
MACRO
Explicación :
Cálculo de los límites de paginación (primer y último registro a extraer).
¡Copiado!
1%let first=%eval(&start+1);
2%let last=%eval(&start+&limit);
3%put first=&first last=&last nobs=&nobs;
4 
5 Bloque de código
DATA STEP Data
Explicación :
Creación de la tabla 'subset' que contiene únicamente los datos de la página solicitada.
¡Copiado!
1 
2DATA subset;
3SET &dset (firstobs=&first obs=&last);
4RUN;
5 
6 Bloque de código
DATA STEP
Explicación :
Paso DATA _NULL_ que recorre la tabla 'subset' y escribe manualmente una estructura JSON formateada (totalCount, rows) en el filestream de salida '_webout'. El código inspecciona dinámicamente los tipos de variables (numéricas o de caracteres) para formatear correctamente los valores JSON.
¡Copiado!
1DATA _null_ ;
2 LENGTH type $ 1 char $ 128 num 8;
3 file _webout;
4 dsid=open("subset");
5 /* ... logique de génération JSON ... */
6 dsid=close(dsid);
7RUN;
7 Bloque de código
MACRO
Explicación :
Llamada a las macros estándar de Stored Process para finalizar la ejecución y gestionar la salida.
¡Copiado!
1%let _result=streamfragment ;
2%STPBEGIN;
3/* ... */
4%STPEND;
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.