Publié le :
ETL EXTERNE

Extraction et Parsing API OpenFiscalData

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script initialise des paramètres de connexion (clé API) et de répertoire. Une macro '%json' gère la boucle d'extraction sur une plage de codes/dates définie. Pour chaque itération, PROC HTTP récupère les données JSON. Celles-ci sont parsées de manière non conventionnelle en utilisant des délimiteurs dans un DATA STEP (lecture comme fichier plat), suivi d'une transposition pour structurer les données. Enfin, une étape globale assemble les résultats et applique des étiquettes de colonnes en coréen. Le code contient des chemins Windows en dur et une logique de concaténation (L001_0-L001_200) qui pourrait échouer si tous les datasets de la plage n'existent pas.
Analyse des données

Type : EXTERNE


Les données sont extraites de l'API 'openapi.openfiscaldata.go.kr'. Le script tente d'écrire et de relire des fichiers temporaires dans 'D:\OneDrive\...', ce qui est incompatible avec l'environnement Linux SAS Viya actuel sans modification du chemin '&dir'.

1 Bloc de code
MACRO
Explication :
Initialisation des variables d'environnement, de la clé API et de la librairie de sortie. Le chemin 'dir' pointe vers un emplacement Windows.
Copié !
1%let dir=D:\OneDrive\Github\SAS-Projects\0002\;
2%let lib=json;
3%let String01=WBQMR1000052520180323030651FWHGU;/*apiKey*/
4LIBNAME &lib "&dir";
2 Bloc de code
PROC HTTP Data
Explication :
Cœur du traitement : la macro itère sur les requêtes, télécharge le JSON via PROC HTTP, et utilise une approche de parsing manuel (input avec délimiteurs JSON) pour transformer la structure hiérarchique en table SAS via PROC TRANSPOSE.
Copié !
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. @@; /* 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 Bloc de code
DATA STEP Data
Explication :
Consolidation finale. Tente de lire une plage fixe de tables (L001_0 à L001_200), applique les labels en coréen et filtre les variables. Attention : cette étape échouera si la macro n'a pas généré toutes les tables de 0 à 200.
Copié !
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;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.