推送摄取数据的异常检测
推送的体量和新鲜度数据与拉取模型使用相同的异常检测器。
探测器不会立即激活——它们需要足够的历史数据来学习
在它们能够对偏差发出警报之前的预期行为。
推荐推送频率:每小时一次
- 每小时最多推送一次 — 推送过于频繁会产生不可预测的检测结果
行为,因为训练管道将数据汇总到每小时的桶中 - 持续推进 — 间隔超过几天会延迟激活或导致失活
之前活跃的探测器
新鲜度检测器
新鲜度检测器学习一个表被更新的频率,并在没有更新时触发
更新时间比预期的长。
训练内容:last_update_time之间的连续差值(delta_sec)
跨推送的值。只有在last_update_time实际改变时,推送才会计数。
激活要求:
| Requirement | Value |
|---|---|
| Minimum samples | 7 pushes wherelast_update_timechanged (or coverage ≥ 0.8 for slow tables) |
| Minimum coverage | 0.15 (=median_update_secs × n_samples / 22 days) |
| Training window | 35 days |
| Supported update cycle | 5 minutes – 7.7 days |
| Minimum table age | ~14 days on older warehouses |
停用触发器:
- 14天内无推送 →
没有最新数据 - 在过去14天中间隔 > 7 天,对于快速表(中位更新时间 ≤ 26.4 小时)→
过去两周超过一周的间隔
体积检测器(体积变化 不变大小)
检测行数或字节数的异常波动/下降。
激活要求:
| Requirement | Value |
|---|---|
| Minimum samples (daily) | 10 |
| Minimum samples (subdaily, ~12x/day) | 48 |
| Minimum samples (weekly) | 5 |
| Minimum coverage | 0.30 (=N × median_update_secs / 42 days) |
| Training window | 42 days |
| Minimum table age | 5 days |
| Regularity check | 75th/25th percentile of update intervals ≥ 0.2 |
停用:没有硬性间隙限制,但随着42天窗口的推进,覆盖率会下降
没有新数据。最终降到0.3以下并停用。
汇总表
| Freshness | Volume Change / Unchanged Size | |
|---|---|---|
| Recommended frequency | Hourly | Hourly |
| Maximum frequency | Once per hour | Once per hour |
| Training window | 35 days | 42 days |
| Minimum samples | 7 | 10 (daily) / 48 (subdaily) / 5 (weekly) |
| Minimum coverage | 0.15 | 0.30 |
| Hard deactivation gap | 14 days | No (coverage degrades) |
| Fast-table gap warning | 7 days in last 14 | N/A |
告诉客户什么
当客户问“为什么我的异常检测不起作用?”时:
在 MC 用户界面或通过 GraphQL (
getTable.thresholds.freshness.status) 检查检测器状态。"training"状态表示数据量尚不足。"inactive"表示已停用
条件已触发——检查原因代码。验证推送频率— 他们是否每小时正好推送一次?无论是推送过快还是
过慢的速率会导致问题。验证
last_update_time是否有变化— 以便累积训练样本的新鲜度,
每次推送必须携带与前一次不同的last_update_time。如果表
实际上没有更新,推送仍然到达,但样本计数没有增加。设定实际的期望— 新鲜度检测器大约需要 1–2 周的每小时推送数据。
体积探测器日表需要10天,次日表最多需要42天。
异常检测不是瞬间完成的。不要推送间隙然后再恢复— 如果客户暂停推送一周然后
恢复时,新鲜度检测器可能会停用。他们即使在
表格没有变化(只是重复相同的last_update_time)以保持覆盖率,
尽管那次特定的推送不会被算作新的新鲜样本。