用途:在 Databricks Unity Catalog 中规范主键(PRIMARY KEY)与外键(FOREIGN KEY)约束的实现,用于星型维度建模(Kimball 实践),适用于创建 Gold 层表、SCD Type 1/2 维度表、引用维度的事实表,以及排查约束应用错误和预防生产部署失败。
主要能力:统一代理键(surrogate key)作为主键、事实表通过外键引用代理键、业务键使用 UNIQUE 约束;提供约束命名规范(pk_<table>、fk_<fact><dim>、uk<table>_<column>);附带 constraint-patterns.md、validation-guide.md 参考文档,apply_constraints.py 脚本(含 add_primary_key、add_foreign_key、add_unique_constraint、drop_constraint、apply_all_constraints),以及 constraints-template.sql 模板。
关键规则:代理键列必须 NOT NULL;外键必须引用主键列;主键可在 CREATE TABLE 内联定义,外键禁止内联,须在所有表创建后通过 ALTER TABLE 单独脚本应用;填充 DATE 列时使用 CAST(DATE_TRUNC(...) AS DATE);所有约束均带 NOT ENFORCED。
用法示例: from scripts.apply_constraints import add_primary_key, add_foreign_key add_primary_key(spark, catalog, schema, "dim_store", ["store_key"]) add_foreign_key(spark, catalog, schema, "fact_sales", ["store_key"], "dim_store", ["store_key"])
限制:约束为信息性(NOT ENFORCED),不强制数据校验;资料未提供具体收费、平台版本或效果数据。