SQL FDD Rules tab

Route: /sql-fdd (Integrations sidebar).

UX (3.2.6+)

Professional commissioning surface — no NL prompt or visual query builder:

Control Purpose
Historian table telemetry_pivot (default) or telemetry
Equipment scope Haystack equip:* id for WHERE equipment_id = …
SQL editor Read-only DataFusion SELECT
Format SQL Keyword layout only
Validate / Run Syntax check and test against historian

Default example

Replace equip:local-test-equipment with a real Haystack equipment id from your site (Model tab or GET /api/model/sites/{site}/equipment).

SELECT
  timestamp,
  equipment_id,
  oa_t,
  CASE
    WHEN oa_t IS NULL THEN false
    WHEN oa_t < 40.0 THEN true
    WHEN oa_t > 110.0 THEN true
    ELSE false
  END AS fault_raw
FROM telemetry_pivot
WHERE equipment_id = 'equip:local-test-equipment'

Multi-sensor rules

List every historian column in the rule’s required_inputs array (e.g. oa_t, zn_t). The dashboard fault modal shows per-sensor averages in-alarm vs normal when multiple inputs are bound.

Data location

Historian pivot files: workspace/data/historian/validation/telemetry_pivot.jsonl (+ Arrow IPC snapshot). See Storage & DataFusion.