Lakehouse 与 Microsoft Fabric 中的生命周期管理集成。 可以使用部署管道将 lakehouse 连接到 git 存储库进行版本控制,并在开发、测试和生产工作区之间部署它。 仅跟踪元数据——git 和部署操作永远不会覆盖表或文件中的数据。
跟踪的内容是什么?
下表总结了在连接至 git 的工作区和部署管道中跟踪的 lakehouse 项目和子项目。
| 项目 / 子项目 | Git | 部署管道 | 版本状态 | 注释 |
|---|---|---|---|---|
| Lakehouse 元数据(显示名称、说明、逻辑 GUID) | ✅ 跟踪 | ✅ 跟踪 | GA | 跨工作区源代码管理标识符 |
| OneLake 快捷方式元数据 | ✅ 跟踪 | ✅ 跟踪 | GA | 存储在 shortcuts.metadata.json |
| 外部快捷方式:ADLS Gen2、S3、Dataverse、Google Cloud Storage、SharePoint、Azure Blob 存储、OneDrive | ✅ 跟踪 | ✅ 跨阶段同步 | GA | 仅定义。 相同的目标会应用在所有阶段,除非通过变量库进行重新映射。 |
| 内部 OneLake 快捷方式 | ✅ 跟踪 | ✅ 跨阶段自动重新映射 | GA | 仅定义。 需要工作区中的有效的目标 |
| OneLake 安全数据访问角色 (DAR) 元数据 | ✅ 跟踪 | ✅ 跟踪 | Preview | 存储在 data-access-roles.json |
| 表(增量和非增量) | ❌ 未跟踪 | ❌ 未删除 | 不支持 | 在操作期间始终保留数据 |
| Spark 视图 | ❌ 未跟踪 | ❌ 未删除 | 不支持 | 在操作期间始终保留数据 |
| “文件”部分中的文件夹 | ❌ 未跟踪 | ❌ 未删除 | 不支持 | 在操作期间始终保留数据 |
选择要跟踪的对象类型
可以选择 git 和部署管道中跟踪的对象类型。 这为团队提供了两个好处:
- 灵活性 - 根据工作流选择要跟踪的对象类型。 某些团队通过外部工具或脚本协调某些对象类型。 某些对象类型可能与每个部署阶段无关。
- 逐步采用 - 可以引入新的对象类型以增量方式跟踪,因此可以在选择加入之前调整现有工作流和自动化。
打开 Lakehouse 设置 并启用或禁用要跟踪的对象类型。
选中或清除每个对象类型的复选框,以控制它是否被跟踪:
- 选择 — 选择对象类型和同步到 git 时,其当前元数据将序列化并存储在 git 中。 将来的更改会跨部署管道阶段进行跟踪和同步。
- 清除 — 清除对象类型时,将从 git 中删除其元数据。 将来的更改不再被跟踪或同步。
新湖仓和现有湖仓的默认设置:
- 默认情况下,新的 lakehouse 会默认选择所有一般可用性(GA)对象类型。 默认情况下,不会选择预览对象类型。
- 现有 lakehouse 保留其当前跟踪状态,除非你更改它。
跟踪配置存储在 alm.settings.json git 的 lakehouse 文件夹中。 可以直接在 git 存储库中编辑此文件,并将更改应用回工作区。
Git 集成
将工作区连接到 git 时,lakehouse 元数据将序列化为 JSON 表示形式。 以下元数据会被跟踪:
- 显示名称
- 说明
- 逻辑 GUID (源代码管理自动生成的跨工作区标识符)
- SQL 分析终结点元数据
- OneLake 快捷方式元数据(请参阅 OneLake 快捷方式)
多个工作区对象可以引用 lakehouse,包括 数据流、管道、Spark 作业定义、笔记本、和语义模型。 这些引用在 git 操作中维护。 在 git 中重命名 lakehouse 也会重命名对应的 SQL 分析端点。
重要
Git 中不会对“文件”部分中的表(包括 Delta 表和非 Delta 表)和文件夹进行跟踪或版本控制。 这些项中的数据始终保留在 git操作期间。
部署管道
Microsoft Fabric 部署管道中支持 Lakehouse,这些管道使得开发、测试和生产工作区的环境分离成为可能。
部署管道功能:
- 默认行为 —— 如果未配置依赖项映射,则会在目标工作区中创建具有相同名称的新空 Lakehouse。 笔记本和 Spark 作业定义将重新映射以引用新的湖仓。
- 自定义映射 - 如果湖仓依赖项映射到不同的现有湖仓(例如上游湖仓),则仍会创建一个具有相同名称的新空湖仓,但笔记本和 Spark作业定义引用改为指向已映射的湖仓。
- SQL 分析终结点和语义模型作为 Lakehouse 部署的一部分进行预配。
- Lakehouse 名称变更在各工作区之间同步。
OneLake 快捷方式
表和文件部分中的 OneLake 快捷方式定义存储在 shortcuts.metadata.json git 的 lakehouse 文件夹中。 自动跟踪快捷方式的添加、删除和更新。 可以在 Fabric 门户中进行更改,也可以直接编辑 shortcuts.metadata.json 文件。
git 集成中的快捷方式
具有内部目标的快捷方式(OneLake 快捷方式)在 git 同步期间自动更新。要使快捷方式有效,目标必须存在于工作区中。 如果 lakehouse 表部分中的快捷方式的目标无效,则快捷方式将移动到 “未识别 ”部分,直到解析引用。
重要
在shortcuts.metadata.json中直接编辑快捷方式属性时请谨慎。 对属性(尤其是 GUID)的错误更改会使更新应用回工作区时快捷方式无效。 git 更新会替代工作区中的快捷方式状态 , 所有快捷方式都基于 git 中的传入状态创建、更新或删除。
部署管道中的快捷路径
快捷方式定义跨部署管道阶段同步:
- 具有外部目标的快捷方式(ADLS Gen2、S3 和其他)在部署后在所有阶段保留相同的目标。
- 同一工作区中具有内部目标的快捷方式(OneLake 快捷方式)会自动跨阶段重新映射。 不会自动创建目标表、文件夹和文件 — 部署后必须在目标工作区中创建它们。
- 如果快捷方式需要指向不同阶段的不同位置(例如,开发中的 Amazon S3 文件夹和生产中的 ADLS Gen2 文件夹),请使用快捷方式定义中的变量。 有关详细信息,请参阅什么是变量库?(预览版) 或者,在 Fabric 门户中或使用 OneLake API 在部署后手动更新快捷方式定义。
重要
部署将替代目标工作区中的快捷方式状态。 目标工作区的 Lakehouse 中的所有快捷方式都会根据源 Lakehouse 进行更新或删除,并创建新的快捷方式。 始终选择“ 查看更改 ”,了解部署前的更改。
OneLake 安全数据访问角色 (DAR)
数据访问角色 (DAR) 定义存储在 data-access-roles.json git 的 lakehouse 文件夹中。 自动跟踪 DAR 的添加、删除和更新。 还可以直接在存储库中编辑此文件,并将更改应用回工作区。
重要
只有具有管理员或成员工作区角色的用户才能将数据访问角色定义同步到 git 或部署管道。
当源工作区启用了数据访问角色跟踪和选择加入时,同步行为取决于目标工作区:
| 目标工作区 | Git 集成 | 部署管道 |
|---|---|---|
| 新 (没有湖屋) | ✅ 自动启用 DAR 跟踪 | ✅ 自动启用 DAR 跟踪 |
| DAR 跟踪已被禁用 | ✅ 启用 DAR 跟踪和选择加入功能已启用 | ✅ 启用 DAR 跟踪和选择加入功能已启用 |
| 已启用 DAR,未启用自愿加入 | ⚠️ 提示启用选择性加入(覆盖或取消) | ❌ 错误 |
| DAR + 选择加入已启用 | ✅ 正常同步 | ✅ 正常同步 |
注释
如果部署管道或 updateDefinition API 调用返回错误代码 LakehouseImportUserActionNeededForObjectOverwrite,则目标工作区中的 lakehouse 已启用 DAR,但未启用 ALM 跟踪。 当 DAR 跟踪从禁用状态变为启用状态时,此安全措施可防止 CI/CD 覆盖现有的 OneLake 安全角色。 若要修复此错误,请在目标工作区的 Lakehouse 手动启用 DAR 跟踪功能并选择加入,调和角色,然后重试部署。 对于自动预配,请在创建 Lakehouse 时启用 DAR 跟踪和选择加入。
重要
出于安全原因,不会在 git 中跟踪Microsoft Entra 成员 ID。 在 git 和部署管道操作期间,仅当角色名称完全匹配时,工作区之间才会保留成员。 重命名角色时,需谨慎,特别是这些角色已分配有成员。