- Add LoggingConfig model and logging field to GlobalSettings - Implement belief_scope context manager for structured logging - Add configure_logger for dynamic level and file rotation settings - Add logging configuration UI to Settings page - Update ConfigManager to apply logging settings on initialization and updates
Инструменты автоматизации Superset
Обзор
Этот репозиторий содержит Python-скрипты и библиотеку (superset_tool) для автоматизации задач в Apache Superset, таких как:
- Резервное копирование: Экспорт всех дашбордов из экземпляра Superset в локальное хранилище.
- Миграция: Перенос и преобразование дашбордов между разными средами Superset (например, Development, Sandbox, Production).
Структура проекта
backup_script.py: Основной скрипт для выполнения запланированного резервного копирования дашбордов Superset.migration_script.py: Основной скрипт для переноса конкретных дашбордов между окружениями, включая переопределение соединений с базами данных.search_script.py: Скрипт для поиска данных во всех доступных датасетах на сервереrun_mapper.py: CLI-скрипт для маппинга метаданных датасетов.superset_tool/:client.py: Python-клиент для взаимодействия с API Superset.exceptions.py: Пользовательские классы исключений для структурированной обработки ошибок.models.py: Pydantic-модели для валидации конфигурационных данных.utils/:fileio.py: Утилиты для работы с файловой системой (работа с архивами, парсинг YAML).logger.py: Конфигурация логгера для единообразного логирования в проекте.network.py: HTTP-клиент для сетевых запросов с обработкой аутентификации и повторных попыток.init_clients.py: Утилита для инициализации клиентов Superset для разных окружений.dataset_mapper.py: Логика маппинга метаданных датасетов.
Настройка
Требования
- 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.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")
Использование
Запуск проекта (Web UI)
Для запуска backend и frontend серверов одной командой:
./run.sh
Опции:
--skip-install: Пропустить проверку и установку зависимостей.--help: Показать справку.
Переменные окружения:
BACKEND_PORT: Порт для backend (по умолчанию 8000).FRONTEND_PORT: Порт для frontend (по умолчанию 5173).
Скрипт резервного копирования (backup_script.py)
Для создания резервных копий дашбордов из настроенных окружений Superset:
python backup_script.py
Резервные копии сохраняются в P:\Superset\010 Бекапы\ по умолчанию. Логи хранятся в P:\Superset\010 Бекапы\Logs.
Скрипт миграции (migration_script.py)
Для переноса конкретного дашборда:
python migration_script.py
Скрипт поиска (search_script.py)
Для поиска по текстовым паттернам в метаданных датасетов Superset:
python search_script.py
Скрипт использует регулярные выражения для поиска в полях датасетов, таких как SQL-запросы. Результаты поиска выводятся в лог и в консоль.
Скрипт маппинга метаданных (run_mapper.py)
Для обновления метаданных датасета (например, verbose names) в Superset:
python run_mapper.py --source <source_type> --dataset-id <dataset_id> [--table-name <table_name>] [--table-schema <table_schema>] [--excel-path <path_to_excel>] [--env <environment>]
Если вы используете XLSX - файл должен содержать два столбца - column_name | verbose_name
Параметры:
--source: Источник данных ('postgres', 'excel' или 'both').--dataset-id: ID датасета для обновления.--table-name: Имя таблицы для PostgreSQL.--table-schema: Схема таблицы для PostgreSQL.--excel-path: Путь к Excel-файлу.--env: Окружение Superset ('dev', 'prod' и т.д.).
Пример использования:
python run_mapper.py --source postgres --dataset-id 123 --table-name account_debt --table-schema dm_view --env dev
python run_mapper.py --source=excel --dataset-id=286 --excel-path=H:\dev\ss-tools\286_map.xlsx --env=dev
Логирование
Логи пишутся в файл в директории Logs (например, P:\Superset\010 Бекапы\Logs для резервных копий) и выводятся в консоль. Уровень логирования по умолчанию — INFO.
Разработка и вклад
- Следуйте Semantic Code Generation Protocol (см.
semantic_protocol.md):- Все определения обернуты в
[DEF]...[/DEF]. - Контракты (
@PRE,@POST) определяются ДО реализации. - Строгая типизация и иммутабельность архитектурных решений.
- Все определения обернуты в
- Соблюдайте Конституцию проекта (
.specify/memory/constitution.md). - Используйте
Pydantic-модели для валидации данных. - Реализуйте всестороннюю обработку ошибок с помощью пользовательских исключений.