mapper
This commit is contained in:
69
get_dataset_structure.py
Normal file
69
get_dataset_structure.py
Normal file
@@ -0,0 +1,69 @@
|
||||
# <GRACE_MODULE id="get_dataset_structure" name="get_dataset_structure.py">
|
||||
# @SEMANTICS: superset, dataset, structure, debug, json
|
||||
# @PURPOSE: Этот модуль предназначен для получения и сохранения структуры данных датасета из Superset. Он используется для отладки и анализа данных, возвращаемых API.
|
||||
# @DEPENDS_ON: superset_tool.client -> Использует SupersetClient для взаимодействия с API.
|
||||
# @DEPENDS_ON: superset_tool.utils.init_clients -> Для инициализации клиентов Superset.
|
||||
# @DEPENDS_ON: superset_tool.utils.logger -> Для логирования.
|
||||
|
||||
# <IMPORTS>
|
||||
import argparse
|
||||
import json
|
||||
from superset_tool.utils.init_clients import setup_clients
|
||||
from superset_tool.utils.logger import SupersetLogger
|
||||
# </IMPORTS>
|
||||
|
||||
# --- Начало кода модуля ---
|
||||
|
||||
# <ANCHOR id="get_and_save_dataset" type="Function">
|
||||
# @PURPOSE: Получает структуру датасета из Superset и сохраняет ее в JSON-файл.
|
||||
# @PARAM: env: str - Среда (dev, prod, и т.д.) для подключения.
|
||||
# @PARAM: dataset_id: int - ID датасета для получения.
|
||||
# @PARAM: output_path: str - Путь для сохранения JSON-файла.
|
||||
# @RELATION: CALLS -> setup_clients
|
||||
# @RELATION: CALLS -> superset_client.get_dataset
|
||||
def get_and_save_dataset(env: str, dataset_id: int, output_path: str):
|
||||
"""
|
||||
Получает структуру датасета и сохраняет в файл.
|
||||
"""
|
||||
logger = SupersetLogger(name="DatasetStructureRetriever")
|
||||
logger.info("[get_and_save_dataset][Enter] Starting to fetch dataset structure for ID %d from env '%s'.", dataset_id, env)
|
||||
|
||||
try:
|
||||
clients = setup_clients(logger=logger)
|
||||
superset_client = clients.get(env)
|
||||
if not superset_client:
|
||||
logger.error("[get_and_save_dataset][Failure] Environment '%s' not found.", env)
|
||||
return
|
||||
|
||||
dataset_response = superset_client.get_dataset(dataset_id)
|
||||
dataset_data = dataset_response.get('result')
|
||||
|
||||
if not dataset_data:
|
||||
logger.error("[get_and_save_dataset][Failure] No result in dataset response.")
|
||||
return
|
||||
|
||||
with open(output_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(dataset_data, f, ensure_ascii=False, indent=4)
|
||||
|
||||
logger.info("[get_and_save_dataset][Success] Dataset structure saved to %s.", output_path)
|
||||
|
||||
except Exception as e:
|
||||
logger.error("[get_and_save_dataset][Failure] An error occurred: %s", e, exc_info=True)
|
||||
|
||||
# </ANCHOR>
|
||||
|
||||
# <ANCHOR id="__main__" type="Object">
|
||||
# @PURPOSE: Точка входа для CLI. Парсит аргументы и запускает получение структуры датасета.
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Получение структуры датасета из Superset.")
|
||||
parser.add_argument("--dataset-id", required=True, type=int, help="ID датасета.")
|
||||
parser.add_argument("--env", required=True, help="Среда для подключения (например, dev).")
|
||||
parser.add_argument("--output-path", default="dataset_structure.json", help="Путь для сохранения JSON-файла.")
|
||||
args = parser.parse_args()
|
||||
|
||||
get_and_save_dataset(args.env, args.dataset_id, args.output_path)
|
||||
# </ANCHOR>
|
||||
|
||||
# --- Конец кода модуля ---
|
||||
|
||||
# </GRACE_MODULE>
|
||||
Reference in New Issue
Block a user