Я использую библиотеку python pandaSDMX
для извлечения целых наборов данных из базы данных OECD и преобразования их в формат CSV (любой читаемый формат будет в порядке, потому что я хочу поместить окончательный вывод в SQL database).
Чтобы получить доступ к набору данных OECD в формате SDMX- Json (также есть формат SDM XML), вы можете вставить в браузер ссылку, подобную этой:
http://stats.oecd.org/sdmx-json/data/PART2/all/all
Примечание: «PART2» - это имя набора данных
Проблема есть некоторые наборы данных OECD, для которых SDMX- Json не имеет измерение с именем Time_Period и ВСЕ sdmx- json синтаксический анализ python библиотек, которые я ' мы нашли только синтаксический анализ SDMX- Json, который имеет это измерение .
Я также пытался найти библиотеку python, которая могла бы анализировать SDM XML (SDMX-ML ) файла (это также было бы хорошо), но создание этого процесса в 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()
Итак, мой последний вопрос :
Кто-нибудь знает способ анализа файлов SDMX- Json, которые не имеют размерности Time_Period ? Или другой способ автоматического извлечения всего набора данных из ОЭСР и его синтаксического анализа ...
Как пример:
- Набор данных с периодом времени (этот вариант отлично работает для меня) : http://stats.oecd.org/sdmx-json/data/TALIS_EDUGPS/all/all
- Набор данных без периода времени: http://stats.oecd.org/sdmx-json/data/PART2/all/all