Ce script configure une bibliothèque locale et définit une macro '%json' pour extraire des données. Il itère sur une plage d'années et de pages, effectue des requêtes POST via PROC HTTP vers 'openapi.openfiscaldata.go.kr', et enregistre la réponse brute. Le parsing du JSON est effectué de manière non standard via un DATA step utilisant des délimiteurs spécifiques et une transposition. Enfin, une étape de post-traitement applique des étiquettes en coréen et filtre les variables.
Analyse des données
Type : EXTERNE
Données récupérées dynamiquement via l'API 'openapi.openfiscaldata.go.kr' (Open Fiscal Data) au format JSON.
1 Bloc de code
DATA STEP
Explication : Initialisation des variables globales (chemin, clé API) et définition de la bibliothèque de sortie.
Explication : Construction dynamique de l'URL avec les paramètres d'année et de pagination, puis exécution d'une requête POST pour télécharger les données brutes dans un fichier texte.
Explication : Importation et parsing manuel du fichier JSON (traité comme texte délimité). La logique de 'merge' avec décalage (firstobs=2) sert probablement à associer les clés et les valeurs JSON.
Copié !
data raw;
infile "&dir.SeriesDataOut.txt" dsd lrecl=999999999 dlm='{}[]:,';
input raw : $2000. /* ... */;
run;
data temp;
merge raw raw(firstobs=2 rename=(raw=_raw));
if mod(_n_,2) eq 0;
run;
/* ... logique de groupe ... */
Explication : Pivote les données parsées pour transformer les paires clé-valeur (lignes) en colonnes structurées, puis ajoute ces données à la table finale cumulative.
Copié !
proc transpose data=temp out=data_one(drop=_:);
by group;
id raw;
var _raw;
run;
data &lib..&data_final;
set &lib..&data_final data_one;
run;
1
PROC TRANSPOSEDATA=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 Bloc de code
DATA STEP Data
Explication : Nettoyage final de la table : suppression des lignes vides, application des étiquettes de colonnes (en coréen) pour la documentation métier, et conservation uniquement des variables d'intérêt définies dans &var_want.
Copié !
/*변수명, 변수 형태 변경_start*/
data &lib .longdata_002;
set &lib .longdata_002;
if FSCL_YY="" then delete;
label FSCL_YY=회계연도;
/* ... autres labels ... */
label NRC_AMT =미수납액(원);
keep &var_want;
run;
1
/*변수명, 변수 형태 변경_start*/
2
DATA &lib .longdata_002;
3
SET &lib .longdata_002;
4
IF FSCL_YY=""THEN delete;
5
label FSCL_YY=회계연도;
6
/* ... autres labels ... */
7
label NRC_AMT =미수납액(원);
8
keep &var_want;
9
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.
« Ce script illustre un défi récurrent pour le Data Engineer : l'ingestion de données publiques massives via des services web REST, là où les connecteurs standards peuvent faire défaut. La stratégie employée ici combine la puissance de PROC HTTP avec une technique de parsing manuel ingénieuse pour traiter les flux de l'Open Data fiscal coréen.
Cette méthode de parsing manuel est extrêmement performante pour les fichiers JSON "plats" ou répétitifs issus des portails Open Data. Toutefois, assurez-vous que les caractères de délimitation choisis ne sont pas présents à l'intérieur des valeurs textuelles coréennes, sous peine de décaler les colonnes lors de la transposition. »
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.