-- 创建传感器数据超级表CREATE STABLE IF NOT EXISTS bridge_sensor_data ( ts TIMESTAMP, strain_value DOUBLE, -- 应变值/挠度值 stress_value DOUBLE, -- 应力值 temperature DOUBLE, -- 温度(用于补偿) vibration DOUBLE -- 振动数据) TAGS ( sensor_id NCHAR(32), -- 传感器ID sensor_type NCHAR(20), -- 传感器类型: strain/stress/vibration bridge_id NCHAR(32), -- 桥梁ID location NCHAR(20), -- 安装位置: mid_span/support等 lane_number TINYINT -- 车道编号);
-- 检测单个车辆通过速度和车重SELECT start_ts, end_ts, peak_strain, duration_seconds, 100/duration_seconds*3.6 as speed_kmh, -- 估算车速:桥梁长度/通过时间(假设桥梁长度100米) peak_strain*2.5 as estimated_weight_ton -- 估算车重:峰值应变 × 标定系数(需要现场标定)FROM ( SELECT FIRST(ts) as start_ts, LAST(ts) as end_ts, MAX(strain_value) - MIN(strain_value) as peak_strain, COUNT(*) as data_points, (cast(LAST(ts) as bigint) - cast(FIRST(ts) as bigint))/1e9 as duration_seconds FROM bridge_sensor_data WHERE bridge_id = 'bridge_001' AND location = 'mid_span' AND sensor_type = 'strain' AND ts >= '2024-01-01 00:00:00' AND ts <= '2024-01-01 23:59:59' INTERVAL(30s) -- 按30秒时间窗口分组 HAVING MAX(strain_value) - MIN(strain_value) > 10 -- 过滤掉噪声,阈值可根据实际情况调整);
-- 桥梁基本信息表CREATE STABLE bridges ( ts TIMESTAMP, wind_speed FLOAT, -- 风速(m/s) wind_direction FLOAT, -- 风向(度) vibration_x FLOAT, -- X方向振动加速度(m/s²) vibration_y FLOAT, -- Y方向振动加速度(m/s²) vibration_z FLOAT, -- Z方向振动加速度(m/s²) deflection FLOAT, -- 挠度(mm) temperature FLOAT, -- 温度(℃) humidity FLOAT -- 湿度(%)) TAGS ( bridge_id NCHAR(20), -- 桥梁ID sensor_id NCHAR(20), -- 传感器ID sensor_type NCHAR(20), -- 传感器类型: wind/vibration/deflection location NCHAR(50) -- 安装位置: mid_span/side_span/tower etc.);
SELECT calc_ts as 时间, avg_wind_speed as 平均风速, max_wind_coefficient as 最大风力系数, turbulence_intensity as 紊流强度, vertical_vibration as 竖向振动, peak_vibration_amplitude as 峰值振幅, alert_level as 报警等级, vortex_intensity_index as 涡振强度指数, -- 实时报警判断 CASE WHEN vortex_intensity_index > 5 THEN '严重涡振报警' WHEN vortex_intensity_index > 3 THEN '中度涡振报警' WHEN vortex_intensity_index > 1 THEN '轻微涡振注意' ELSE '正常' END as 实时报警信息 FROM ( SELECT w.calc_ts, w.avg_wind_speed, w.max_wind_coefficient, w.turbulence_intensity, v.rms_vibration_y as vertical_vibration, v.peak_vibration_amplitude, -- 涡振发生条件判断 CASE WHEN w.avg_wind_speed BETWEEN 5 AND 15 -- 涡振易发风速区间 AND w.turbulence_intensity < 0.2 -- 低紊流条件 AND v.peak_vibration_amplitude > 0.5 -- 振动幅值阈值 AND v.rms_vibration_y > 0.1 -- 竖向振动RMS阈值 THEN 'HIGH_ALERT' WHEN w.avg_wind_speed BETWEEN 3 AND 20 AND w.turbulence_intensity < 0.3 AND v.peak_vibration_amplitude > 0.3 AND v.rms_vibration_y > 0.05 THEN 'MEDIUM_ALERT' ELSE 'NORMAL' END as alert_level, -- 涡振强度指数 (自定义计算公式) (v.peak_vibration_amplitude * w.avg_wind_speed * (1 - w.turbulence_intensity)) as vortex_intensity_index FROM ( -- 计算10分钟窗口的风力参数 SELECT _wstart as calc_ts, AVG(wind_speed) as avg_wind_speed, MAX(wind_speed) as max_wind_speed, STDDEV(wind_speed) as wind_stddev, AVG(wind_direction) as avg_direction, -- 紊流强度 = 标准差/平均值 STDDEV(wind_speed) / AVG(wind_speed) as turbulence_intensity, -- 计算10分钟最大风力系数 MAX(wind_speed) * 0.6 as max_wind_coefficient FROM bridges WHERE bridge_id = 'bridge_001' AND sensor_type = 'wind' AND ts >= NOW - 10m INTERVAL(30s) -- 每30秒计算一次前10分钟数据 ) w join (-- 计算振动参数 SELECT _wstart as calc_ts, SQRT(AVG(vibration_x * vibration_x)) as rms_vibration_x, SQRT(AVG(vibration_y * vibration_y)) as rms_vibration_y, SQRT(AVG(vibration_z * vibration_z)) as rms_vibration_z, -- 主梁涡振特征频率(假设桥梁固有频率0.5-1.5Hz) MAX(ABS(vibration_y)) as peak_vibration_amplitude FROM bridges WHERE bridge_id = 'bridge_001' AND sensor_type = 'vibration' AND location = 'mid_span' AND ts >= NOW - 10m INTERVAL(30s)) v ON w.calc_ts = v.calc_ts WHERE w.avg_wind_speed > 2 -- 忽略无风情况 ) WHERE alert_level != 'NORMAL' ORDER BY calc_ts DESC;
CREATE STABLE IF NOT EXISTS construction_monitoring ( ts TIMESTAMP, cable_force FLOAT, -- 索力(kN) stress FLOAT, -- 应力(MPa) elevation FLOAT -- 标高(m)) TAGS ( project_name NCHAR(50), -- 项目名称:如‘深中通道S08标’(标签) monitoring_section NCHAR(50) -- 监控断面:如‘B12号墩’(标签));
# 查询‘深中通道S08标’项目下,所有监控断面在当前时刻的平均索力,用于指导施工SELECT monitoring_section,LAST(cable_force) as current_cable_force FROM construction_monitoring WHERE project_name = '深中通道S08标' GROUP BY monitoring_section;
CREATE STABLE IF NOT EXISTS material_testing ( ts TIMESTAMP, load FLOAT, -- 荷载(kN) displacement FLOAT -- 位移(mm)) TAGS ( material_type NCHAR(20), -- 材料类型:如‘C60混凝土’(标签) sample_id NCHAR(20), -- 试件编号 test_type NCHAR(20) -- 试验类型:如‘抗压’,‘抗弯’);
# 统计分析某批次C60混凝土试件的抗压强度(通过最大荷载计算)SELECT sample_id,MAX(load) as max_load FROM material_testing WHERE material_type = 'C60混凝土' AND test_type = '抗压' GROUP BY sample_id;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70014783/viewspace-3117359/ ,如需转载,请注明出处,否则将追究法律责任。