fix(schema): escape TDengine 3.4 reserved words 'value'/'label' and use column alias for ANOMALY_WINDOW
- schema: rename label -> is_anomaly, escape `value` as backtick - detection/forecast: wrap subquery with SELECT ts, `value` AS v so ANOMALY_WINDOW/FORECAST receive non-keyword column name - resolves [0x2600] syntax error and unblocks E2E pipeline on community tsdb 3.4.1
This commit is contained in:
@@ -28,8 +28,8 @@ def run_anomaly_window(conn, stable: str, algo: str) -> list[tuple[int, int]]:
|
||||
|
||||
sql = (
|
||||
f"SELECT _WSTART, _WEND "
|
||||
f"FROM (ANOMALY_WINDOW(value, \"algo={algo}\") "
|
||||
f"FROM ds_{stable})"
|
||||
f"FROM (SELECT ts, `value` AS v FROM ds_{stable}) "
|
||||
f"ANOMALY_WINDOW(v, 'algo={algo}')"
|
||||
)
|
||||
|
||||
rows = conn.execute(sql)
|
||||
|
||||
@@ -38,8 +38,8 @@ def run_forecast(
|
||||
"""
|
||||
sql = (
|
||||
f"SELECT _FROWTS, _FLOW, _FHIGH "
|
||||
f"FROM (FORECAST(value, \"algo={algo},rows={rows},conf={conf}\") "
|
||||
f"FROM ds_{stable})"
|
||||
f"FROM (SELECT ts, `value` AS v FROM ds_{stable}) "
|
||||
f"FORECAST(v, 'algo={algo},rows={rows},conf={conf}')"
|
||||
)
|
||||
try:
|
||||
raw = conn.execute(sql)
|
||||
@@ -83,7 +83,7 @@ def forecast_anomaly(
|
||||
start_ts = min(frowtses)
|
||||
end_ts = max(frowtses)
|
||||
|
||||
sql = f"SELECT ts, value FROM s_{stable} WHERE ts >= {start_ts} AND ts <= {end_ts}"
|
||||
sql = f"SELECT ts, `value` FROM s_{stable} WHERE ts >= {start_ts} AND ts <= {end_ts}"
|
||||
raw = conn.execute(sql)
|
||||
|
||||
fmap = {f[0]: (f[1], f[2]) for f in forecasts}
|
||||
|
||||
@@ -24,7 +24,7 @@ def create_supertable(conn, stable: str) -> None:
|
||||
"""
|
||||
sql = (
|
||||
f"CREATE STABLE IF NOT EXISTS ds_{stable} "
|
||||
f"(ts TIMESTAMP, value DOUBLE, label INT) "
|
||||
f"(ts TIMESTAMP, `value` DOUBLE, is_anomaly INT) "
|
||||
f"TAGS (series_id INT)"
|
||||
)
|
||||
conn.execute_no_result(sql)
|
||||
|
||||
Reference in New Issue
Block a user