如何在dbtvault中指定Snowflake仓库?配置后Hub层报错求助
问题排查请求
已在profile配置中指定Snowflake仓库,创建了包含仓库配置的profile.yml文件,但仍持续报错。目前可创建staging层,系统能连接Snowflake,但Hub层无法正常运行。以下是配置文件:
profile.yml 原配置
snowflake-demo: target: dev outputs: dev: type: snowflake account: liveops.us-central1.gcp user: swood password: XXXXXXXX role: PC_DBT_ROLE database: USER_SANDBOX_DB warehouse: USER_SANDBOX_XS_WH schema: SWOOD threads: 4 client_session_keep_alive: False
dbt_project.yml 原配置
# 为你的项目命名!项目名称应仅包含小写字母和下划线,好的包名应体现你的组织名称或模型的预期用途 name: 'scotts_project' version: '1.0.0' config-version: 2 # 此配置指定dbt为该项目使用哪个"profile" profile: 'snowflake_demo' # 这些配置指定dbt应在何处查找不同类型的文件。例如`source-paths`配置表明项目中的模型可在"models/"目录下找到,你可能无需修改这些配置! model-paths: ["models"] analysis-paths: ["analyses"] test-paths: ["tests"] seed-paths: ["seeds"] macro-paths: ["macros"] snapshot-paths: ["snapshots"] target-path: "target" # 存储编译后SQL文件的目录 clean-targets: # `dbt clean`命令会移除的目录 - "target" - "dbt_packages" # 配置模型 # 完整文档:https://docs.getdbt.com/docs/configuring-models # 在这个示例配置中,我们告诉dbt将example/目录下的所有模型构建为表。这些设置可在单个模型文件中使用`{{ config(...) }}`宏覆盖 models: my_new_project: # 适用于models/example/下的所有文件 example: materialized: view
排查要点
修正profile.yml缩进错误
原配置中user、password、role等项缩进层级错误,需与account、type保持同一缩进级别,否则dbt无法正确解析配置。修正后配置如下:snowflake-demo: target: dev outputs: dev: type: snowflake account: liveops.us-central1.gcp user: swood password: XXXXXXXX role: PC_DBT_ROLE database: USER_SANDBOX_DB warehouse: USER_SANDBOX_XS_WH schema: SWOOD threads: 4 client_session_keep_alive: False统一profile名称
dbt_project.yml中指定的profile为snowflake_demo,但profile.yml里的profile名称是snowflake-demo(连字符与下划线不匹配),需将dbt_project.yml中的profile: 'snowflake_demo'改为profile: 'snowflake-demo'。检查Hub层模型的仓库与权限
- 确认Hub层模型是否单独指定了仓库:若模型文件中用
{{ config(warehouse='xxx') }}指定了其他仓库,需确保该仓库存在且当前角色有权限,或统一改为USER_SANDBOX_XS_WH。 - 验证角色
PC_DBT_ROLE对SWOODschema有CREATE TABLE/VIEW权限,同时对USER_SANDBOX_XS_WH仓库有USAGE权限。
- 确认Hub层模型是否单独指定了仓库:若模型文件中用
调整线程数适配仓库规格
当前线程数设为4,XS规格仓库并发能力有限,可尝试将threads改为1后重新运行Hub层模型,排查是否因并发过载导致失败。
内容的提问来源于stack exchange,提问作者Scott Wood
相关产品推荐
相关产品推荐

