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 hours | データは最新です |
| 古い | 4-24 hours | 古くなっている可能性があります。想定どおりか確認してください |
| 非常に古い | > 24 hours | バッチジョブでない限り、問題がある可能性が高いです |
| 不明 | タイムスタンプなし | 鮮度を判断できません |
データが古い場合
ソースパイプラインについて 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 対応