# Инструменты автоматизации 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. **Клонируйте репозиторий:** ```bash git clone https://prod.gitlab.dwh.rusal.com/dwh_bi/superset-tools.git cd superset-tools ``` 2. **Установите зависимости:** ```bash pip install -r requirements.txt ``` (Возможно, потребуется создать `requirements.txt` с `pydantic`, `requests`, `keyring`, `PyYAML`, `urllib3`) 3. **Настройте пароли:** Используйте `keyring` для хранения паролей API-пользователей Superset. Пример для `backup_script.py`: ```python 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: ```bash python backup_script.py ``` Резервные копии сохраняются в `P:\Superset\010 Бекапы\` по умолчанию. Логи хранятся в `P:\Superset\010 Бекапы\Logs`. ### Скрипт миграции (`migration_script.py`) Для переноса конкретного дашборда: ```bash python migration_script.py ``` **Примечание:** В текущей версии скрипт переносит жестко заданный дашборд (`FI0070`) и использует локальный `.zip` файл в качестве источника. **Для использования в Production необходимо:** - В текущей версии управление откуда и куда выполняется параметрами `from_c` и `to_c`. ### Скрипт поиска (`search_script.py`) Строка для поиска и клиенты для поиска задаются здесь # Поиск всех таблиц в датасете ```python 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]