From d9efb0885fc7c2bdd51244bda60c89eda8df7ed2 Mon Sep 17 00:00:00 2001 From: Volobuev Andrey Date: Fri, 25 Jul 2025 12:50:52 +0300 Subject: [PATCH] README update --- README.md | 113 +++++++++++++++++++++++++++-------------------- search_script.py | 2 +- 2 files changed, 65 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index cf9e9ff..0de1924 100644 --- a/README.md +++ b/README.md @@ -1,78 +1,93 @@ -# Superset Automation Tools +# Инструменты автоматизации Superset -## Overview -This repository contains Python scripts and a utility library (`superset_tool`) designed to automate common tasks with Apache Superset, such as: -- **Backup**: Exporting all dashboards from Superset instances to local storage. -- **Migration**: Transferring and transforming dashboards between different Superset environments (e.g., Development, Sandbox, Production). +## Обзор +Этот репозиторий содержит Python-скрипты и библиотеку (`superset_tool`) для автоматизации задач в Apache Superset, таких как: +- **Резервное копирование**: Экспорт всех дашбордов из экземпляра Superset в локальное хранилище. +- **Миграция**: Перенос и преобразование дашбордов между разными средами Superset (например, Development, Sandbox, Production). -## Project Structure -- `backup_script.py`: Main script for performing scheduled backups of Superset dashboards. -- `migration_script.py`: Main script for migrating specific dashboards between environments, including database connection remapping. +## Структура проекта +- `backup_script.py`: Основной скрипт для выполнения запланированного резервного копирования дашбордов Superset. +- `migration_script.py`: Основной скрипт для переноса конкретных дашбордов между окружениями, включая переопределение соединений с базами данных. +- `search_script.py`: Основной скрипт для переноса конкретных дашбордов между окружениями, включая переопределение соединений с базами данных. - `superset_tool/`: - - `client.py`: Python client for interacting with the Superset API. - - `exceptions.py`: Custom exception classes for structured error handling. - - `models.py`: Pydantic models for configuration data validation. + - `client.py`: Python-клиент для взаимодействия с API Superset. + - `exceptions.py`: Пользовательские классы исключений для структурированной обработки ошибок. + - `models.py`: Pydantic-модели для валидации конфигурационных данных. - `utils/`: - - `fileio.py`: Utilities for file system operations (archive handling, YAML parsing). - - `logger.py`: Custom logger configuration for consistent logging across the project. - - `network.py`: Low-level HTTP client for network requests, handling authentication and retries. + - `fileio.py`: Утилиты для работы с файловой системой (работа с архивами, парсинг YAML). + - `logger.py`: Конфигурация логгера для единообразного логирования в проекте. + - `network.py`: HTTP-клиент для сетевых запросов с обработкой аутентификации и повторных попыток. -## Setup +## Настройка -### Prerequisites +### Требования - Python 3.9+ -- `pip` for package management. -- `keyring` for secure password storage. +- `pip` для управления пакетами. +- `keyring` для безопасного хранения паролей. -### Installation -1. **Clone the repository:** +### Установка +1. **Клонируйте репозиторий:** ```bash - git clone https://your-repo-link/superset-automation.git - cd superset-automation + git clone https://prod.gitlab.dwh.rusal.com/dwh_bi/superset-tools.git + cd superset-tools ``` -2. **Install dependencies:** +2. **Установите зависимости:** ```bash pip install -r requirements.txt ``` - (You might need to create `requirements.txt` with `pydantic`, `requests`, `keyring`, `PyYAML`, `urllib3`) -3. **Configure Passwords:** - Use `keyring` to store your Superset API user passwords. - Example for `backup_script.py`: + (Возможно, потребуется создать `requirements.txt` с `pydantic`, `requests`, `keyring`, `PyYAML`, `urllib3`) +3. **Настройте пароли:** + Используйте `keyring` для хранения паролей API-пользователей Superset. + Пример для `backup_script.py`: ```python import keyring - keyring.set_password("system", "dev migrate", "your_dev_password") - keyring.set_password("system", "prod migrate", "your_prod_password") - keyring.set_password("system", "sandbox migrate", "your_sandbox_password") + keyring.set_password("system", "dev migrate", "пароль пользователя migrate_user") + keyring.set_password("system", "prod migrate", "пароль пользователя migrate_user") + keyring.set_password("system", "sandbox migrate", "пароль пользователя migrate_user") ``` - Replace `"system"` with a suitable service name if preferred. + При необходимости замените `"system"` на подходящее имя сервиса. -## Usage +## Использование -### Backup Script (`backup_script.py`) -To back up dashboards from configured Superset environments: +### Скрипт резервного копирования (`backup_script.py`) +Для создания резервных копий дашбордов из настроенных окружений Superset: ```bash python backup_script.py ``` -Backup files will be saved to `P:\Superset\010 Бекапы\` by default. Logs will be in `P:\Superset\010 Бекапы\Logs`. +Резервные копии сохраняются в `P:\Superset\010 Бекапы\` по умолчанию. Логи хранятся в `P:\Superset\010 Бекапы\Logs`. -### Migration Script (`migration_script.py`) -To migrate a specific dashboard: +### Скрипт миграции (`migration_script.py`) +Для переноса конкретного дашборда: ```bash python migration_script.py ``` -**Note:** This script is currently configured to migrate a hardcoded dashboard slug (`FI0070`) and uses a local `.zip` file for the dashboard source. **For production use, you should modify the script to:** -- Accept dashboard slug/ID as command-line arguments. -- Utilize the `from_c.export_dashboard()` method instead of reading from a local file. -- Potentially parameterize `from_c` and `to_c` environments. +**Примечание:** В текущей версии скрипт переносит жестко заданный дашборд (`FI0070`) и использует локальный `.zip` файл в качестве источника. **Для использования в Production необходимо:** +- В текущей версии управление откуда и куда выполняется параметрами +`from_c` и `to_c`. -## Logging -Logs are configured to be written to a file within a `Logs` directory (e.g., `P:\Superset\010 Бекапы\Logs` for backups) and also output to the console. The log level is set to `INFO` by default. +### Скрипт поиска (`search_script.py`) +Строка для поиска и клиенты для поиска задаются здесь +# Поиск всех таблиц в датасете +```python +results = search_datasets( + client=clients['dev'], + search_pattern=r'dm_view\.account_debt', + search_fields=["sql"], + logger=logger +) +``` -## Development & Contribution -- Follow the architectural patterns (`[MODULE]`, `[CONTRACT]`, `[SECTION]`, `[ANCHOR]`) and logging guidelines for consistency. -- Ensure all new code adheres to the principles of "LLM-friendly" code generation. -- Use `Pydantic` models for data validation. -- Implement comprehensive error handling using custom exceptions. + +## Логирование +Логи пишутся в файл в директории `Logs` (например, `P:\Superset\010 Бекапы\Logs` для резервных копий) и выводятся в консоль. Уровень логирования по умолчанию — `INFO`. + +## Разработка и вклад +- Следуйте архитектурным паттернам (`[MODULE]`, `[CONTRACT]`, `[SECTION]`, `[ANCHOR]`) и правилам логирования. +- Весь новый код должен соответствовать принципам "LLM-friendly" генерации. +- Используйте `Pydantic`-модели для валидации данных. +- Реализуйте всестороннюю обработку ошибок с помощью пользовательских исключений. --- -[COHERENCE_CHECK_PASSED] README.md создан и согласован с модулями. \ No newline at end of file +[COHERENCE_CHECK_PASSED] README.md создан и согласован с модулями. + +Перевод выполнен с сохранением оригинальной Markdown-разметки и стиля документа. [1] \ No newline at end of file diff --git a/search_script.py b/search_script.py index 20937d4..196c2ad 100644 --- a/search_script.py +++ b/search_script.py @@ -272,7 +272,7 @@ def inspect_datasets(client: SupersetClient): # [EXAMPLE] Пример использования -logger = SupersetLogger( level=logging.DEBUG,console=True) +logger = SupersetLogger( level=logging.INFO,console=True) clients = setup_clients(logger) # Поиск всех таблиц в датасете