semantics
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user