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.
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é !
%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. @@; /* 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);
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é !
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;
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.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.