61 lines
1.7 KiB
Python
61 lines
1.7 KiB
Python
"""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)
|