SQL模型字典表核心是将分散SQL沉淀为可管理、可追溯、可复用的元数据,通过model_dict、model_param、model_dependency和model_version四张表,实现身份标识、动态参数、依赖追踪与版本快照一体化管理。

SQL模型字典表的核心目标是把分散在代码、配置文件或ETL脚本中的SQL逻辑,统一沉淀为可管理、可追溯、可复用的元数据。关键不是堆字段,而是让“谁在什么时候用了哪段SQL干了什么事”一目了然。
核心表结构:model_dict(模型字典主表)
记录每个逻辑模型的基本身份和生命周期信息。
- model_code:唯一业务编码(如 red">dwd_user_login_di),不依赖数据库名/表名,用于跨系统关联
- model_name:中文名称(如“用户日登录事实表”),面向业务理解
- model_type:枚举值(view / table / materialized_view / cte),明确产出形态
- source_sql:原始SQL文本(支持含${xxx}占位符的模板化写法)
- status:draft / published / deprecated,控制上线节奏
- created_by + updated_by:绑定账号体系,留痕责任人
- created_at + updated_at:自动更新时间戳
参数与变量表:model_param(支撑SQL动态化)
解决硬编码问题,让同一段SQL适配不同环境、周期或租户。
- model_code:外键关联 model_dict
- param_key:变量名(如 start_date、env、tenant_id)
- param_value:默认值(如 '{{ ds }}' 或 'prod')
- is_required:是否运行时必须传入(避免漏配)
- desc:说明用途(如“分区起始日期,格式 YYYY-MM-DD”)
依赖关系表:model_dependency(厘清血缘与影响范围)
自动识别“这张表被哪些模型引用”,支撑影响分析和下线评估。
- upstream_model:上游模型 code(被依赖方)
- downstream_model:下游模型 code(依赖方)
- dependency_type:full_select / join_on / where_in / cte_ref,区分依赖强度
- parsed_at:最近一次SQL解析时间(配合定时任务更新)
版本与发布表:model_version(保留历史快照)
每次发布新SQL都生成快照,支持回滚、比对、审计。
- model_code + version:联合主键(如 dwd_user_login_di v1.2.0)
- sql_content:该版本完整SQL(不含占位符,已做变量替换或留空标记)
- publish_notes:简要说明变更点(如“修复user_id空值导致join丢失”)
- is_current:标识当前生效版本(仅一条为 true)
基本上就这些。不需要大而全,先跑通 model_code → source_sql → param → version 这条主线,再按需扩展依赖分析或权限字段。重点是让SQL从“散落的字符串”变成“带身份、有版本、知来路”的资产。










