ODS

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



Тип статьиИнструкция
КомпетенцииJupyterLab, Python, Pandas, ODF, ODS
Необходимые праваДоступ к JupyterLab
Версии компонентовJupyter core - 4.7.1 , pandas - 1.4.3, Sqlalchemy - 1.3.23
Статус
БЕТА
СложностьЛЕГКО
Полезные ссылкиPandas 
Дополнительные сведенияОС Ubuntu 20.04


В данной статье рассматривается пример обработки данных из ODS файла(OpenDocument). Данный файл содержит в себе несколько столбцов.

Для выгрузки данных из ODS будет использована библиотека ODF. Для выгрузки данных в PostgreSQL используется библиотека Pandas с движком sqlalchemy.

Целью этого задания является получение данных из ODS файла для выгрузки их в платформу и построения дашборда.
Пример не является шаблонным: в каждом случае задачи разнятся, и работать с данными придется по-другому.

Вот особенности данного кейса:

  • Количество получаемых данных небольшое, но для демонстрации правильного подхода все выгруженные и обработанные данные сохраняются в Excel файл и базу данных PostgreSQL. Для загрузки данных в платформу вы можете использовать любой из вариантов. Когда получаемых данных много - правильнее всего использовать запись в базу данных.

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


Для работы нам понадобятся такие библиотеки, как: ODF, Pandas, SQLAlchemy.

Если они у вас не установлены, то вы можете воспользоваться статьей по установке библиотек:

Установка Python библиотек

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


  1. Создаем ноутбук, например, с названием odf_example.
  2. Первым блоком подключаем все необходимые нам для работы Python библиотеки.

    from odf import text, teletype                        ##   odf    для работы с файлами формата ods ##
    from odf.opendocument import load             ##                                                                          ##
    import xlsxwriter                                            ##      для сохранения в excel                             ##
    import pandas as pd                                     ##   pandas                                                           ##
    import sqlalchemy                                         ##   для подключения к postgres                        ##
    
  3. Вторым блоком выгрузим данные из нашего ODS файла и запишем их в переменную ods_df

    ## загружаем ods file ##
    ods_df = pd.read_excel('fname.ods', engine='odf')
  4. Проверяем загруженные данные.


  5. Сохраняем в Excel.

    ##сохраняем в excel
    name = 'hello_1234.xlsx'                               ## задаём имя файла, который будет создаваться ##
    writer = pd.ExcelWriter(name, engine = 'xlsxwriter')   ## задаём переменную будущего файла          ##
    ods_df.to_excel(writer, sheet_name = '1')              ## записываем наш массив в файл         ##
    writer.save()										   ## save  ##
    writer.close()										   ## close ##
  6. Загружаем данные в Postgres.

    ## создаём engine##
    engine = sqlalchemy.create_engine('postgresql://admin:pass@10.10.10.10:5432/postgres')
    
    ##загружаем данные в postgress ##
    end_df.to_sql('ods_df', engine, index=False, if_exists='replace', dtype={
        'fname': sqlalchemy.VARCHAR(50),
        'lname': sqlalchemy.VARCHAR(255),
        'salary': sqlalchemy.Integer()
    })
  7. Создаём задание планировщика в Cronicle, внутри пишем shell script.


Мы получили таблицу Excel и таблицу в базе данных PostgreSQL.

Excel таблица:


Таблица в базе данных:

Полученные файлы можно брать и загружать в платформу через стандартный SQL/Excel загрузчик. На этом работа в ViXtract завершена.🥳