semantics

This commit is contained in:
2026-05-26 09:30:41 +03:00
parent 1e7bcecaea
commit 9ffa8af1dc
623 changed files with 28045 additions and 26557 deletions

View File

@@ -2,10 +2,10 @@
#
# @BRIEF Этот модуль отвечает за обновление метаданных (verbose_name) в датасетах Superset,
# извлекая их из Superset SQL Lab (любая БД, подключённая к Superset) или XLSX-файлов.
# @LAYER: Domain
# @LAYER Domain
# @RELATION DEPENDS_ON -> backend.core.superset_client
# @RELATION DEPENDS_ON -> pandas
# @PUBLIC_API: DatasetMapper
# @RELATION DEPENDS_ON -> [EXT:Library:pandas]
# @PUBLIC_API DatasetMapper
from typing import Any
import pandas as pd # type: ignore
@@ -18,23 +18,23 @@ from ..logger import belief_scope, logger as app_logger
class DatasetMapper:
# #region __init__ [TYPE Function]
# @PURPOSE: Initializes the mapper.
# @POST: Объект DatasetMapper инициализирован.
# @POST Объект DatasetMapper инициализирован.
def __init__(self):
pass
# #endregion __init__
# #region get_sqllab_mappings [TYPE Function]
# @PURPOSE: Извлекает маппинги column_name -> verbose_name через SQL Lab Superset.
# @PRE: sqllab_executor должен быть инициализирован с database_id.
# @PRE: dataset_id должен существовать в Superset.
# @POST: Возвращается словарь column_name -> verbose_name из результатов SQL-запроса.
# @PRE sqllab_executor должен быть инициализирован с database_id.
# @PRE dataset_id должен существовать в Superset.
# @POST Возвращается словарь column_name -> verbose_name из результатов SQL-запроса.
# Если sql_query не указан, строится запрос к information_schema.columns.
# @PARAM: client (SupersetClient) - Авторизованный клиент Superset.
# @PARAM: dataset_id (int) - ID датасета (для получения table_name/schema).
# @PARAM: sqllab_executor (SupersetSqlLabExecutor) - Исполнитель SQL Lab.
# @PARAM: database_id (int) - ID базы данных в Superset.
# @PARAM: sql_query (Optional[str]) - Произвольный SQL-запрос (должен вернуть column_name + verbose_name).
# @RETURN: Dict[str, str] - Словарь column_name -> verbose_name.
# @PARAM client (SupersetClient) - Авторизованный клиент Superset.
# @PARAM dataset_id (int) - ID датасета (для получения table_name/schema).
# @PARAM sqllab_executor (SupersetSqlLabExecutor) - Исполнитель SQL Lab.
# @PARAM database_id (int) - ID базы данных в Superset.
# @PARAM sql_query (Optional[str]) - Произвольный SQL-запрос (должен вернуть column_name + verbose_name).
# @RETURN Dict[str, str] - Словарь column_name -> verbose_name.
def get_sqllab_mappings(
self,
client: Any,
@@ -89,11 +89,11 @@ class DatasetMapper:
# #region load_excel_mappings [TYPE Function]
# @PURPOSE: Загружает маппинги column_name -> verbose_name из XLSX файла.
# @PRE: file_path должен указывать на существующий XLSX файл.
# @POST: Возвращается словарь с маппингами из файла.
# @PRE file_path должен указывать на существующий XLSX файл.
# @POST Возвращается словарь с маппингами из файла.
# @THROW: Exception - При ошибках чтения файла или парсинга.
# @PARAM: file_path (str) - Путь к XLSX файлу.
# @RETURN: Dict[str, str] - Словарь с маппингами.
# @PARAM file_path (str) - Путь к XLSX файлу.
# @RETURN Dict[str, str] - Словарь с маппингами.
def load_excel_mappings(self, file_path: str) -> dict[str, str]:
with belief_scope("Load mappings from Excel"):
app_logger.info("[load_excel_mappings][Enter] Loading mappings from %s.", file_path)
@@ -109,20 +109,20 @@ class DatasetMapper:
# #region run_mapping [TYPE Function]
# @PURPOSE: Основная функция для выполнения маппинга и обновления verbose_name датасета в Superset.
# @PRE: superset_client должен быть авторизован.
# @PRE: dataset_id должен быть существующим ID в Superset.
# @POST: Если найдены изменения, датасет в Superset обновлен через API.
# @RELATION: CALLS -> self.get_sqllab_mappings
# @RELATION: CALLS -> self.load_excel_mappings
# @RELATION: CALLS -> superset_client.get_dataset
# @RELATION: CALLS -> superset_client.update_dataset
# @PARAM: superset_client (Any) - Клиент Superset.
# @PARAM: dataset_id (int) - ID датасета для обновления.
# @PARAM: source (str) - Источник данных ('sqllab' или 'excel').
# @PARAM: sqllab_executor (Optional[Any]) - Исполнитель SQL Lab (для sqllab source).
# @PARAM: database_id (Optional[int]) - ID базы данных Superset (для sqllab source).
# @PARAM: sql_query (Optional[str]) - Произвольный SQL-запрос (для sqllab source).
# @PARAM: excel_path (Optional[str]) - Путь к XLSX файлу.
# @PRE superset_client должен быть авторизован.
# @PRE dataset_id должен быть существующим ID в Superset.
# @POST Если найдены изменения, датасет в Superset обновлен через API.
# @RELATION CALLS -> [EXT:method:DatasetMapper.get_sqllab_mappings]
# @RELATION CALLS -> [EXT:method:DatasetMapper.load_excel_mappings]
# @RELATION CALLS -> [EXT:method:SupersetClient.get_dataset]
# @RELATION CALLS -> [EXT:method:SupersetClient.update_dataset]
# @PARAM superset_client (Any) - Клиент Superset.
# @PARAM dataset_id (int) - ID датасета для обновления.
# @PARAM source (str) - Источник данных ('sqllab' или 'excel').
# @PARAM sqllab_executor (Optional[Any]) - Исполнитель SQL Lab (для sqllab source).
# @PARAM database_id (Optional[int]) - ID базы данных Superset (для sqllab source).
# @PARAM sql_query (Optional[str]) - Произвольный SQL-запрос (для sqllab source).
# @PARAM excel_path (Optional[str]) - Путь к XLSX файлу.
def run_mapping(
self,
superset_client: Any,