ALTER DBT PROJECT

修改现有 dbt 项目对象 的属性。

另请参阅:

CREATE DBT PROJECTEXECUTE DBT PROJECTDESCRIBE DBT PROJECTDROP DBT PROJECTSHOW DBT PROJECTS

语法

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_VERSION = { FIRST | LAST | VERSION$<num> } ]
  [ DEFAULT_ARGS = '<string_literal>' ]
  [ COMMENT = '<string_literal>' ]

ALTER DBT PROJECT [ IF EXISTS ] <name> UNSET
  [ DEFAULT_ARGS ]
  [ COMMENT ]
Copy

参数

name

为要更改的 dbt 项目对象指定标识符。

如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

有关更多信息,请参阅 标识符要求

RENAME TO new_name

将 dbt 项目对象的名称更改为 new_name。新的标识符必须在架构中是唯一的。

有关标识符的更多详细信息,请参阅 标识符要求

可以将对象移动到其他数据库和/或架构,同时选择重命名对象。为此,请指定一个限定 new_name 值,该值分别以 db_name.schema_name.object_nameschema_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'

    有关在 Snowflake 中为 dbt Projects on Snowflake 创建将 Git 存储库连接到工作区的 Git 存储库对象的更多信息,请参阅 创建连接到 Git 存储库的工作区。有关在不使用工作区的情况下创建和管理 Git 存储库对象和暂存区的更多信息,请参阅 在 Snowflake 中使用 Git 存储库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'

    我们建议将工作区名称用双引号括起来,因为工作区名称区分大小写并且可能包含特殊字符。

    版本说明符是必需的,可以是 lastfirstliveversion$<num> 形式的任何现有版本的说明符。有关更多信息,请参阅 dbt 项目对象和文件的版本控制

SET ...

为 dbt 项目对象设置一个或多个指定的属性或参数:

DEFAULT_VERSION = { FIRST | LAST | VERSION$num }

指定 EXECUTE DBT PROJECT 将使用的 dbt 项目对象的默认版本。有关更多信息,请参阅 dbt 项目对象和文件的版本控制

DEFAULT_ARGS = 'string_literal'

字符串,指定在 EXECUTE DBT PROJECT 未指定命令时使用的默认 dbt 命令 (https://docs.getdbt.com/reference/dbt-commands) 和 命令行选项 (https://docs.getdbt.com/reference/global-configs/about-global-configs#available-flags)。

重要

您在 EXECUTE DBT PROJECT 命令中显式指定的实参会覆盖 DBT PROJECT 定义中指定的所有 DEFAULT_ARGS。

COMMENT = 'string_literal'

为 dbt 项目对象添加注释或覆盖现有注释。

UNSET ...

将 dbt 项目对象的一个或多个指定属性或参数取消为 NULL 或不设置值:

  • DEFAULT_VERSION

  • DEFAULT_ARGS

  • COMMENT

要使用单个 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 权限。

使用说明

  • 关于元数据:

    注意

    客户应确保在使用 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';
Copy

以下示例演示如何将 dbt 项目对象的默认参数设置为在 prod 目标上运行,这会覆盖项目定义中先前设置的所有默认参数:

ALTER DBT PROJECT sales_db.dbt_projects_schema.sales_model
  SET DEFAULT_ARGS = 'run --target prod';
Copy
语言: 中文