Publicado el :
ETL EXTERNO

Extracción y Análisis de la API OpenFiscalData

Este código también está disponible en: Deutsch English Français
En espera de validación
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.
¡Copiado!
1%let dir=D:\OneDrive\Github\SAS-Projects\0002\;
2%let lib=json;
3%let String01=WBQMR1000052520180323030651FWHGU;/*apiKey*/
4LIBNAME &lib "&dir";
2 Bloque de código
PROC HTTP Data
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!
1%macro json(data_final, String05, date_s, date_e);
2 %DO date_want=&date_s %to &date_e;
3 /* ... construction URL ... */
4 PROC HTTP out=out url="&url" method="post" ct="application/json";
5 RUN;
6 
7 DATA raw;
8 INFILE "&dir.SeriesDataOut.txt" dsd lrecl=999999999 dlm='{}[]:,';
9 INPUT raw : $2000. @code_sas_json/8_SAS_Intro_ReadFile_MultiCol_@@.json; /* Correction de l'artefact ' @code_sas_json...' */
10 IF _n_=5 THEN call symput('check', scan(raw,2));
11 RUN;
12 /* ... logique de transposition et merge ... */
13 %END;
14%mend;
15 
16%json(data_final=longdata_001, String05=http://openapi.openfiscaldata.go.kr/VWFOEM, date_s=161, date_e=163);
3 Bloque de código
DATA STEP Data
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!
1DATA &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;
8RUN;
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.