SDP Pipeline Basics 是一份用于 Spark Declarative Pipelines 的建表基础规范,适用于在管道中创建或修改表的场景。其核心要求是始终使用 SQL 构建 SDP 管道,而不是 Python。
用途与总体原则 该规范用于统一 SDP 管道的表定义方式,确保表命名、注释、属性、审计列、数据质量约束和 SQL 格式保持一致。文中还提示可阅读 sql-templates.md 获取可复制的 SQL 模式,包括 Bronze 层 CREATE、审计列与数据质量标记。
表命名 所有表名必须使用 lowercase_snake_case 并带层级前缀:Bronze 层用 bronze_(如 bronze_transactions),Silver 层用 silver_(如 silver_customers),Gold 层用 gold_(如 gold_daily_revenue)。禁止使用 PascalCase、全大写、kebab-case 或 camelCase,也不得省略层级前缀。
表类型选择 文件摄取(Auto Loader)、CDC 和实时数据使用 STREAMING TABLE,语法为 CREATE OR REFRESH STREAMING TABLE;来自已有 Delta 表的批数据和聚合使用 MATERIALIZED VIEW,语法为 CREATE OR REFRESH MATERIALIZED VIEW。不得使用已弃用的 CREATE OR REFRESH LIVE TABLE 或 LIVE. 虚拟模式;在默认发布模式下 LIVE. 会被忽略。同一管道内的数据集可用未限定表名引用,也可用全限定 catalog.schema.table 引用。
注释与表属性 每张表必须带 COMMENT 子句说明用途:Bronze 使用 "Raw <entity> data from <source>" 模式,Silver 使用 "Cleaned and validated <entity> with derived metrics",Gold 使用 "Business aggregation for <use case>"。每张表必须在 TBLPROPERTIES 中至少设置 quality,已知领域时附加 domain。文中明确不得设置 owner,因为该键由 Databricks 保留并会报错;表所有权由管道运行身份决定。示例包括 quality=silver 时附加 delta.enableChangeDataFeed 与 delta.enableRowTracking。
审计列与数据质量 每张表必须在 SELECT 的最后包含两个审计列(audit_timestamp、source_system),具体表达式参见 sql-templates.md。数据质量约束方面:Bronze 仅用 WHERE 过滤以保留原始数据;Silver 使用 CONSTRAINT 子句校验,关键字段用 ON VIOLATION FAIL UPDATE,非关键字段用 ON VIOLATION DROP ROW;Gold 一般不设约束,因为数据已在 Silver 中校验。Silver 表还必须包含 data_quality_flag 列,使用 sql-templates.md 中的 CASE 模式。
SQL 格式与列顺序 SQL 关键字和函数使用大写(SELECT、FROM、WHERE、AS、ROUND()、CAST()、COALESCE()),表名和列名使用 lowercase_snake_case,别名使用简短小写(t、a、d)。列组织顺序为:标识符(主键、外键)、维度、度量、派生字段、数据质量标记,审计列放在最后。
聚类与连接 STREAMING TABLE 定义中应添加 CLUSTER BY AUTO。同一管道内引用其他数据集时直接使用表名(如 FROM bronze_articles),不用 LIVE.bronze_articles;管道外表使用全限定名。读取流式源使用 STREAM 关键字(如 FROM STREAM read_files(...) 或 FROM STREAM source_table),创建物化视图时不要使用 STREAM。连接必须使用显式 JOIN 语法并带表别名。
适用场景与限制 该技能适合需要统一 SDP 管道建表规范、保证分层命名与数据质量约束的工程场景。其内容为规范与约定,不涉及具体产品收费、价格或平台部署信息;相关细节暂未提供。