dbt Cloud默认数据库与Schema配置位置及前缀问题咨询
问题解答
为什么指定Schema会被自动添加前缀?
dbt默认的generate_schema_name宏逻辑是将项目级默认Schema前缀与模型中指定的Schema名称拼接起来。你通过Partner Connect创建的dbt项目,默认会把你的用户名(这里是ZTRUELOVE)加上DBT_前缀作为项目级Schema前缀,也就是在dbt_project.yml的models配置块里默认有类似这样的设置:
models: your_project_name: schema: dbt_ztruelove
当你在模型里用内联配置指定schema: jaffle_shop时,默认宏会把这两个值拼接成dbt_ztruelove_jaffle_shop,这就是前缀的来源。
dbt Cloud中默认数据库与Schema的配置位置
数据库连接级默认配置
进入dbt Cloud的项目控制台,点击左侧菜单栏的Settings->Project Settings,在Database Connection板块里,能看到默认的Database和Schema配置项,这里的Schema就是项目级的默认前缀,对应本地profiles.yml里的schema字段。项目配置文件级默认Schema
直接在dbt Cloud的项目文件编辑器里打开dbt_project.yml,找到models下的项目配置节点,里面的schema值就是模型的默认Schema前缀,修改这里会影响所有未单独指定Schema的模型。
你之前通过自定义generate_schema_name宏、修改dbt_project.yml的方式解决问题,本质就是覆盖了默认的Schema拼接逻辑,让模型指定的Schema名称直接生效,不再添加前缀。
内容的提问来源于stack exchange,提问作者Zac Truelove
相关产品推荐
相关产品推荐

