产品与设计
当需要确认数据表是否最新、是否可用于会议或分析时…
用于判断表数据是否及时、是否陈旧,并在陈旧时排查 Airflow/Astro 数据管道问题。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
当需要确认数据表是否最新、是否可用于会议特定
解决思路
- 逐个检查需要确认新鲜度的表。
- 查找表示数据加载或更新时间的时间戳列:`_loaded_at`、`_updated_at`、`_created_at`(常见 ETL 模式);`updated_at`、`created_at`、`modified_at`(应用时间戳);`load_date`、`etl_timestamp`、`ingestion_time`;`date`、`event_date`、`transaction_date`(业务日期)。
- 如果需要查看列名,查询 `INFORMATION_SCHEMA.COLUMNS`。
- 查询最后更新时间: ```sql SELECT MAX(<timestamp_column>) as last_update, CURRENT_TIMESTAMP() as current_time, TIMESTAMPDIFF('hour', MAX(<timestamp_column>), CURRENT_TIMESTAMP()) as hours_ago, TIMESTAMPDIFF('minute', MAX(<timestamp_column>), CURRENT_TIMESTAMP()) as minutes_ago FROM <table> ```
- 对定期更新的表,按时间检查最近活动: ```sql SELECT DATE_TRUNC('day', <timestamp_column>) as day, COUNT(*) as row_count FROM <table> WHERE <timestamp_column> >= DATEADD('day', -7, CURRENT_DATE()) GROUP BY 1 ORDER BY 1 DESC ```
- 按新鲜度状态量表报告:**Fresh** 小于 4 小时,表示数据是当前的;**Stale** 4-24 小时,表示可能过时,需检查是否符合预期;**Very Stale** 大于 24 小时,除非是批处理任务,否则很可能有问题;**Unknown** 没有时间戳,无法判断新鲜度。
- 如果数据陈旧,检查 Airflow 中的源 pipeline。
- 查找 DAG:确定哪个 DAG 填充该表?使用 `af dags list` 并查找匹配名称。
- 检查 DAG 状态:DAG 是否暂停?使用 `af dags get <dag_id>`;最近一次运行是否失败?使用 `af dags stats`;是否有运行正在进行?
- 如果需要诊断:如果 DAG 失败,使用 **debugging-dags** skill 调查。
- 在 Astro 上:在 Astro UI 中检查 deployment 的 DAG run history,查看最近运行及其结果的视觉时间线;配置 Astro alerts for SLA monitoring,以便 DAG 错过预期完成窗口时收到通知,在用户报告前发现陈旧问题。
- 在 OSS Airflow 上:使用 Airflow UI 的 DAGs view 和 task logs 验证最近成功运行和 SLA misses。
- 按以下格式提供清晰、可扫读的报告: ``` FRESHNESS REPORT ================ TABLE: database.schema.table_name Last Update: 2024-01-15 14:32:00 UTC Age: 2 hours 15 minutes Status: Fresh TABLE: database.schema.other_table Last Update: 2024-01-14 03:00:00 UTC Age: 37 hours Status: Very Stale Source DAG: daily_etl_pipeline (FAILED) Action: Investigate with **debugging-dags** skill ```
- 如果用户只想要 yes/no 答案:对于“Is X fresh?”,检查后回复状态加一行说明;对于“Can I use X for my 9am meeting?”,检查后给出明确 yes/no 并附上下文。
适用边界 · 注意事项
- 表中没有可用的时间戳列,或时间戳不能代表数据实际更新时间时不适用,应报告 Unknown 并说明限制。
- 数据本身就是低频更新,例如每日或每周批处理,4 小时/24 小时阈值不应直接判为异常。
- 无权查询 `INFORMATION_SCHEMA`、表数据、Airflow/Astro,或无法访问日志/UI 时,无法完成完整诊断。