关于 checking-freshness
面向数据使用者的数据新鲜度检查技能,通过时间戳和近期行数判断数据是否最新、过期或未知;发现过期时还可检查 Airflow 状态。
主要功能
- 01定位可能的时间戳列
- 02计算距上次更新的时间
- 03检查近期行数
- 04判定数据新鲜度状态
- 05过期时检查 Airflow 运行
适用场景
- 01在会议使用数据前确认时效
- 02检查近期每日加载是否发生
- 03通过流水线状态排查过期数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ astronomer/ agents --skill checking-freshness安装后在 Claude Code 中输入/checking-freshness确认已加载。
详细介绍
数据新鲜度检查
快速判断数据是否足够新,可以使用。
新鲜度检查流程
对每张要检查的表:
1. 查找时间戳列
查找用于指示数据加载或更新时间的列:
_loaded_at、_updated_at、_created_at(常见的 ETL 模式)updated_at、created_at、modified_at(应用程序时间戳)load_date、etl_timestamp、ingestion_timedate、event_date、transaction_date(业务日期)
如果需要查看列名,请查询 INFORMATION_SCHEMA.COLUMNS。
2. 查询上次更新时间
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>
3. 按时间检查行数
对于定期更新的表,请检查近期活动:
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
新鲜度状态
使用以下等级报告状态:
| 状态 | 时长 | 含义 |
|---|---|---|
| 新鲜 | < 4 小时 | 数据是最新的 |
| 陈旧 | 4-24 小时 | 可能已过时,请检查是否符合预期 |
| 非常陈旧 | > 24 小时 | 除非是批处理作业,否则很可能存在问题 |
| 未知 | 无时间戳 | 无法确定新鲜度 |
如果数据已陈旧
检查源数据管道对应的 Airflow:
-
查找 DAG:哪个 DAG 在填充这张表?使用
af dags list并查找匹配的名称。 -
检查 DAG 状态:
- DAG 是否已暂停?使用
af dags get <dag_id> - 上次运行是否失败?使用
af dags stats - 当前是否有运行正在进行?
- DAG 是否已暂停?使用
-
按需诊断:如果 DAG 失败,请使用 debugging-dags 技能进行调查。
在 Astro 上
如果你在 Astro 上运行,还可以:
- Astro UI 中的 DAG 历史记录:查看部署的 DAG 运行历史记录,直观了解近期运行的时间线及其结果
- 用于 SLA 监控的 Astro 警报:配置警报,在 DAG 未能按预期时间完成时收到通知,以便在用户报告之前发现数据陈旧问题
在 OSS Airflow 上
- Airflow UI:使用 DAG 视图和任务日志,确认上次成功运行的时间并检查 SLA 是否有遗漏
输出格式
提供清晰易读、便于快速浏览的报告:
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
快速检查
如果用户只想得到是或否的答案:
- “X 是最新的吗?” -> 检查并回复状态 + 一句话说明
- “我可以在上午 9 点的会议上使用 X 吗?” -> 检查并给出明确的是或否,并附上背景说明
评论
支持 Markdown