https://github.com/profcomff/dwh-definitions
Data structures and migrations library
https://github.com/profcomff/dwh-definitions
airflow data-platform dwh
Last synced: 7 months ago
JSON representation
Data structures and migrations library
- Host: GitHub
- URL: https://github.com/profcomff/dwh-definitions
- Owner: profcomff
- License: bsd-3-clause
- Created: 2023-08-03T17:00:34.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-04-07T14:22:16.000Z (7 months ago)
- Last Synced: 2025-04-07T14:38:56.579Z (7 months ago)
- Topics: airflow, data-platform, dwh
- Language: Python
- Homepage: https://pypi.org/project/profcomff-definitions/
- Size: 236 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dwh-definitions
Библиотека, описывающая структуру всех баз данных профкома ФФ. Реализована с помощью разделения всех баз данных в 4 категории - [STG](https://github.com/profcomff/dwh-definitions/blob/main/profcomff_definitions/STG/README.md), [DWH](https://github.com/profcomff/dwh-definitions/blob/main/profcomff_definitions/DWH/README.md), [ODS](https://github.com/profcomff/dwh-definitions/blob/main/profcomff_definitions/ODS/README.md) и [DM](https://github.com/profcomff/dwh-definitions/blob/main/profcomff_definitions/DM/README.md).
[
](https://easycode.profcomff.com/templates/docker-airflow/workspace?mode=manual)
## Функционал
- Удобное и структурированное хранение данных
- Разграничение и удобное управление правами доступа
## Разработка
- Backend разработка – https://github.com/profcomff/.github/wiki/%5Bdev%5D-Backend-разработка
- Работа с данными -https://github.com/profcomff/.github/wiki/%5Bdev%5D-Работа-с-данными
## Quick start
1. Перейдите в папку проекта
2. Создайте виртуальное окружение командой:
```commandline
python3 -m venv ./venv/
```
3. Установите библиотеки
```commandline
pip install -r requirements.txt
```
## Использование
В своих базах данных мы используем postgres базы данных. Для того чтобы использовать данный репозиторий необходимо сделать несколько предварительных шагов
1. Проделай пункты из "Как начать работу локально" отсюда: https://github.com/profcomff/dwh-airflow
2. Склонируй этот репозиторий на свой компьютер командой `git clone https://github.com/profcomff/dwh-definitions`
3. Создай виртуальное окружение Python. Для этого нужно:
- Установить python3.11 (если еще не установлен): https://www.python.org/downloads/
- Установить pip (если еще не установлен, команда в консоли `python -m ensurepip --upgrade`)
- Создать в папке `dwh-definitions` новое виртуальное окружение python3.11 (команда в консоли `python3.11 -m venv venv` или `python -m venv venv`)
- Подключиться к этому виртуальному окружению (команда консоли на windows: `venv\Scripts\activate.bat`, на мак/линукс: `source venv/bin/activate`)
- Установить библиотеки командой `pip install -U -r requirements.dev.txt -r requirements.txt`
Теперь у тебя на компьютере есть база данных, Airflow, описание базы данных в виде питона
4. Обнови схему базы данных командой `alembic upgrade head`. Это создаст в базе данных все те же таблицы, что есть в production базе данных.
5. После этого в папках из /ddl можно создавать свои схемы таблиц. Пример таблицы можно посмотреть в /ddl/STG/union_member.py
### Дальнейшие шаги:
Рассмотрим дальнейшие действия на примере тестовой таблицы Test. Допустим, что она лежит в /ddl/STG/test_table.py
1. Импортировать созданную таблицу в \_\_init__.py файл соответствующей папки. В нашем случае в /ddl/STG/\_\_init__.py необходимо дописать строчку:
```python
from .test_table import Test
```
2. В строчку c \_\_all__ = [] необходимо добавить название импортированной таблицы в кавычках. В нашем случае файл \_\_init__.py будет выглядеть так:
```python
from .test_table import Test
__all__ = ["Test"]
```
3. Если у вас несколько таблиц, то в \_\_all__ их надо перечислять через запятую. К примеру:
```python
from .test_file_first import TestFirst, TestTrird
from .test_file_second import TestSecond
__all__ = ["TestFirst", "TestSecond", "TestTrird"]
```
При этом порядок перечисления таблиц в \_\_all__ не важен
4. После импортирования всех таблиц проведите миграцию, чтобы создались новые таблицы. Миграцию можно провести командами:
```commandline
alembic revision --autogenerate -m "название_вашей_миграции"
alembic upgrade head
```
Перва команда создает ревизию - скрипт для перехода на новую версию базы данных.
Вторая команда обновляет базу данных (в данном случае создает новую таблицу Test)
## Параметризация и плагины
Никаких настроек кроме стандартных нет
## Ссылки
- Backend разработка – https://github.com/profcomff/.github/wiki/%5Bdev%5D-Backend-разработка
- Работа с данными -https://github.com/profcomff/.github/wiki/%5Bdev%5D-Работа-с-данными