You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从dbt项目加载资产?遇Dagster报错求助

解决Dagster加载dbt资产时"Could not find profile named dbtz"错误

问题根源

你调用load_assets_from_dbt_project时,profiles_dir参数传的是profiles.yml文件的路径,但这个参数要求传入的是包含profiles.yml的目录路径。dbt会在指定目录下寻找profiles.yml文件,直接传文件路径会导致dbt无法定位到正确配置,因此抛出找不到profile的错误。

修复步骤

  1. 修正profiles_dir参数
    修改代码,将DBT_PROFILES指向profiles.yml所在的目录,而非文件本身:

    from dagster_dbt import load_assets_from_dbt_project
    from dagster._utils import file_relative_path
    
    DBT_PROJECT_PATH = file_relative_path(__file__, "../../dbtz")
    # 指向包含profiles.yml的config目录,不是文件路径
    DBT_PROFILES_DIR = file_relative_path(__file__, "../../dbtz/config")
    
    dbt_assets = load_assets_from_dbt_project(
        project_dir=DBT_PROJECT_PATH, 
        profiles_dir=DBT_PROFILES_DIR
    )
    
  2. 验证路径有效性
    可添加代码确认目录存在:

    import os
    assert os.path.exists(DBT_PROFILES_DIR), f"Profiles directory {DBT_PROFILES_DIR} does not exist"
    
  3. 额外检查项

    • 确认dbt项目根目录的dbt_project.yml中,profile字段值为dbtz,与profiles.yml中的profile名称完全匹配:
      # dbt_project.yml中需包含
      profile: "dbtz"
      
    • 替换service_account.json的相对路径为绝对路径,避免Dagster运行环境与命令行工作目录不同导致的路径问题:
      keyfile: "/绝对路径/to/service_account.json"
      

命令行正常的原因

命令行执行dbt run时,dbt默认读取~/.dbt/profiles.yml,或者你可能通过--profiles-dir指定了正确目录,而Dagster中参数传错才出现不一致。

内容的提问来源于stack exchange,提问作者skulden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:55:09