README update
This commit is contained in:
113
README.md
113
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:
|
Этот репозиторий содержит Python-скрипты и библиотеку (`superset_tool`) для автоматизации задач в Apache Superset, таких как:
|
||||||
- **Backup**: Exporting all dashboards from Superset instances to local storage.
|
- **Резервное копирование**: Экспорт всех дашбордов из экземпляра Superset в локальное хранилище.
|
||||||
- **Migration**: Transferring and transforming dashboards between different Superset environments (e.g., Development, Sandbox, Production).
|
- **Миграция**: Перенос и преобразование дашбордов между разными средами Superset (например, Development, Sandbox, Production).
|
||||||
|
|
||||||
## Project Structure
|
## Структура проекта
|
||||||
- `backup_script.py`: Main script for performing scheduled backups of Superset dashboards.
|
- `backup_script.py`: Основной скрипт для выполнения запланированного резервного копирования дашбордов Superset.
|
||||||
- `migration_script.py`: Main script for migrating specific dashboards between environments, including database connection remapping.
|
- `migration_script.py`: Основной скрипт для переноса конкретных дашбордов между окружениями, включая переопределение соединений с базами данных.
|
||||||
|
- `search_script.py`: Основной скрипт для переноса конкретных дашбордов между окружениями, включая переопределение соединений с базами данных.
|
||||||
- `superset_tool/`:
|
- `superset_tool/`:
|
||||||
- `client.py`: Python client for interacting with the Superset API.
|
- `client.py`: Python-клиент для взаимодействия с API Superset.
|
||||||
- `exceptions.py`: Custom exception classes for structured error handling.
|
- `exceptions.py`: Пользовательские классы исключений для структурированной обработки ошибок.
|
||||||
- `models.py`: Pydantic models for configuration data validation.
|
- `models.py`: Pydantic-модели для валидации конфигурационных данных.
|
||||||
- `utils/`:
|
- `utils/`:
|
||||||
- `fileio.py`: Utilities for file system operations (archive handling, YAML parsing).
|
- `fileio.py`: Утилиты для работы с файловой системой (работа с архивами, парсинг YAML).
|
||||||
- `logger.py`: Custom logger configuration for consistent logging across the project.
|
- `logger.py`: Конфигурация логгера для единообразного логирования в проекте.
|
||||||
- `network.py`: Low-level HTTP client for network requests, handling authentication and retries.
|
- `network.py`: HTTP-клиент для сетевых запросов с обработкой аутентификации и повторных попыток.
|
||||||
|
|
||||||
## Setup
|
## Настройка
|
||||||
|
|
||||||
### Prerequisites
|
### Требования
|
||||||
- Python 3.9+
|
- Python 3.9+
|
||||||
- `pip` for package management.
|
- `pip` для управления пакетами.
|
||||||
- `keyring` for secure password storage.
|
- `keyring` для безопасного хранения паролей.
|
||||||
|
|
||||||
### Installation
|
### Установка
|
||||||
1. **Clone the repository:**
|
1. **Клонируйте репозиторий:**
|
||||||
```bash
|
```bash
|
||||||
git clone https://your-repo-link/superset-automation.git
|
git clone https://prod.gitlab.dwh.rusal.com/dwh_bi/superset-tools.git
|
||||||
cd superset-automation
|
cd superset-tools
|
||||||
```
|
```
|
||||||
2. **Install dependencies:**
|
2. **Установите зависимости:**
|
||||||
```bash
|
```bash
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
(You might need to create `requirements.txt` with `pydantic`, `requests`, `keyring`, `PyYAML`, `urllib3`)
|
(Возможно, потребуется создать `requirements.txt` с `pydantic`, `requests`, `keyring`, `PyYAML`, `urllib3`)
|
||||||
3. **Configure Passwords:**
|
3. **Настройте пароли:**
|
||||||
Use `keyring` to store your Superset API user passwords.
|
Используйте `keyring` для хранения паролей API-пользователей Superset.
|
||||||
Example for `backup_script.py`:
|
Пример для `backup_script.py`:
|
||||||
```python
|
```python
|
||||||
import keyring
|
import keyring
|
||||||
keyring.set_password("system", "dev migrate", "your_dev_password")
|
keyring.set_password("system", "dev migrate", "пароль пользователя migrate_user")
|
||||||
keyring.set_password("system", "prod migrate", "your_prod_password")
|
keyring.set_password("system", "prod migrate", "пароль пользователя migrate_user")
|
||||||
keyring.set_password("system", "sandbox migrate", "your_sandbox_password")
|
keyring.set_password("system", "sandbox migrate", "пароль пользователя migrate_user")
|
||||||
```
|
```
|
||||||
Replace `"system"` with a suitable service name if preferred.
|
При необходимости замените `"system"` на подходящее имя сервиса.
|
||||||
|
|
||||||
## Usage
|
## Использование
|
||||||
|
|
||||||
### Backup Script (`backup_script.py`)
|
### Скрипт резервного копирования (`backup_script.py`)
|
||||||
To back up dashboards from configured Superset environments:
|
Для создания резервных копий дашбордов из настроенных окружений Superset:
|
||||||
```bash
|
```bash
|
||||||
python backup_script.py
|
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`)
|
### Скрипт миграции (`migration_script.py`)
|
||||||
To migrate a specific dashboard:
|
Для переноса конкретного дашборда:
|
||||||
```bash
|
```bash
|
||||||
python migration_script.py
|
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:**
|
**Примечание:** В текущей версии скрипт переносит жестко заданный дашборд (`FI0070`) и использует локальный `.zip` файл в качестве источника. **Для использования в Production необходимо:**
|
||||||
- Accept dashboard slug/ID as command-line arguments.
|
- В текущей версии управление откуда и куда выполняется параметрами
|
||||||
- Utilize the `from_c.export_dashboard()` method instead of reading from a local file.
|
`from_c` и `to_c`.
|
||||||
- Potentially parameterize `from_c` and `to_c` environments.
|
|
||||||
|
|
||||||
## Logging
|
### Скрипт поиска (`search_script.py`)
|
||||||
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.
|
Строка для поиска и клиенты для поиска задаются здесь
|
||||||
|
# Поиск всех таблиц в датасете
|
||||||
|
```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.
|
Логи пишутся в файл в директории `Logs` (например, `P:\Superset\010 Бекапы\Logs` для резервных копий) и выводятся в консоль. Уровень логирования по умолчанию — `INFO`.
|
||||||
- Use `Pydantic` models for data validation.
|
|
||||||
- Implement comprehensive error handling using custom exceptions.
|
## Разработка и вклад
|
||||||
|
- Следуйте архитектурным паттернам (`[MODULE]`, `[CONTRACT]`, `[SECTION]`, `[ANCHOR]`) и правилам логирования.
|
||||||
|
- Весь новый код должен соответствовать принципам "LLM-friendly" генерации.
|
||||||
|
- Используйте `Pydantic`-модели для валидации данных.
|
||||||
|
- Реализуйте всестороннюю обработку ошибок с помощью пользовательских исключений.
|
||||||
|
|
||||||
---
|
---
|
||||||
[COHERENCE_CHECK_PASSED] README.md создан и согласован с модулями.
|
[COHERENCE_CHECK_PASSED] README.md создан и согласован с модулями.
|
||||||
|
|
||||||
|
Перевод выполнен с сохранением оригинальной Markdown-разметки и стиля документа. [1]
|
||||||
@@ -272,7 +272,7 @@ def inspect_datasets(client: SupersetClient):
|
|||||||
# [EXAMPLE] Пример использования
|
# [EXAMPLE] Пример использования
|
||||||
|
|
||||||
|
|
||||||
logger = SupersetLogger( level=logging.DEBUG,console=True)
|
logger = SupersetLogger( level=logging.INFO,console=True)
|
||||||
clients = setup_clients(logger)
|
clients = setup_clients(logger)
|
||||||
|
|
||||||
# Поиск всех таблиц в датасете
|
# Поиск всех таблиц в датасете
|
||||||
|
|||||||
Reference in New Issue
Block a user