Инструменты автоматизации Superset
Обзор
Этот репозиторий содержит Python-скрипты и библиотеку (superset_tool) для автоматизации задач в Apache Superset, таких как:
- Резервное копирование: Экспорт всех дашбордов из экземпляра Superset в локальное хранилище.
- Миграция: Перенос и преобразование дашбордов между разными средами Superset (например, Development, Sandbox, Production).
Структура проекта
backup_script.py: Основной скрипт для выполнения запланированного резервного копирования дашбордов Superset.migration_script.py: Основной скрипт для переноса конкретных дашбордов между окружениями, включая переопределение соединений с базами данных.search_script.py: Скрипт для поиска данных во всех доступных датасетах на сервереsuperset_tool/:client.py: Python-клиент для взаимодействия с API Superset.exceptions.py: Пользовательские классы исключений для структурированной обработки ошибок.models.py: Pydantic-модели для валидации конфигурационных данных.utils/:fileio.py: Утилиты для работы с файловой системой (работа с архивами, парсинг YAML).logger.py: Конфигурация логгера для единообразного логирования в проекте.network.py: HTTP-клиент для сетевых запросов с обработкой аутентификации и повторных попыток.
Настройка
Требования
- Python 3.9+
pipдля управления пакетами.keyringдля безопасного хранения паролей.
Установка
- Клонируйте репозиторий:
git clone https://prod.gitlab.dwh.rusal.com/dwh_bi/superset-tools.git cd superset-tools - Установите зависимости:
(Возможно, потребуется создать
pip install -r requirements.txtrequirements.txtсpydantic,requests,keyring,PyYAML,urllib3) - Настройте пароли:
Используйте
keyringдля хранения паролей API-пользователей Superset. Пример дляbackup_script.py:При необходимости заменитеimport keyring keyring.set_password("system", "dev migrate", "пароль пользователя migrate_user") keyring.set_password("system", "prod migrate", "пароль пользователя migrate_user") keyring.set_password("system", "sandbox migrate", "пароль пользователя migrate_user")"system"на подходящее имя сервиса.
Использование
Скрипт резервного копирования (backup_script.py)
Для создания резервных копий дашбордов из настроенных окружений Superset:
python backup_script.py
Резервные копии сохраняются в P:\Superset\010 Бекапы\ по умолчанию. Логи хранятся в P:\Superset\010 Бекапы\Logs.
Скрипт миграции (migration_script.py)
Для переноса конкретного дашборда:
python migration_script.py
Примечание: В текущей версии скрипт переносит жестко заданный дашборд (FI0070) и использует локальный .zip файл в качестве источника. Для использования в Production необходимо:
- В текущей версии управление откуда и куда выполняется параметрами
from_cиto_c.
Скрипт поиска (search_script.py)
Строка для поиска и клиенты для поиска задаются здесь
Поиск всех таблиц в датасете
results = search_datasets(
client=clients['dev'],
search_pattern=r'dm_view\.account_debt',
search_fields=["sql"],
logger=logger
)
Логирование
Логи пишутся в файл в директории Logs (например, P:\Superset\010 Бекапы\Logs для резервных копий) и выводятся в консоль. Уровень логирования по умолчанию — INFO.
Разработка и вклад
- Следуйте архитектурным паттернам (
[MODULE],[CONTRACT],[SECTION],[ANCHOR]) и правилам логирования. - Весь новый код должен соответствовать принципам "LLM-friendly" генерации.
- Используйте
Pydantic-модели для валидации данных. - Реализуйте всестороннюю обработку ошибок с помощью пользовательских исключений.
[COHERENCE_CHECK_PASSED] README.md создан и согласован с модулями.
Перевод выполнен с сохранением оригинальной Markdown-разметки и стиля документа. [1]