ODS

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 завершена.🥳