2. 时序数据质量维度

时序数据质量不能照搬关系型数据库的通用质量框架。关系型数据以“行”为独立记录,而时序数据以“时间序列”为基本单位:同一指标在时间轴上连续取值,点与点之间存在时间顺序、采样间隔和业务语义上的连续性。因此,完整性、准确性、一致性、时效性、唯一性这五个维度在时序场景下都需要重新定义,并配套可计算的度量方式。

下面先给出一个贯穿全节的示例对象:某电力监测系统每 15 秒采集一次变压器油温,指标名为 transformer_oil_temp,标签为 device_id=T-001,正常量程为 -20℃~150℃,采样周期 interval=15s。后续各维度的度量都围绕这个对象展开。

完整性:不是“有没有值”,而是“该有的点有没有”

时序完整性包含两层含义。第一层是时间覆盖完整性:在给定时间窗口内,实际点数与理论点数之比。理论点数由采样周期决定,例如 1 小时窗口、15 秒周期,理论点数为 3600/15=240 个。若实际写入 228 个,则覆盖率 = 228/240 = 95%。第二层是字段完整性:每个点除时间戳和值之外,是否携带必要的标签、质量位、设备状态等元数据。

度量时通常按“时间桶”聚合,而不是整段平均,否则会掩盖局部断点。例如按 5 分钟分桶,每桶理论 20 点,若某桶只有 3 点,说明该时段发生了明显缺失。完整性告警阈值可设为:单桶覆盖率低于 90% 触发警告,低于 70% 触发严重告警。需要注意,设备停机导致的“合理缺失”应通过设备状态位排除,否则会把正常停机误判为数据质量问题。

准确性:值是否真实反映物理量

时序准确性指采集值与被测物理量真值之间的接近程度。在工程中很难获得真值,因此常用三类可观测判据替代:量程越界(油温 < -20℃ 或 > 150℃)、变化率异常(相邻点变化超过物理可能,如 15 秒内跳变 80℃)、统计离群(基于滑动窗口的 3σ 或 MAD 检测)。

度量方式可定义为异常点占比:accuracy = 1 - 异常点数 / 总点数。例如 1 小时内 240 点中有 6 个点超出量程,则准确性为 97.5%。准确性判定必须结合物理约束,不能只依赖统计方法,否则会把真实的负荷突变误判为异常。

一致性:跨源、跨时间、跨语义的对齐

时序一致性有三个常见层面。其一是跨源一致性:同一物理量由两个传感器采集,两条序列在同一时刻的偏差应在允许范围内。其二是时间一致性:时间戳与采集时刻对齐,不存在时区错位、时钟漂移或乱序。其三是语义一致性:单位、量纲、标签命名统一,例如不能一条序列用摄氏度、另一条用华氏度。

度量跨源一致性可用同步偏差:|v_A(t) - v_B(t)| ≤ tolerance,统计超差时间占比。时间一致性可统计乱序点比例、时间戳重复率、时钟偏移量。语义一致性则通过元数据校验规则检查,例如单位字段必须属于白名单集合。

时效性:数据从产生到可用的延迟

时序时效性衡量数据“新鲜度”,核心指标是端到端延迟:delay = 入库时间 - 采集时间。对于实时监控场景,延迟超过 2 个采样周期(本例 30 秒)即视为不新鲜。另一个指标是数据滞后率:当前时刻与最新数据点时间戳之差,若超过阈值说明数据流中断或积压。

度量时通常取 P50、P95、P99 分位数,而不是平均值,因为平均值会掩盖长尾延迟。例如 P95 延迟 45 秒,说明 5% 的数据在 45 秒后才可用,对实时告警已构成影响。

唯一性:同一时刻同一序列只能有一个值

时序唯一性指在“序列标识 + 时间戳”这个联合主键上不允许重复。重复可能来自重试写入、多副本采集、补数据覆盖等。度量方式为重复点占比:duplicate_rate = 重复时间戳点数 / 总点数。此外还要检查“同序列同时间戳不同值”的冲突,这类冲突比单纯重复更危险,因为它意味着无法判断哪个值可信。

处理策略上,重复点可按“后写覆盖”或“保留首值”规则去重,但必须在元数据中记录冲突次数,作为质量指标持续监控。

时序数据质量五维度:定义与度量关系 示例对象:transformer_oil_temp / device_id=T-001 / 采样周期 15s / 量程 -20℃~150℃ 时间 t0 t2 t4 t6 完整性 时间覆盖:实际点数 / 理论点数 字段完整:标签/质量位/状态齐全 度量:按时间桶聚合覆盖率 示例:228/240 = 95% 告警:单桶 <90% 警告,<70% 严重 准确性 量程越界:<-20 或 >150℃ 变化率:15s 内跳变 >80℃ 统计离群:滑动窗口 3σ / MAD 度量:1 - 异常点数 / 总点数 示例:1 - 6/240 = 97.5% 一致性 跨源:|v_A(t) - v_B(t)| ≤ 容差 时间:乱序率 / 重复率 / 时钟偏移 语义:单位、量纲、标签命名统一 度量:超差时间占比 示例:容差 2℃,超差占比 1.2% 时效性 端到端延迟 = 入库时间 - 采集时间 数据滞后率 = 当前时刻 - 最新点 度量:P50 / P95 / P99 分位数 阈值:超过 2 个采样周期(30s) 示例:P95 = 45s,已影响实时告警 唯一性 联合主键:序列标识 + 时间戳 重复率 = 重复时间戳点数 / 总点数 冲突:同序列同时间戳不同值 策略:后写覆盖 / 保留首值 + 记录冲突 五维度共同约束同一条时间序列:完整性管“有没有”,准确性管“对不对”,一致性管“齐不齐”,时效性管“快不快”,唯一性管“重不重”

五维度的协同与冲突

五个维度并非彼此独立。补数据可以提升完整性,但若补入的值未经校验,可能拉低准确性;去重可以提升唯一性,但若误删了真实的高频变化点,会破坏完整性;降低延迟可以提升时效性,但若牺牲了批量校验,可能影响一致性。因此在实际监控中,需要为每个维度设定优先级和联动规则。

一个可落地的做法是建立质量评分卡,对每个维度按 0~100 打分,再按业务权重加权。例如实时告警场景中,时效性权重 0.3、完整性 0.25、准确性 0.2、一致性 0.15、唯一性 0.1。当综合分低于 80 时触发数据质量工单,并附带各维度的具体异常点列表,便于定位是采集端、传输端还是入库端的问题。

实践提示:度量指标应写入监控系统并保留时间序列本身,即“质量指标也是时序数据”。这样才能观察质量随时间的趋势,判断是偶发波动还是持续劣化。

总结来看,时序场景下的五个质量维度各自有明确的定义边界和可计算度量:完整性看覆盖率与字段齐全度,准确性看越界、变化率和离群占比,一致性看跨源偏差、时间对齐和语义统一,时效性看延迟分位数与滞后率,唯一性看重复率与冲突率。只有把这些度量落到具体的时间窗口、采样周期和业务阈值上,质量监控才具备可操作性。