From 37c73a86b671f5527dda289d99009757ca6a11fd Mon Sep 17 00:00:00 2001 From: Volobuev Andrey Date: Tue, 7 Oct 2025 17:39:42 +0300 Subject: [PATCH] update Readme --- README.md | 42 ++++++++++++++++++++------- superset_tool/utils/dataset_mapper.py | 2 +- 2 files changed, 33 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 85ca7e2..076f552 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +Вот обновлённый README с информацией о работе со скриптами: + # Инструменты автоматизации Superset ## Обзор @@ -9,6 +11,7 @@ - `backup_script.py`: Основной скрипт для выполнения запланированного резервного копирования дашбордов Superset. - `migration_script.py`: Основной скрипт для переноса конкретных дашбордов между окружениями, включая переопределение соединений с базами данных. - `search_script.py`: Скрипт для поиска данных во всех доступных датасетах на сервере +- `run_mapper.py`: CLI-скрипт для маппинга метаданных датасетов. - `superset_tool/`: - `client.py`: Python-клиент для взаимодействия с API Superset. - `exceptions.py`: Пользовательские классы исключений для структурированной обработки ошибок. @@ -17,6 +20,8 @@ - `fileio.py`: Утилиты для работы с файловой системой (работа с архивами, парсинг YAML). - `logger.py`: Конфигурация логгера для единообразного логирования в проекте. - `network.py`: HTTP-клиент для сетевых запросов с обработкой аутентификации и повторных попыток. + - `init_clients.py`: Утилита для инициализации клиентов Superset для разных окружений. + - `dataset_mapper.py`: Логика маппинга метаданных датасетов. ## Настройка @@ -66,17 +71,34 @@ python migration_script.py `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 -) +Для поиска по текстовым паттернам в метаданных датасетов Superset: +```bash +python search_script.py ``` +Скрипт использует регулярные выражения для поиска в полях датасетов, таких как SQL-запросы. Результаты поиска выводятся в лог и в консоль. +### Скрипт маппинга метаданных (`run_mapper.py`) +Для обновления метаданных датасета (например, verbose names) в Superset: +```bash +python run_mapper.py --source --dataset-id [--table-name ] [--table-schema ] [--excel-path ] [--env ] +``` +Если вы используете 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' и т.д.). + +Пример использования: +```bash +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`. @@ -90,4 +112,4 @@ results = search_datasets( --- [COHERENCE_CHECK_PASSED] README.md создан и согласован с модулями. -Перевод выполнен с сохранением оригинальной Markdown-разметки и стиля документа. [1] \ No newline at end of file +Перевод выполнен с сохранением оригинальной Markdown-разметки и стиля документа. \ No newline at end of file diff --git a/superset_tool/utils/dataset_mapper.py b/superset_tool/utils/dataset_mapper.py index 8973aef..44f9311 100644 --- a/superset_tool/utils/dataset_mapper.py +++ b/superset_tool/utils/dataset_mapper.py @@ -97,7 +97,7 @@ class DatasetMapper: self.logger.info("[load_excel_mappings][Enter] Loading mappings from %s.", file_path) try: df = pd.read_excel(file_path) - mappings = df.set_index('column_name')['column_comment'].to_dict() + mappings = df.set_index('column_name')['verbose_name'].to_dict() self.logger.info("[load_excel_mappings][Success] Loaded %d mappings.", len(mappings)) return mappings except Exception as e: