智慧水务管理系统 - 精河县供水工程综合管理平台

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. -- =============================================
  2. -- 智慧水务管理系统 - TDengine 建表脚本
  3. -- 用于物联网设备遥测数据存储
  4. -- =============================================
  5. -- 创建数据库
  6. CREATE DATABASE IF NOT EXISTS water_iot
  7. KEEP 365
  8. DURATION 30
  9. BUFFER 256
  10. PAGES 256
  11. PAGESIZE 4
  12. WAL_LEVEL 1;
  13. USE water_iot;
  14. -- 遥测数据超级表
  15. CREATE STABLE IF NOT EXISTS iot_telemetry (
  16. ts TIMESTAMP,
  17. device_sn NCHAR(100),
  18. metric_key NCHAR(50),
  19. metric_value DOUBLE,
  20. quality TINYINT
  21. ) TAGS (
  22. device_type NCHAR(30),
  23. area NCHAR(50),
  24. station NCHAR(100)
  25. );
  26. -- 按设备类型创建子表(模板,实际运行时动态创建)
  27. CREATE TABLE IF NOT EXISTS telemetry_flow_meter USING iot_telemetry TAGS('flow_meter', 'default', 'default');
  28. CREATE TABLE IF NOT EXISTS telemetry_pressure USING iot_telemetry TAGS('pressure_sensor', 'default', 'default');
  29. CREATE TABLE IF NOT EXISTS telemetry_valve USING iot_telemetry TAGS('valve', 'default', 'default');
  30. CREATE TABLE IF NOT EXISTS telemetry_water_quality USING iot_telemetry TAGS('water_quality', 'default', 'default');
  31. CREATE TABLE IF NOT EXISTS telemetry_level USING iot_telemetry TAGS('level_sensor', 'default', 'default');
  32. CREATE TABLE IF NOT EXISTS telemetry_pump USING iot_telemetry TAGS('pump', 'default', 'default');
  33. -- 设备事件超级表
  34. CREATE STABLE IF NOT EXISTS iot_device_event (
  35. ts TIMESTAMP,
  36. device_sn NCHAR(100),
  37. event_type NCHAR(30),
  38. event_data NCHAR(2000)
  39. ) TAGS (
  40. device_type NCHAR(30),
  41. area NCHAR(50)
  42. );
  43. -- 小时聚合超级表(自动聚合)
  44. CREATE STABLE IF NOT EXISTS iot_telemetry_hourly (
  45. ts TIMESTAMP,
  46. device_sn NCHAR(100),
  47. metric_key NCHAR(50),
  48. min_value DOUBLE,
  49. max_value DOUBLE,
  50. avg_value DOUBLE,
  51. count_value INT
  52. ) TAGS (
  53. device_type NCHAR(30),
  54. area NCHAR(50)
  55. );
  56. -- 日聚合视图(示例)
  57. -- CREATE STREAM IF NOT EXISTS hourly_stream INTO iot_telemetry_hourly AS
  58. -- SELECT _wstart as ts, device_sn, metric_key,
  59. -- MIN(metric_value), MAX(metric_value), AVG(metric_value), COUNT(*)
  60. -- FROM iot_telemetry
  61. -- INTERVAL(1h);