【发布时间】:2020-03-21 11:21:15
【问题描述】:
我正在使用 python 库 pandaSDMX 从 OECD 数据库中提取整个数据集,并将它们转换为 CSV 格式(任何可读格式都可以,因为我想将最终输出放入 SQL 数据库中)。
要访问 SDMX-Json 格式的 OECD 数据集(也有 SDMXML 格式),您可以在浏览器上粘贴如下链接:
http://stats.oecd.org/sdmx-json/data/PART2/all/all
注意:“PART2”是数据集的名称
问题是,有一些 OECD 数据集的 SDMX-Json没有一个名为 Time_Period 的维度,以及我所有的 sdmx-json 解析 python 库已发现仅解析具有此维度的 SDMX-Json。
我还尝试找到一些可以解析 SDMXML (SDMX-ML) 文件的 python 库(这也可以),但是在 python 中构建该过程对我不起作用...
这是我用来解析 SDMX-Json 数据集并将输出 CSV 文件写入 Azure blob 存储的一段代码:
# itera sob cada ficheiro json e converte o conteudo para csv
for dataset in datasetList:
cursor = cnxn.cursor()
Values = [dataset, datasetFiltersList[counter]]
cursor.execute(SQLLogCommand, Values)
cnxn.commit()
#logging.info('Analysing dataset: ' + dataset)
try:
data_response = oecd.data(resource_id=dataset, key=datasetFiltersList[counter])
except UnicodeDecodeError:
Values = [datetime.today().strftime('%Y-%m-%d-%H:%M:%S'), 'Unicode Decode Error - Error', 0]
cursor.execute(SQLUpdateCommand, Values)
cnxn.commit()
except KeyError:
Values = [datetime.today().strftime('%Y-%m-%d-%H:%M:%S'), 'Key Error - Error', 0]
cursor.execute(SQLUpdateCommand, Values)
cnxn.commit()
else:
data = data_response.data
if data.dim_at_obs == 'TIME_PERIOD':
df = createDF(data, useIDs=False)
blobService.create_blob_from_text(CONTAINERNAME, csvBlobPath + dataset + '.csv' , df.to_csv(index=False, sep='|', encoding='utf-8'))
Values = [datetime.today().strftime('%Y-%m-%d-%H:%M:%S'), 'Success', 1]
cursor.execute(SQLUpdateCommand, Values)
cnxn.commit()
#logging.info('Dataset ' + dataset + ' analysed!')
else:
print('no time period error on dataset: ' + dataset)
Values = [datetime.today().strftime('%Y-%m-%d-%H:%M:%S'), 'No Time Period - Error', 0]
cursor.execute(SQLUpdateCommand, Values)
cnxn.commit()
cnxn.close()
所以,我的最后一个问题是:
有谁知道解析没有 Time_Period 的 SDMX-Json 文件的方法 方面?或其他自动提取整个数据集的方法 OECD 并解析它...
例如:
- 有时间段的数据集(这个对我来说很好): http://stats.oecd.org/sdmx-json/data/TALIS_EDUGPS/all/all
- 没有时间段的数据集: http://stats.oecd.org/sdmx-json/data/PART2/all/all
【问题讨论】:
标签: python json parsing blob sdmx