Publicado el :
ETL EXTERNE

Extracción y Análisis de Datos Fiscales Coreanos a través de API

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script configura una biblioteca local y define una macro '%json' para extraer datos. Itera sobre un rango de años y páginas, realiza solicitudes POST a través de PROC HTTP a 'openapi.openfiscaldata.go.kr' y guarda la respuesta bruta. El análisis del JSON se realiza de forma no estándar a través de un paso DATA que utiliza delimitadores específicos y una transposición. Finalmente, un paso de post-procesamiento aplica etiquetas en coreano y filtra las variables.
Análisis de datos

Type : EXTERNE


Datos recuperados dinámicamente a través de la API 'openapi.openfiscaldata.go.kr' (Open Fiscal Data) en formato JSON.

1 Bloque de código
DATA STEP
Explicación :
Inicialización de variables globales (ruta, clave API) y definición de la biblioteca de salida.
¡Copiado!
1%let dir=C:\json\;
2%let lib=json;
3%let String01=WBQMR1000052520180323030651FWHGU;/*apiKey*/
4 
5LIBNAME &lib "&dir";
2 Bloque de código
PROC HTTP Data
Explicación :
Construcción dinámica de la URL con los parámetros de año y paginación, luego ejecución de una solicitud POST para descargar los datos brutos en un archivo de texto.
¡Copiado!
1%macro json(data_final, String05, date_s, date_e);
2 /* ... boucle date ... */
3 %let url=&string05?FSCL_YY=&date_want&key=&string01&type=json&pindex=&string02&psize=1000;
4 
5 filename out "&dir.SeriesDataOut.txt" recfm=v lrecl=999999999;
6 PROC HTTP out=out url="&url" method="post" ct="application/json";
7 RUN;
3 Bloque de código
DATA STEP Data
Explicación :
Importación y análisis manual del archivo JSON (tratado como texto delimitado). La lógica de 'merge' con desplazamiento (firstobs=2) probablemente sirve para asociar las claves y los valores JSON.
¡Copiado!
1 DATA raw;
2 INFILE "&dir.SeriesDataOut.txt" dsd lrecl=999999999 dlm='{}[]:,';
3 INPUT raw : $2000. /* ... */;
4 RUN;
5 
6 DATA temp;
7 MERGE raw raw(firstobs=2 rename=(raw=_raw));
8 IF mod(_n_,2) eq 0;
9 RUN;
10 /* ... logique de groupe ... */
4 Bloque de código
PROC TRANSPOSE Data
Explicación :
Pivota los datos analizados para transformar los pares clave-valor (filas) en columnas estructuradas, luego agrega estos datos a la tabla final acumulativa.
¡Copiado!
1 PROC TRANSPOSE DATA=temp out=data_one(drop=_:);
2 BY group;
3 id raw;
4 var _raw;
5 RUN;
6 
7 DATA &lib..&data_final;
8 SET &lib..&data_final data_one;
9 RUN;
5 Bloque de código
DATA STEP Data
Explicación :
Limpieza final de la tabla: eliminación de filas vacías, aplicación de etiquetas de columna (en coreano) para la documentación empresarial y conservación únicamente de las variables de interés definidas en &var_want.
¡Copiado!
1/*변수명, 변수 형태 변경_start*/
2DATA &lib .longdata_002;
3SET &lib .longdata_002;
4IF FSCL_YY="" THEN delete;
5label FSCL_YY=회계연도;
6/* ... autres labels ... */
7label NRC_AMT =미수납액(원);
8keep &var_want;
9RUN;
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.