Understand dbt project objects

A DBT PROJECT is a schema-level object that contains versioned source files for your dbt project in Snowflake. You can connect a dbt project object to a workspace, or you can create and manage the object independently of a workspace.

dbt 项目对象通常基于包含 dbt-project.yml 文件的 dbt 项目目录。这是当您从工作区中 :doc:`部署 </user-guide/data-engineering/dbt-projects-on-snowflake-deploy>`(创建)dbt 项目对象时 Snowflake 使用的模式。

dbt 项目对象支持基于角色的访问控制 (RBAC)。您可以像处理 Snowflake 中的其他架构级对象一样,对 dbt 项目对象执行 CREATE、ALTER 和 DROP 操作。您可以从 Snowflake 仓库中使用 EXECUTE DBT PROJECT 命令来运行 dbt 命令(如 testrun)。您也可以使用 任务 来计划这些命令的执行。

dbt 项目对象如何更新

编辑工作区时,dbt 项目对象不会自动更新;每次希望对象获取代码更改时,都必须进行部署(即添加新版本)。

要创建生产管道,建议创建 dbt 项目对象,并 通过任务调度其执行。由于每个 dbt 项目对象版本都是不可变的,因此这样做可以确保运行之间不会发生任何变化,除非有人显式添加新版本。

要更新 dbt 项目的文件,必须在工作区中添加新版本,例如:

ALTER DBT PROJECT testdbt.public.my_dbt_project_object
  ADD VERSION FROM 'snow://workspace/user$.public."all_my_dbt_projects"/versions/last';
Copy

如果您的 dbt 项目由 Git 提供支持,并且您想自动执行测试和部署,请运行带 --force 选项的 Snow CLI snow dbt deploy 命令,如以下示例所示:

snow dbt deploy --source 'snow://workspace/user$.public."all_my_dbt_projects"/versions/last'  --force my_dbt_project;
Copy

--force 使您能够添加版本;如果没有它,则相当于在已创建的对象上运行 CREATE DBT PROJECT,这将会失败。

For more information about versioning, see dbt 项目对象和文件的版本.