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. Для загрузки данных в платформу вы можете использовать любой из вариантов. Когда получаемых данных много - правильнее всего использовать запись в базу данных.
Здесь не рассматривается:
Для дальнейшей загрузки в платформу можно воспользоваться стандартными средствами в платформе: “создание загрузчика” и “планы загрузки”. Всё описано в разделе документации (ссылка для версии 2.20):
Загрузка данных и формирование структуры в аналитической базе данных ViQubeПодробности работы подключенных Python библиотек. Это необходимо изучать отдельно.
Для работы нам понадобятся такие библиотеки, как: ODF, Pandas, SQLAlchemy.
Если они у вас не установлены, то вы можете воспользоваться статьей по установке библиотек:
Установка Python библиотекТеперь можно приступать к работе в JupyterLab.
- Создаем ноутбук, например, с названием odf_example.
Первым блоком подключаем все необходимые нам для работы Python библиотеки.
from odf import text, teletype ## odf для работы с файлами формата ods ## from odf.opendocument import load ## ## import xlsxwriter ## для сохранения в excel ## import pandas as pd ## pandas ## import sqlalchemy ## для подключения к postgres ##
Вторым блоком выгрузим данные из нашего ODS файла и запишем их в переменную
ods_df
.## загружаем ods file ## ods_df = pd.read_excel('fname.ods', engine='odf')
- Проверяем загруженные данные.
Сохраняем в 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 ##
Загружаем данные в 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() })
Создаём задание планировщика в Cronicle, внутри пишем shell script.
Мы получили таблицу Excel и таблицу в базе данных PostgreSQL.
Excel таблица:
Таблица в базе данных:
Полученные файлы можно брать и загружать в платформу через стандартный SQL/Excel загрузчик. На этом работа в ViXtract завершена.🥳