參照完整性檢查
data_quality.validate_rows 嚴格限於單列、單表 —— 它的 unique 規則只在單一批次內去重。沒有跨兩個
已載入資料表的父子外鍵檢查、沒有複合鍵唯一性,也沒有獨立的 accepted-values / row-count 斷言。本功能在
已由 load_rows / query_sqlite 載入的資料列上,補上這些 dbt 風格的通用檢查。
純標準函式庫(collections);不匯入 PySide6。每個函式皆為純函式(輸入列、輸出報告),因此在 CI
中完全具決定性。
無頭 API
from je_auto_control import (
check_foreign_key, check_unique_key, check_accepted_values,
check_row_count, load_rows,
)
orders = load_rows("orders.csv")
users = load_rows("users.csv")
fk = check_foreign_key(orders, "user_id", users, "id") # {ok, violations, missing}
pk = check_unique_key(orders, ["region", "id"]) # {ok, duplicates}
av = check_accepted_values(orders, "status", ["open", "closed"])
rc = check_row_count(orders, minimum=1) # {ok, count}
check_foreign_key 標記父欄位中不存在的非空子值(dbt relationships)。check_unique_key 回報
重複的單一或複合鍵。check_accepted_values 列出允許集合之外的非空值。check_row_count 驗證筆數
落在選用的 minimum / maximum 範圍內。每個皆回傳 ok 旗標加上細節。
執行器命令
AC_check_foreign_key、AC_check_unique_key、AC_check_accepted_values 與 AC_check_row_count
各自接受 JSON rows``(以及欄位 / 鍵 / 允許清單)並回傳報告。全部皆以 MCP 工具(``ac_check_*)以及
Script Builder 中 Data 分類下的命令提供。