使用 Snowflake CLI 管理 DCM 项目

您可以使用 Snowflake CLI 管理 DCM project。有关 DCM 项目的更多信息,请参阅 Snowflake DCM Projects

使用 DCM project 功能安装 Snowflake CLI

要使用 snow dcm 命令,您必须安装 Snowflake CLI 版本 3.16.0 或更高版本。有关更多信息,请参阅 安装 Snowflake CLI

验证您已成功连接到 Snowflake

Snowflake CLI 需要有效的连接才能与 Snowflake 进行交互。有关管理连接的信息,请参阅 配置 Snowflake CLI

在 Snowflake CLI 中启用 DCM 命令

要使用 DCM 命令,必须先启用 SNOWFLAKE_CLI_FEATURES_ENABLE_SNOWFLAKE_PROJECTS 功能标志,可通过以下任一方式进行设置:

  • 在运行命令之前,将 SNOWFLAKE_CLI_FEATURES_ENABLE_SNOWFLAKE_PROJECTS 环境变量设置为 true

  • config.toml 文件中,将 enable_snowflake_projects 配置选项设置为 true,如下例所示:

    [cli.features]
    enable_snowflake_projects = true
    

通过模板初始化 DCM project

  • 要通过模板初始化 DCM project,请使用 snow init 命令:

    snow init <project_dir_name> --template dcm_project
    

    其中 <project_dir_name> 是带有 DCM project 文件的目录。此目录由 snow init 命令创建,并使用从指定模板生成的项目文件进行填充。

    例如,以下命令在 MY_PROJECT 目录中创建项目文件:

    snow init MY_PROJECT --template dcm_project
    

Snowflake CLI 命令

Snowflake CLI 添加了以下命令,以支持 DCM Projects:

创建和部署 DCM projects

本部分介绍如何使用 Snowflake CLI 创建、验证和部署 DCM projects。

创建 DCM project

使用 snow dcm create 命令,在 Snowflake 中创建一个新的 DCM project。项目标识符可以直接指定为实参,也可以从 manifest.yml 文件中解析出来。

  • 使用清单中指定的默认目标中的标识符创建项目:

    snow dcm create
    
  • 使用清单中指定的 dev 目标的标识符创建项目:

    snow dcm create --target dev
    
  • 仅当项目尚不存在时才创建项目:

    snow dcm create --if-not-exists
    

有关更多信息,请参阅 snow dcm create

计划 DCM project

使用 snow dcm plan 命令,在部署之前验证项目。此命令显示在不实际进行任何修改的情况下将应用哪些更改。

  • 验证项目:

    snow dcm plan
    
  • 使用变量替换进行验证:

    snow dcm plan -D "db_name=my_database" -D "schema_name=my_schema"
    
  • 使用特定目标配置文件进行验证并保存输出:

    snow dcm plan --target dev --save-output
    

    使用 --save-output 时,该命令将响应和工件保存到本地 out/ 目录。

有关更多信息,请参阅 snow dcm plan

部署 DCM project

使用 snow dcm deploy 命令,将 DCM project 中定义的更改应用到 Snowflake。

  • 部署项目:

    snow dcm deploy
    
  • 使用变量替换进行部署:

    snow dcm deploy -D "table_name='MY_DB.PUBLIC.MY_TABLE'"
    
  • 使用部署别名进行部署:

    snow dcm deploy --alias v1.0
    
  • 使用目标配置文件从特定目录进行部署:

    snow dcm deploy --from /path/to/project --target prod
    

有关更多信息,请参阅 snow dcm deploy

预览 DCM project

使用 snow dcm preview 命令从项目中定义的任何表、视图或动态表返回行。此命令对于在部署之前或之后测试定义非常有用。

  • 预览表中的数据:

    snow dcm preview --object MY_DB.PUBLIC.MY_TABLE
    
  • 带行数限制的预览:

    snow dcm preview --object MY_DB.PUBLIC.MY_VIEW --limit 10
    
  • 带变量替换的预览:

    snow dcm preview --object MY_DB.PUBLIC.MY_VIEW -D "filter_date='2024-01-01'"
    

有关更多信息,请参阅 snow dcm 预览版

测试 DCM project

使用 snow dcm test 命令,运行项目中定义的所有期望(数据指标函数)。此命令验证数据质量规则并返回通过/失败结果。

  • 测试项目:

    snow dcm test
    
  • 使用目标配置文件进行测试:

    snow dcm test --target dev
    
  • 测试并保存结果:

    snow dcm test --save-output
    

如果所有测试都通过,则该命令返回退出代码 0;如果任何测试失败,则返回退出代码 1。

有关更多信息,请参阅 snow dcm test

刷新 DCM project

使用 snow dcm refresh 命令,刷新 DCM project 中定义的所有动态表。这会触发数据的立即刷新。

  • 刷新项目中的动态表:

    snow dcm refresh
    
  • 使用目标配置文件刷新:

    snow dcm refresh --target prod
    
  • 刷新并保存输出:

    snow dcm refresh --save-output
    

该命令报告每个动态表的状态,包括插入和删除的行数。

有关更多信息,请参阅 snow dcm refresh

删除 DCM project

使用 snow dcm drop 命令删除 DCM project。此命令将删除项目及其所有版本。不会删除与项目关联的暂存区。

  • 删除项目:

    snow dcm drop
    
  • 仅删除存在的项目:

    snow dcm drop --if-exists
    

有关更多信息,请参阅 snow dcm drop

管理已部署的 DCM projects

部署 DCM project 后,您可以列出和管理单个部署。

列出已部署的 DCM projects

使用 snow dcm list-deployments 命令,列出给定 DCM project 的所有部署。

  • 列出项目的部署:

    snow dcm list-deployments
    
  • 使用目标配置文件列出部署:

    snow dcm list-deployments --target dev
    

输出显示每个部署的部署名称和别名(如果设置)。

有关更多信息,请参阅 snow dcm list-deployments

删除已部署的 DCM projects

使用 snow dcm drop-deployment 命令,从 DCM project 删除特定的部署。

  • 按名称删除部署:

    snow dcm drop-deployment --deployment 'DEPLOYMENT$1'
    

    备注

    对于包含 $ 的部署名称,使用单引号来防止 shell 扩展。

  • 按别名删除部署:

    snow dcm drop-deployment --deployment v1.0
    
  • 仅删除存在的部署:

    snow dcm drop-deployment --deployment v1.0 --if-exists
    

有关更多信息,请参阅 snow dcm drop-deployment