"""TDengine DDL 模块:supertable / subtable 创建。""" import logging logger = logging.getLogger(__name__) def create_database(conn, db_name: str = "ts_anomaly") -> None: """创建数据库(不存在时创建)。""" conn.execute_no_result(f"CREATE DATABASE IF NOT EXISTS {db_name} KEEP 36500") logger.info("database %s ready", db_name) def use_database(conn, db_name: str = "ts_anomaly") -> None: """切换到指定数据库。""" conn.execute_no_result(f"USE {db_name}") def create_supertable(conn, stable: str) -> None: """创建 supertable(不存在时创建)。 Args: stable: 数据集名称,如 finance_001 """ sql = ( f"CREATE STABLE IF NOT EXISTS ds_{stable} " f"(ts TIMESTAMP, value DOUBLE, label INT) " f"TAGS (series_id INT)" ) conn.execute_no_result(sql) logger.info("supertable ds_%s ready", stable) def create_subtable(conn, stable: str, series_id: int = 1) -> None: """创建 subtable(不存在时创建)。 Args: stable: 数据集名称 series_id: 时序 ID(单变量数据集为 1) """ sql = ( f"CREATE TABLE IF NOT EXISTS s_{stable} " f"USING ds_{stable} TAGS ({series_id})" ) conn.execute_no_result(sql) logger.info("subtable s_%s ready (series_id=%d)", stable, series_id) def setup_schema(conn, stable: str, db_name: str = "ts_anomaly") -> None: """一键建库建表。 Args: conn: TDConnection 实例 stable: 数据集名称 db_name: 数据库名称 """ create_database(conn, db_name) use_database(conn, db_name) create_supertable(conn, stable) create_subtable(conn, stable)