參照完整性檢查

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_keyAC_check_unique_keyAC_check_accepted_valuesAC_check_row_count 各自接受 JSON rows``(以及欄位 / / 允許清單)並回傳報告。全部皆以 MCP 工具(``ac_check_*)以及 Script Builder 中 Data 分類下的命令提供。