用途:该技能面向 dbt 分析仓库项目,提供项目结构、SQL 模式与最佳实践,适用于编写 dbt 模型、测试 SQL 及排查列名、类型、连接等问题。
项目结构:根目录为 dbt/(位于工作区根目录,不在 code/ 下);模型在 dbt/models/,按 staging、intermediate、mart、analytics 分层;配置为 dbt/dbt_project.yml,profiles 为 dbt/profiles.yml。
访问控制:dbt 目录写权限受限。新建或修改模型时,先在 code/.builder/dbt-models/ 创建 SQL,用 code/scripts/ 中的脚本测试查询,验证结果后再请求部署,由用户手动复制到 dbt/models/。
Schema 组织:dbt_staging_bigquery 存放 BigQuery 原始事件;dbt_staging 存放其他来源原始数据;dbt_intermediate 做连接与转换;dbt_mapping 存放 ID 映射;dbt_mart 存放维度模型;dbt_analytics 存放报表视图与聚合;dbt_dev 为开发测试,查询时应排除。
模型配置:使用 config 块设置 schema、materialized(table、view、incremental)与 tags。table 适合每日全量刷新且小于约 1000 万行;view 不占存储、始终最新;incremental 适合大型事件表追加。
SQL 注意事项:列名在规格与实际表间常不一致,应查询 INFORMATION_SCHEMA.COLUMNS 或源模型核实;ARRAY_AGG 中 DISTINCT 与 ORDER BY 非聚合列不能同用;布尔与金额字段常以字符串存储,需 CAST;邮箱匹配统一用 LOWER;去重可用 QUALIFY;可能为 NULL 的列连接需做 NULL 安全处理。
测试流程:先在 code/scripts/ 写全限定表名的 BigQuery SQL 与运行脚本,用 pnpm action test-<feature> 迭代验证,再转换为 {{ ref("table") }} 语法保存。
性能:BigQuery 单查询有 750GB 字节限制,注意表规模与 24 小时缓存,尽早过滤 Enterprise 管道,避免不必要 JOIN 与对大表 SELECT *。
限制:资料未提供安装命令、收费与价格信息,暂未提供。