El script inicializa los parámetros de conexión (clave API) y de directorio. Una macro '%json' gestiona el bucle de extracción en un rango de códigos/fechas definido. Para cada iteración, PROC HTTP recupera los datos JSON. Estos se analizan de forma no convencional utilizando delimitadores en un DATA STEP (lectura como archivo plano), seguido de una transposición para estructurar los datos. Finalmente, un paso global ensambla los resultados y aplica etiquetas de columnas en coreano. El código contiene rutas de Windows codificadas y una lógica de concatenación (L001_0-L001_200) que podría fallar si no existen todos los conjuntos de datos del rango.
Análisis de datos
Type : EXTERNO
Los datos se extraen de la API 'openapi.openfiscaldata.go.kr'. El script intenta escribir y volver a leer archivos temporales en 'D:\OneDrive\...', lo cual es incompatible con el entorno actual de Linux SAS Viya sin modificar la ruta '&dir'.
1 Bloque de código
MACRO
Explicación : Inicialización de las variables de entorno, la clave API y la librería de salida. La ruta 'dir' apunta a una ubicación de Windows.
Explicación : Corazón del procesamiento: la macro itera sobre las solicitudes, descarga el JSON a través de PROC HTTP y utiliza un enfoque de análisis manual (entrada con delimitadores JSON) para transformar la estructura jerárquica en una tabla SAS a través de PROC TRANSPOSE.
¡Copiado!
%macro json(data_final, String05, date_s, date_e);
%do date_want=&date_s %to &date_e;
/* ... construction URL ... */
proc http out=out url="&url" method="post" ct="application/json";
run;
data raw;
infile "&dir.SeriesDataOut.txt" dsd lrecl=999999999 dlm='{}[]:,';
input raw : $2000. @code_sas_json/8_SAS_Intro_ReadFile_MultiCol_@@.json; /* Correction de l'artefact ' @code_sas_json...' */
if _n_=5 then call symput('check', scan(raw,2));
run;
/* ... logique de transposition et merge ... */
%end;
%mend;
%json(data_final=longdata_001, String05=http://openapi.openfiscaldata.go.kr/VWFOEM, date_s=161, date_e=163);
Explicación : Consolidación final. Intenta leer un rango fijo de tablas (L001_0 a L001_200), aplica las etiquetas en coreano y filtra las variables. Atención: este paso fallará si la macro no ha generado todas las tablas de 0 a 200.
¡Copiado!
data &lib .longdata_001;
set L001_0-L001_200;
label FSCL_YY= 회계년도;
label EXE_M =집행월;
/* ... autres labels ... */
keep &var_want;
if FSCL_YY="" then delete;
run;
1
DATA &lib .longdata_001;
2
SET L001_0-L001_200;
3
label FSCL_YY= 회계년도;
4
label EXE_M =집행월;
5
/* ... autres labels ... */
6
keep &var_want;
7
IF FSCL_YY=""THEN delete;
8
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.