Veröffentlicht am :
ETL EXTERNE

Extraktion und Parsing der OpenFiscalData API

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Das Skript initialisiert Verbindungsparameter (API-Schlüssel) und Verzeichnisse. Ein '%json'-Makro verwaltet die Extraktionsschleife über einen definierten Bereich von Codes/Daten. Für jede Iteration ruft PROC HTTP JSON-Daten ab. Diese werden auf unkonventionelle Weise geparst, indem Trennzeichen in einem DATA STEP (Lesen als Flachdatei) verwendet werden, gefolgt von einer Transposition, um die Daten zu strukturieren. Schließlich werden in einem globalen Schritt die Ergebnisse zusammengeführt und Spaltenbeschriftungen in Koreanisch angewendet. Der Code enthält fest codierte Windows-Pfade und eine Verkettungslogik (L001_0-L001_200), die fehlschlagen könnte, wenn nicht alle Datensätze im Bereich existieren.
Datenanalyse

Type : EXTERNE


Die Daten werden von der API 'openapi.openfiscaldata.go.kr' extrahiert. Das Skript versucht, temporäre Dateien in 'D:\OneDrive\...' zu schreiben und wieder zu lesen, was mit der aktuellen Linux SAS Viya Umgebung ohne Änderung des Pfades '&dir' inkompatibel ist.

1 Codeblock
MACRO
Erklärung :
Initialisierung von Umgebungsvariablen, API-Schlüssel und der Ausgabelibrary. Der Pfad 'dir' verweist auf einen Windows-Speicherort.
Kopiert!
1%let dir=D:\OneDrive\Github\SAS-Projects\0002\;
2%let lib=json;
3%let String01=WBQMR1000052520180323030651FWHGU;/*apiKey*/
4LIBNAME &lib "&dir";
2 Codeblock
PROC HTTP Data
Erklärung :
Kern der Verarbeitung: Das Makro iteriert über Anfragen, lädt JSON über PROC HTTP herunter und verwendet einen manuellen Parsing-Ansatz (Input mit JSON-Trennzeichen), um die hierarchische Struktur über PROC TRANSPOSE in eine SAS-Tabelle umzuwandeln.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung :
Endgültige Konsolidierung. Versucht, einen festen Bereich von Tabellen (L001_0 bis L001_200) zu lesen, wendet die koreanischen Labels an und filtert Variablen. Achtung: Dieser Schritt schlägt fehl, wenn das Makro nicht alle Tabellen von 0 bis 200 generiert hat.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.