/
data.mos.ru

data.mos.ru

Ноутбук, используемый в примере:

 


В данной статье мы рассмотрим как:

  1. Забирать общедоступные данные с https://data.mos.ru/.
    Название выбранного датасета для примера: “Реестр лицензий на фармацевтическую деятельность…“.
    Ссылка на датасет: https://data.mos.ru/opendata/7707089084-reestr-litsenziy-na-farmatsevticheskuyu-deyatelnost-vydannyh-departamentom-zdravoohraneniya-goroda-moskvy

  2. Преобразовывать их в интерфейсе JupyterLab.

  3. Загружать в промежуточную базу данных PostgreSQL для последующей загрузки в базу данных ViQube платформы Visiology.

Здесь не рассматривается:


Сначала необходимо пройти регистрацию на сайте https://apidata.mos.ru/Account/Register для получения API ключа, а также изучить документацию портала открытых данных: https://apidata.mos.ru/Docs.

Теперь можно приступать к работе в JupyterLab.

  1. Создаем новый ноутбук.

  2. Первым блоком подключаем все необходимые нам для работы Python библиотеки:

    import requests import petl as etl import json import sqlalchemy as db import time
  3. Вторым блоком задаем для удобства полученный после регистрации API ключ и ID выбранного датасета. В нашем случае ID датасета - 1188.

    api_key = 'sdkjgh24758tywrg32' dataset_id = '1188'

    API ключ находится в очевидном месте https://apidata.mos.ru/Account/Manage, а dataset id можно посмотреть на вкладке “Паспорт” в поле “Идентификатор набора данных:“ https://data.mos.ru/opendata/7707089084-reestr-litsenziy-na-farmatsevticheskuyu-deyatelnost-vydannyh-departamentom-zdravoohraneniya-goroda-moskvy/passport?versionNumber=3&releaseNumber=165

  4. Далее подключаемся к порталу data.mos.ru, указываем API ключ и датасет id и получаем количество строк в датасете. Используем для этого подключенные ранее библиотеки requests и json. Этот шаг не обязателен и нужен лишь для отображения прогресса выгрузки данных при выполнении последующего блока.

    resp = requests.get('https://apidata.mos.ru/v1/datasets/'+dataset_id+'/count', params={'api_key':api_key}) nrows = resp.json()
  5. Теперь получаем сами данные, одновременно отображая прогресс выгрузки в процентах. Полученные данные записываем в переменную rows.

    Итого в переменной rows видим список, элементы которого являются словарями.

     

  6. Теперь необходимо сформировать таблицу из данных (используя подключенную библиотеку petl), лежащих в переменной rows. Пока это сделать нельзя, так как в каждом словаре есть ключ Cells, значение которого также является словарем. В принципе нам только эти данные и нужны. Поэтому вытащим значения ключа Cells и сформируем на основе них список словарей.

    Вот такой получится список словарей в переменной pharmacies_json.

     

  7. Теперь можно загонять данные в таблицу, используя библиотеку petl.

    Полученная таблица:

     

  8. В колонке RegistrationDate видим, что даты лежат в формате dd.MM.yyyy. Лучше сразу привести с стандартному формату yyyy-MM-dd. Меняем формат с помощью подключенной библиотеки time и petl. Записываем в новую таблицу.

     

  9. Последним шагом используем подключенную библиотеку sqlalchemy и petl для загрузки в базу данных. В данном примере PostgreSQL развернута локально на том же сервере. В PostgreSQL предварительно создана база данных databaseName и таблица в ней tableName.

     

  10. Всё! Данные готовы для загрузки в платформу.

 

Related content

Freshdesk
Freshdesk
More like this
Настройка связей между подсистемами
Настройка связей между подсистемами
More like this
Настройка связей между подсистемами
Настройка связей между подсистемами
More like this
Настройка связей между подсистемами
Настройка связей между подсистемами
More like this