SuperAPI AI 工具集

01-yaml-table-setup

通用与其它

查看项目

更新于 10-15 20:32

技能介绍

用途:把 Gold 层表定义放在 YAML 文件中作为唯一事实来源,由单个通用 Python 脚本在运行时读取 YAML 并动态建表,无需代码生成或内嵌 DDL。适用于跨多个领域管理 10 个以上 Gold 表、模式频繁演进、希望避免 Python 内嵌 SQL DDL、需要统一表属性、且让 YAML 可审查可比较的场景;仅 1-2 张简单表、建表时需要复杂转换逻辑或高度自定义 DDL 时不宜使用。

主要能力:脚本含 find_yaml_base()(在 Databricks 与本地均可用)、load_yaml()、build_create_table_ddl()、create_table() 等函数;从 YAML 读取表名、领域、描述、主键与列定义(name、type、nullable、description),生成 CREATE OR REPLACE TABLE DDL,统一设置 Delta 属性(如 delta.enableChangeDataFeed、delta.enableRowTracking、delta.autoOptimize.autoCompact、layer=gold、domain、entity_type),支持 STRING、INT、BIGINT、DOUBLE、BOOLEAN、DATE、TIMESTAMP、DECIMAL、ARRAY<STRING>、MAP<STRING,STRING> 等类型。建表后按 primary_key 添加 NOT ENFORCED 主键约束。

使用方式:在 gold_layer_design/yaml/{domain}/.yaml 下放置 YAML 文件,databricks.yml 的 sync.include 中加入 gold_layer_design/yaml/**/.yaml,任务环境加 pyyaml>=6.0 依赖;运行作业并以 catalog、gold_schema、domain(all 或具体领域名)为参数。修改模式只需编辑 YAML,再执行 databricks bundle deploy 与 databricks bundle run。外键约束由单独的 add_all_fk_constraints.py 在全部主键存在后处理。

限制与注意:YAML 未同步会报 YAML directory not found,缺少 PyYAML 会报 No module named 'yaml',主键列名须与列定义一致否则报列不存在。列描述建议面向 LLM 友好。数据源未提供官方收费与许可信息。