2025 年 10 月 9 日:Snowflake 上的 dbt 项目最近的改进(预览

dbt Projects on Snowflake 现在支持以下功能:

dbt 项目失败显示为查询失败

现在,任何 dbt 项目错误(例如编译或测试失败)都显示为查询失败。这样一来,可以更轻松地使用任务或其他编排工具来处理它们。您可以使用 SELECT SYSTEM $get_dbt_log('<query_id>') 来查看详细日志。

重要

对于依赖先前检查返回值的方法来确定 dbt 项目执行结果的人来说,这可能会导致重大变化。

创建时编译

无论何时部署或更新 dbt 项目对象,它都会自动编译,因此构建工件是最新的,Snowsight 可以顺利运行。

如果您部署的项目在编译期间失败,这可能会导致重大变化。

编译目前默认使用您 profiles.yml 中的配置文件。解决方法是,您可以在部署之前更新您的 profiles.yml,使其指向生产目标,然后再进行部署。在未来的版本中,您可以在项目对象上使用 DEFAULT_TARGET 来覆盖它。

在编译时安装 deps

您可以选择在部署期间运行 dbt deps,通过在部署或更新命令上设置 EXTERNAL_ACCESS_INTEGRATIONS=[...ext] 来安装项目依赖关系。这意味着在部署具有外部依赖关系的项目时,您不再需要将 /dbt_packages 包括在内。

在未来的版本中,创建时编译将支持该 local: 语法。

MONITOR 权限

dbt 项目现在支持 MONITOR 权限。这使您可以查看执行历史记录、下载 dbt 项目对象的构建工件以及下载每个 dbt 项目执行的构建工件。可以在 DATABASE 或 SCHEMA 级别授予此权限。

访问执行结果更容易

您可以直接从 Query History 页面下载构建工件或使用以下新系统函数:

  • SELECT SYSTEM$LOCATE_DBT_ARTIFACTS($latest_query_id):返回运行后的 dbt 项目工件的文件路径(例如,snow://dbt/DB_TEST.PUBLIC.DBT_PROJECT_TEST/results/query_id_01bf3f5a-010b-4d87-0000-53493abb7cce/)。

  • SELECT SYSTEM$LOCATE_DBT_ARCHIVE($latest_query_id):返回 dbt 项目输出存档 zip 的位置。

  • SELECT SYSTEM$GET_DBT_LOG($latest_query_id):返回 dbt.log 文件的最后 1000 行。要查看完整日志,请下载存档 zip。

使用 Snowflake CLI 从结果暂存区下载这些工件,例如:

snowsql -q “GET 'snow://dbt_project/DB_TEST.PUBLIC.DBT_PROJECT_TEST/results/query_id_01bf3f89-0300-0001-0000-0000000c1229/dbt_artifacts.zip' file:///Users/user_name/Code/temp"
Copy

这种新方法取代 OUTPUT_ARCHIVE_URL 并改善了与 Snowflake CLI 和其他服务的互操作性。

重要

此版本之前执行的 dbt 项目输出日志不会显示在 Query History 页面上。

有关更多信息,请参阅 Snowflake 上的 dbt 项目

语言: 中文