ALTER DBT PROJECT¶
修改现有 dbt 项目对象 的属性。
语法¶
ALTER DBT PROJECT [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER DBT PROJECT [ IF EXISTS ] ADD VERSION [ <version_name_alias> ]
FROM '<source_location>'
ALTER DBT PROJECT [ IF EXISTS ] <name> SET
[ DEFAULT_TARGET = { default_target } ]
[ EXTERNAL_ACCESS_INTEGRATIONS = { integration_name } ]
[ COMMENT = '<string_literal>' ]
ALTER DBT PROJECT [ IF EXISTS ] <name> UNSET
[ DEFAULT_TARGET = { default_target } ]
[ EXTERNAL_ACCESS_INTEGRATIONS = { integration_name } ]
[ COMMENT ]
参数¶
name为要更改的 dbt 项目对象指定标识符。
如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。
有关更多信息,请参阅 标识符要求。
RENAME TO new_name将 dbt 项目对象的名称更改为
new_name。新的标识符必须在架构中是唯一的。有关标识符的更多详细信息,请参阅 标识符要求。
可以将对象移动到其他数据库和/或架构,同时选择重命名对象。为此,请指定一个限定
new_name值,该值分别以db_name.schema_name.object_name或schema_name.object_name的形式包含新数据库和/或架构名称。备注
目标数据库和/或架构必须已存在。此外,新位置中不能存在同名对象;否则,该语句将返回错误。
除非 对象所有者(即拥有对象 OWNERSHIP 权限的角色)也拥有目标架构,否则禁止将对象移动到托管访问架构。
重命名对象时,引用该对象的其他对象必须使用新名称进行更新。
ADD VERSION [ version_name_alias ]通过将当前版本标识符加 1 的这种增量方式来创建一个新版本;例如,将
version$2增加到version$3。version name alias是可选的,它是一个自定义标识符,用于对应新创建的版本标识符。version name alias必须符合 标识符要求。FROM 'source_location'一个字符串,用于指定 dbt 项目的源文件位置和版本,新版本将从该位置创建。
dbt 项目源文件可以位于以下任一位置:
Git 存储库暂存区,例如:
'@my_db.my_schema.my_git_repository_stage/branches/my_branch/path/to/dbt_project_or_projects_parent'For more information about creating a Git repository object in Snowflake that connects a Git repository to a workspace for dbt Projects on Snowflake, see 创建连接到 Git 存储库的工作区. For more information about creating and managing a Git repository object and stage without using a workspace, see 在 Snowflake 中使用 Git 存储库 and CREATE GIT REPOSITORY.
现有的 dbt 项目暂存区,例如:
'snow://dbt/my_db.my_schema.my_existing_dbt_project_object/versions/last'版本说明符是必需的,可以是
last``(如前面的示例所示)、``first,也可以是version$<num>形式的任何现有版本的说明符。有关更多信息,请参阅 dbt 项目对象和文件的版本控制。内部命名暂存区,例如:
'@my_db.my_schema.my_internal_named_stage/path/to/dbt_projects_or_projects_parent'不支持内部用户暂存区和表暂存区。
Snowflake 上的 dbt 工作区,例如:
'snow://workspace/user$.public."my_workspace_name"/versions/live/path/to/dbt_projects_or_projects_parent'我们建议将工作区名称用双引号括起来,因为工作区名称区分大小写并且可能包含特殊字符。
版本说明符是必需的,可以是
last、first、live或version$<num>形式的任何现有版本的说明符。有关更多信息,请参阅 dbt 项目对象和文件的版本控制。
SET ...为 dbt 项目对象设置一个或多个指定的属性或参数:
DEFAULT_TARGET = default_targetSpecifies the profile used for compilation and subsequent runs (for example,
prod) of the dbt project object. This parameter can be overriden by using the EXECUTE DBT PROJECT command withARGS = --target.EXTERNAL_ACCESS_INTEGRATIONS = integration_nameSpecifies the external access integration used to grant permissions to pull remote dependences from dbt package hub or Github. When declared on an object,
dbt depswill run automatically during deployment. For more information, see 了解 Snowflake 上 dbt 项目的依赖项.COMMENT = 'string_literal'为 dbt 项目对象添加注释或覆盖现有注释。
UNSET ...将 dbt 项目对象的一个或多个指定属性或参数取消为 NULL 或不设置值:
DEFAULT_TARGETEXTERNAL_ACCESS_INTEGRATIONSCOMMENT
要使用单个 ALTER 语句取消设置多个属性或参数,请使用逗号分隔每个属性或参数。
取消设置属性或参数时,只指定属性或参数名称(除非上述语法表明您应该指定值)。指定值会返回错误。
访问控制要求¶
用于执行此 SQL 命令的 角色 必须至少具有以下 一项 权限:
权限 |
对象 |
备注 |
|---|---|---|
OWNERSHIP |
dbt 项目 |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
要对架构中的任何对象执行操作,需要对父数据库和架构的 USAGE 权限。请注意,如果某个角色获授某个架构的任意权限,该角色便能够解析该架构。例如,若某角色被授予 CREATE 权限,则可以在该架构上创建对象,而无需 同时 被授予该架构的 USAGE 权限。
使用说明¶
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
以下示例演示如何更新 Snowflake 中的 Git 存储库对象,以提取 Git 仓库的最新代码,然后通过添加新版本来更新 dbt 项目对象的内容:
-- Update the Git repository object to fetch the latest code
ALTER GIT REPOSITORY sales_db.integrations_schema.sales_dbt_git_stage FETCH;
-- Add a new version to the dbt project object based on the updated Git repository object
ALTER DBT PROJECT sales_db.dbt_projects_schema.sales_model
ADD VERSION
FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_project';