用途:把已有 SQL 接入 The Nomad Data Stack 的某一层(ODS/DIM/DWD/ADS),适用于新增表、接入数据源、配置数据层。
架构与规范:项目采用 Airflow + DuckDB + MinIO;分层为 raw → ods → dwd → dim → ads;存储为 Parquet + Hive 分区(dt=YYYY-MM-DD);查询用 DuckDB 视图;调度为 Apache Airflow。表名必须带类型后缀:_full(全量快照,每次全量覆盖)、inc(增量,仅存变更)、zip(拉链,追踪历史、支持时间旅行)。命名格式为 {layer}{业务描述}{类型后缀},如 dim_trade_calendar_full;缺后缀会破坏一致性。ODS 层为唯一例外,不带后缀。
ODS 接入:前提是数据已在 lake/raw/daily/{target}(CSV)。先在 dags/dw_config.yaml 的 sources 下添加 ods_{table_name} 的 path 与 format;再在 dags/ods/ 创建 ods_{target}.sql,从 tmp_ods_{target} 读取、做字段类型转换、并添加 '${PARTITION_DATE}' AS dt;然后在 catalog/migrations/ 创建 {number}ods{target}_table.sql,包含 Schema 定义宏、Seed parquet 初始化、DuckDB 视图定义和分区查询宏;最后运行 dw_ods DAG。
DIM/DWD/ADS 接入:在 dags/{layer}/ 创建 {layer}{table_name}{type}.sql,从下层读取、添加分区列 dt。若 SQL 引用了同层表(如 dim.other_table),需在 dw_config.yaml 的 table_dependencies 下按层配置依赖,如 dim: dim_trade_calendar_full: [dim_other_table_full];无同层依赖可省略。再创建 {number}_{table_name}table.sql migration(内容同上),跨层依赖由框架 layer_dependencies 自动处理,运行对应 dw{layer} DAG。
Migration 命名:先 ls catalog/migrations/ 查看现有编号,用下一个编号,格式 00XX_{table_name}_table.sql。
限制与验证:所有表均为分区表,SQL 必须包含 ${PARTITION_DATE};测试方式是运行对应 DAG 后执行 SELECT * FROM {layer}.{table_name} LIMIT 10。完整示例见 examples/ods_integration.md 与 examples/dim_integration.md,速查见 REFERENCE.md。具体配置字段以外的参数细节、收费与运行环境要求,资料未提供。