Delta Lake 表格式互操作性

在 Microsoft Fabric 中,Delta Lake 表格式是分析的标准。 Delta Lake 是一个开源存储层,它为大数据和分析工作负载带来了 ACID(原子性、一致性、隔离、持久性)事务。

所有 Fabric 体验都能够原生生成和使用 Delta Lake 表,提供统一的产品体验。 由一个计算引擎(如 Fabric 数据仓库或 Synapse Spark)生成的 Delta Lake 表可由任何其他引擎(如 Power BI)使用。 将数据引入Fabric时,默认情况下将数据存储为 Delta 表。 可以使用 OneLake 快捷方式轻松集成包含 Delta Lake 表的外部数据。

Delta Lake 功能和 Fabric 体验

为了实现互操作性,Delta Lake 功能和 Fabric 功能上的所有 Fabric 体验将保持一致。 某些体验只能写入 Delta Lake 表,而其他体验则可从中读取。

  • 写入器:数据仓库、Eventstream 和导出到 OneLake 的 Power BI 语义模型
  • 读取器:SQL 分析终结点和 Power BI 直接湖语义模型
  • 编写器和读取器:Fabric Spark 运行时、数据流、管道和 Kusto 查询语言 (KQL) 数据库

以下矩阵显示了主要 Delta Lake 功能及其在每个Fabric体验上的可用性。

Fabric 功能 列映射 删除向量 V-order 编写器 表优化和维护 Partitions
数据仓库 Delta Lake 导出 名称:是
ID:无
是的 是的 是的 读取:N/A (不适用)
写入:否
SQL 分析端点 名称:是
ID:无
是的 N/A (不适用) N/A (不适用) 阅读:是
写入:N/A(不适用)
Lakehouse 资源管理器和预览版 名称:是
ID:无
是的 N/A (不适用) 是的 阅读:是
写入:N/A(不适用)
Fabric Spark Runtime 2.0(预览版) 名称:是
ID:是
是的 是的 是的 阅读:是
写入:是
Fabric Spark 运行时 1.3 名称:是
ID:是
是的 是的 是的 阅读:是
写入:是
Fabric Spark 运行环境 1.2 名称:是
ID:是
是的 是的 是的 阅读:是
写入:是
Fabric Spark 运行环境 1.1 名称:是
ID:是
是的 是的 阅读:是
写入:是
Python笔记本 名称:否
ID:无
是的 阅读:是
写入:是
数据流第二代 名称:是
ID:无
是的 是的 阅读:是
写入:是
Pipelines 名称:否
ID:无
是的 阅读:是
写入:是,只允许覆盖
Power BI direct Lake 语义模型 名称:是
ID:是
是的 N/A (不适用) N/A (不适用) 阅读:是
写入:N/A(不适用)
将 Power BI 语义模型导出到 OneLake 名称:是
ID:无
N/A (不适用) 是的 读取:N/A (不适用)
写入:否
KQL 数据库 名称:是
ID:无
是的 1 阅读:是
写入:是
事件流 名称:否
ID:无
读取:N/A (不适用)
写入:是

1 KQL 数据库提供某些表维护功能,例如 保留。 在 OneLake 保留期结束时删除数据。 有关详细信息,请参阅一个逻辑副本

Fabric 功能 液体聚类分析 TIMESTAMP_NTZ Delta 数据读取器/写入器版本和默认表格特性 类型扩大
数据仓库 Delta Lake 导出 读取器:3
编写器:7
删除向量,
列映射(名称)
是的
SQL 分析端点 是的 N/A (不适用) 是的
Lakehouse 资源管理器和预览版 是的 是的 N/A (不适用) 是的
Fabric Spark Runtime 2.0(预览版) 是的 是的 读取器:3
编写器:7
删除向量
是的
Fabric Spark 运行时 1.3 是的 是的 读取器:1
作家:2
Fabric Spark 运行环境 1.2 是,只读 是的 读取器:1
作家:2
Fabric Spark 运行环境 1.1 是,只读 读取器:1
作家:2
Python笔记本 是的 读取器:1
作家:2
数据流第二代 是,只读 读取器:1
作家:2
是的
Pipelines 是,只读 读取器:1
作家:2
是:DI 数据管道(复制、查找活动)
否:DI CopyJob 管道
Power BI direct Lake 语义模型 是的 N/A (不适用) 是的
将 Power BI 语义模型导出到 OneLake 读取器:2
编写器:5
列映射(名称)
KQL 数据库 读取器:1
作者:1
事件流 读取器:1
作家:2

备注

  • 默认情况下,Fabric 不会写入列映射,除非有说明。 默认 Fabric 体验生成跨服务兼容的表。 由第三方服务生成的 Delta Lake 表可能具有不兼容的表功能。
  • 某些 Fabric 体验不提供表格优化和维护功能,例如 bin-compaction、V 顺序、删除向量合并(PURGE)和清理旧的未引用文件(VACUUM)。 若要使 Delta Lake 表保持最佳的分析效果,请按照 在 Lakehouse 中运行 Delta 表维护 中的技术,对使用这些工具引入的表进行操作。
  • 有关不同消费场景的表维护策略的跨负载的综合指南,请参阅 Microsoft Fabric 中的 Cross-workload 表维护和优化。

当前限制

目前,Fabric 不支持以下 Delta Lake 功能:

  • V2 检查点在所有体验中都不统一可用。 只有 Spark 笔记本和 Spark 作业才能使用 V2 检查点读取和写入表。 Lakehouse 和 SQL 分析端点无法正确列出 __delta_log 目录中包含 V2 检查点文件的表。
  • Delta Lake 3.x 统一。 此功能仅在数据工程 Spark 计算(笔记本、Spark 作业)中受支持。
  • 写入标识列(Azure Databricks 功能)。
  • Lakeflow Spark 声明性管道(Azure Databricks功能)。
  • Lakehouse 和 Spark 笔记本及作业之外的 Delta Lake 4.x 功能:排序规则、变体类型、协调提交等。 本文前面的特征矩阵中指出,支持类型扩大。
  • Python笔记本 Delta Lake 功能支持:Python笔记本使用 delta-rsdeltalake), DuckDB, 和 Polars而不是 Spark Delta Lake 读取器和编写器来读取和写入 Delta Lake 表。 Fabric当前固定的 deltalake 版本不支持某些 Delta Lake 表功能,包括删除向量、列映射、液体聚类写入和优化,以及类型扩展。 read_deltawrite_delta都使用deltalake作为后端,因此它们具有相同的限制。
  • Python笔记本 Delta Lake 解决方法和回退:DuckDB delta_scan 函数可以为某些表提供只读解决方法,deltalake无法读取,例如具有删除矢量的表。 如果 Delta Lake 功能不可用或无法在Python笔记本中工作,请改用 PySpark 笔记本。 PySpark 笔记本在 Fabric 中提供最全面的 Delta Lake 支持,并涵盖表中针对 Fabric Spark 运行时列出的 Delta Lake 场景。 有关详细信息,请参阅 Python 笔记本中的数据交互在 Microsoft Fabric 中选择 Python 和 PySpark 笔记本

表名中的特殊字符

Fabric支持特殊字符作为表名的一部分。 此功能允许使用 Unicode 字符在Fabric体验中撰写表名。

以下特殊字符要么被保留,要么与至少一种 Fabric 技术不兼容,因此不能用作表名的一部分:"(双引号)、'(单引号)、#%+:? 或 `(反引号)。