Bonjour à tous,
J’aurais besoin de votre aide pour un problème d’import d’un fichier json en table SAS.
Le fichier json a la tête suivante :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 {"status":0,"body": {"series":[ {"id":990662592,"category":36,"timezone":"Europe\/Paris","model":53,"attrib":0,"startdate":1813270860,"enddate":1813275120,"date":"1999-12-31","deviceid":null,"data": {"var1":668,"var2":4663,"var3":3100,"var4":0,"var5":193 ,"var7":50,"var8":0,"var9":0,"var10":0,"var11":0,"var12":0,"var13":0,"var14":0},"modified":1813420334}, {"id":990662591,"category":36,"timezone":"Europe\/Paris","model":53,"attrib":0,"startdate":1813256700,"enddate":1813257480,"date":"1999-12-31","deviceid":null,"data": {"var1":122 ,"var3":249,"var4":0,"var5":22,"var6":780,"var7":50,"var8":0,"var9":0,"var10":0,"var11":0,"var12":0,"var13":0,"var14":0},"modified":1813420334} {"id":990662590,"category":36,"timezone":"Europe\/Paris","model":53,"attrib":0,"startdate":1813259700,"enddate":1813259480,"date":"1999-12-31","deviceid":null,"data": {"var1":122 ,"var2":4683,"var3":249,"var4":0,"var5":22,"var6":780,"var7":50,"var8":0,"var9":0,"var10":0,"var11":0,"var12":0,"var13":0,"var14":0},"modified":1813429334} ],"more":true,"offset":300} }
Normalement, le fichier tout est à la suite mais dans un soucis de lisibilité, je l’ai aéré. Dans l’exemple ci-dessus nous avons 3 lignes pour la futur table SAS.
L’objectif étant d’avoir une table sas avec les variables suivantes : id, category, timezone, model, attrib, startdate, enddate, date, var1, var2, var3, modified.
Actuellement, j’avais fait un programme d’import selon le code suivant.
J’ai cependant un problème c’est que l’ordre des variables peut changer du fait que la donnée est présente ou non. Cette modification n’est possible que pour les variables var1 à var14.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 data TEST; infile "monfichier.json" dsd dlm='},{' lrecl = 1000000 n=1; input @'id":' WK_ID :10. @'category":' WK_CAT :1. @'timezone":' WK_TIMEZ :$13. @'model":' WK_MODEL :2. @'attrib":' WK_ATTRIB :1. @'startdate":' WK_DDATE :10. @'enddate":' WK_FDATE :10. @'date":' WK_DATE :$10. @'var1":' WK_VAR1 :best. @'var2":' WK_VAR2 :best. @'var3":' WK_VAR3 :best. @'modified":' WK_DTMODIF :10. @@; run;
Ainsi pour la ligne 1 (id=990662592) nous avons bien var1, var2 et var3 donc le programme fonctionne mais pour la ligne 2, il manque var2. Le programme va donc cherchez var2 dans la suite du fichier dans l’exemple c’est la ligne suivante (id= 990662590). Cela va entraîner un décalage dans la table SAS et donc complètement fausser l’import.
Avez-vous une solution ?
Merci par avance de votre aide.
Bonne années à tous.