使用 Git 的版本控制仪表板

本页介绍如何使用 Databricks Git 文件夹进行版本控制和协作仪表板开发。 它还介绍如何实现 CI/CD 过程,以跨不同的工作区开发和部署仪表板。

重要

此功能目前以公共预览版提供。

概述

Databricks Git 文件夹跟踪仪表板更改和历史记录,支持团队协作,并允许将仪表板部署到生产和恢复以前的版本。

启用仪表板源代码管理

工作区管理员可以从 预览页面控制对公共预览版的工作区访问权限。 默认情况下, Git 文件夹预览中的支持仪表板On

Git 集成如何与仪表板配合使用

Databricks Git 文件夹跟踪和管理草稿仪表板的更改。 仪表板草稿反映跟踪仪表板中的所有更改。 Git 不会跟踪发布和计划配置,例如仓库选择和计划创建。 若要管理这些配置,请使用 UI,或者通过 Databricks 资产捆绑包或 AI/BI REST API 自动进行更改。

  • 若要使用捆绑包进行仪表板管理,请参阅 仪表板
  • 若要使用 REST API 发布和计划仪表板,请参阅 Lakeview API 参考。

注释

Lakeview API 使用旧名称来指代 AI/BI 仪表板。

Databricks Git 文件夹管理仪表板和其他工作区对象的常见 Git 操作。 若要了解详细信息,请参阅 什么是 Databricks Git 文件夹

将源代码管理应用于仪表板

若要使用 Git 跟踪仪表板,请将仪表板放置在 Databricks Git 文件夹中。 使用以下选项之一:

  • 新仪表板: 在现有 Databricks Git 文件夹中创建仪表板,以从一开始就应用源代码管理。
  • 现有仪表板: 将现有仪表板移动到 Databricks Git 文件夹中,以便使用 Git 对其进行跟踪。

管理源控制仪表板的权限

文件夹级权限适用于该文件夹中的所有对象,包括仪表板。 Git 文件夹中的仪表板除了继承任何特定于仪表板的权限之外,还继承父文件夹的权限。 大多数 Git 操作都需要 “CAN MANAGE” 权限。 若要了解详细信息,请参阅 文件夹 ACLGit 文件夹 ACL

将存储库克隆到自己的 Databricks Git 文件夹中,使用功能分支并提交拉取请求。 下表概述了如何在开发和部署的不同阶段使用 Git 文件夹来管理仪表板。

重要

切换 Git 分支是对仪表板的破坏性操作。 Azure Databricks 删除目标分支上不存在的仪表板。 如果切换回,仪表板会再次出现新的 URL 和 ID,这会中断已发布的链接、书签和 API 集成。 在切换并更新所有引用之前,请验证目标分支。

项目阶段 Workflow 预期结果 已知的限制
初始提交
  • 将仪表板移动到工作区中的 Git 文件夹中。
  • 提交并推送到远程 Git 存储库。
Git 跟踪远程存储库中的仪表板。
开发
  • 开发人员在单独的开发分支上创建 Git 文件夹,通常位于主文件夹中。
  • 将更改提交到开发分支。
  • 使用拉取请求将开发分支合并到主分支。
  • 开发人员独立工作。
  • Git 跟踪仪表板版本。
仪表板文件使用 JSON 格式。 SQL 查询显示为单行,这会使拉取请求中的差异难以查看。
部署
  • 在非用户顶级文件夹中的部署分支上创建 Git 文件夹。 请参阅 包含 Databricks Git 文件夹(Repos)的 CI/CD
  • 将更改拉取到部署文件夹中。
  • 从此文件夹中发布仪表板。
  • 删除编辑+ 访问权限并限制对 Git 的更新。
  • 与使用者共享仪表板。
  • 使用者访问仪表板的一致的已发布版本。
  • 可以在同一文件夹中与不同的受众共享仪表板。
Databricks 不提供将远程分支与工作区中的 Git 文件夹同步的内置支持,也不提供从远程部署包含仪表板资源的 Databricks 资产捆绑包的内置支持。 设置 CI/CD 自动化以自动执行:
  • 从远程存储库拉取更新。
  • 同步后发布仪表板。
  • 更新后部署 Databricks 资产捆绑包。

有关 Databricks Git 文件夹中协作的更多最佳做法,请参阅 使用 Git 文件夹进行协作

局限性

使用 AI/BI 仪表板的源代码管理具有以下限制:

  • 单个 Git 文件夹中最多可以提交 100 个仪表板。 此限制可能会在公共预览版期间更改。
  • 基于 Git 的作业(例如引用 Git URL 而不是工作区资产 ID 或路径的作业)不适用于仪表板。
  • 仪表板序列化处理会生成很长的字符串,这使得在处理 pull 请求时读取和审查差异变得困难。
  • 仪表板文件格式会定期更改,以包含新字段和其他改进。 在公共预览版期间,这些更改可能会在 Git 中显示为未启动的差异。