數據質素校驗規則提示詞(完整性、唯一性、一致性、及時性、合理性檢查 + SQL 校驗與 dbt tests 寫法)

報表數字經常出錯才被業務發現(重複訂單、金額為負、昨天的數據沒同步、兩張表對不上),想在數據進入報表之前自動攔住問題時用:給出表結構和業務規則,AI 按質素維度設計校驗規則,寫成 SQL 或 dbt tests,並設定失敗時阻斷還是告警。

NNathaniel bigo··原創首發·AI 輔助撰寫
通用大模型 對話模型通用
你是一名數據工程師,負責數據倉庫的數據質素保障。請為下面的表設計數據質素校驗。

- 表名與用途:[表名與用途](例:dwd_orders 訂單明細,供所有銷售報表使用)
- 表結構(字段、類型、含義):
  [表結構]
- 業務規則:[業務規則](例:已支付訂單必須有支付時間;實付金額不大於應付金額)
- 數據更新方式與時間:[更新方式](例:每天凌晨 3 點增量同步前一天數據)
- 校驗工具:[校驗工具](例:dbt、定時運行的 SQL、調度平台自帶的質素檢查)

請按以下維度設計規則,並為每條規則給出:規則描述 | 校驗 SQL 或測試配置 | 失敗時的級別(阻斷下游 / 告警 / 只記錄)| 理由。
1. 完整性:主鍵與關鍵字段不能為空;與上游源表的行數對比(允許的差異範圍)。
2. 唯一性:主鍵唯一;業務上應唯一的組合(例如同一訂單號只有一行)。
3. 有效性:枚舉字段只能是允許的值;金額、數量的取值範圍;日期不能在未來或早於業務開始日期。
4. 一致性:跨字段規則(狀態與時間字段的對應、金額之間的關係);跨表規則(外鍵在維度表中存在、彙總表與明細表合計一致)。
5. 及時性:數據最新時間是否在預期之內(例如每天 4 點前必須有昨天的數據)。
6. 波動合理性:今日行數或金額與過去 N 天同期相比的異常波動(閾值要考慮星期規律與大促)。

然後說明:
- 級別的劃分原則:會導致報表錯誤的問題阻斷下游,輕微問題告警;
- 失敗後的處理流程與通知對象;
- 規則的維護:新增字段或口徑變更時如何同步更新規則。

如果使用 dbt,給出模型的 yml 配置(內置測試與自定義測試);否則給出可以直接調度運行的 SQL,每條 SQL 返回違規的行數或樣例。

高亮處換成你自己的內容:[表名與用途]、[表結構]、[業務規則]、[更新方式]、[校驗工具]

ChatGPT Plus 充值

已被複製 0 次

使用說明

怎麼填變量:[業務規則] 是最有價值的部分,通用規則(非空、唯一)誰都能想到,真正能攔住問題的往往是業務規則,例如「退款金額不能大於實付金額」「已發貨訂單必須有物流單號」。[更新方式] 決定及時性規則怎麼寫。

常見坑:

  • 所有規則失敗都只發告警,數據有問題的報表照樣產出,業務看到錯誤的數字。會導致報表錯誤的問題要阻斷下游任務。
  • 規則太多太嚴,每天都有一堆告警,最後大家都不看了。按影響程度分級,寧缺毋濫。
  • 只檢查本表,不檢查與上游的行數對比,數據同步丟了一半也發現不了。

追問技巧:追問「把這些規則的執行結果做成一個數據質素看板,展示每張表每天的通過率」,或「上游源系統經常改字段,怎麼儘早發現」。

示例輸出

示例,僅供參考(dbt 配置節選)
yaml
models:
  - name: dwd_orders
    columns:
      - name: order_id
        data_tests:
          - not_null
          - unique
      - name: status
        data_tests:
          - accepted_values:
              values: ['PENDING', 'PAID', 'CANCELLED', 'REFUNDED']
      - name: user_id
        data_tests:
          - relationships:
              to: ref('dim_users')
              field: user_id
sql
-- 自定義規則:已支付訂單必須有支付時間,且實付不大於應付(返回違規行,結果不為空即失敗)
SELECT order_id, status, paid_at, paid_amount, payable_amount
FROM {{ ref('dwd_orders') }}
WHERE (status = 'PAID' AND paid_at IS NULL)
   OR paid_amount > payable_amount
規則級別理由
order_id 唯一阻斷重複會導致所有銷售額被放大
昨日數據行數比過去 4 周同日均值低 50% 以上告警可能是同步失敗,也可能是真實下降,需要人工確認

說明:較新版本的 dbt 中測試的配置鍵為 data_tests,舊版本為 tests,以你所用版本的文檔為準。

同款作品

用這條提示詞做出來的作品;原作者會因此獲得積分

做同款

還沒有同款,來做第一個。

Nathaniel 的更多內容

同主題

同模型

0 條評論

登入 後參與評論

還沒有評論,來搶沙發~