2025-08-16 12:29:37 +03:00
2025-08-16 12:29:37 +03:00
2025-07-29 17:56:15 +03:00
2025-08-16 12:29:37 +03:00
2025-08-16 12:29:37 +03:00
2025-08-16 12:29:37 +03:00
2025-08-16 12:29:37 +03:00
2025-08-16 12:29:37 +03:00
+
2025-07-25 12:51:45 +03:00
2025-08-16 12:29:37 +03:00
2025-08-16 12:29:37 +03:00
2025-08-16 12:29:37 +03:00

Инструменты автоматизации 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 для безопасного хранения паролей.

Установка

  1. Клонируйте репозиторий:
    git clone https://prod.gitlab.dwh.rusal.com/dwh_bi/superset-tools.git
    cd superset-tools
    
  2. Установите зависимости:
    pip install -r requirements.txt
    
    (Возможно, потребуется создать requirements.txt с pydantic, requests, keyring, PyYAML, urllib3)
  3. Настройте пароли: Используйте 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]

Description
No description provided
Readme 166 KiB
Languages
Python 100%