选择存储模式

已完成

Microsoft Fabric中任何语义模型的第一个设计决策是数据流入模型的方式。 选择的存储模式会影响查询性能、数据新鲜度以及可用的Fabric功能。 在 Fabric 中,Direct Lake 是默认设置,对于大多数工作负荷,这是正确的选择。

Direct Lake 模式

Direct Lake 是Microsoft Fabric中创建的语义模型的默认存储模式。 与导入模式不同,Direct Lake 不会将数据复制到模型中。 与 DirectQuery 不同,它不会将查询转换为源 SQL。 相反,Direct Lake 将 Delta 表直接从 OneLake 读取到内存中,它将导入速度与 DirectQuery 的新鲜度相结合。

当用户打开 Direct Lake 语义模型支持的报表时,引擎会按需从 Delta Parquet 文件加载列数据。 无需像使用导入模式那样计划刷新。 基础 Delta 表更新时,模型反映这些更改。

Direct Lake 模型自动启用大型语义模型存储格式。 此设置将删除 10 GB 模型大小限制,是查询扩展和 XMLA 终结点读/写访问的先决条件。 无需手动为 Direct Lake 模型启用它。

Direct Lake 连接选项

Direct Lake 模型可以通过两个路径连接到数据:

  • OneLake 表:模型直接连接到湖仓一体或数据仓库中的 Delta 表。 这是最简单的路径,当数据位于单个Fabric数据存储中时,它非常有效。
  • SQL 分析终结点:模型通过湖仓或数据仓库的 SQL 终结点进行连接。 此路径允许访问 SQL 层中定义的视图、跨数据库查询和安全功能。

数据集简单而且仅存于一个位置时,请选择 OneLake 表。 如果需要在 SQL 中定义的视图、跨源联接或行级别安全性,请选择 SQL 分析终结点。

回退行为

某些操作可能导致 Direct Lake 模型回退到 DirectQuery 模式。 复杂的 DAX 计算、超出可用内存的查询或某些不受支持的操作会触发此回退。 发生回退时,查询针对 SQL 分析终结点运行,而不是直接读取 Delta 文件。

可以在语义模型设置中配置回退行为:

  • 允许回退:无法在 Direct Lake 模式下运行的查询自动回退到 DirectQuery。 用户获得结果,但性能可能会降低。
  • 禁止回退:无法在 Direct Lake 模式下运行的查询返回错误。 此选项强制实施一致的性能,但要求所有查询都保留在 Direct Lake 功能中。

对于大多数生产工作负荷,首先允许降级并监控哪些查询会触发它。 然后优化这些查询或数据结构,以减少一段时间内的回退频率。

导入模式

导入模式将数据复制到语义模型中,并将其存储为压缩的内存中格式。 查询针对本地副本运行,这使得导入是查询性能最快的存储模式。 然而,数据的时效性仅取决于上一次刷新的时间。

在以下情况下,导入模式是正确的选择:

  • 您的数据源位于 Fabric 之外(如本地数据库、第三方 API、平面文件)。
  • 查询性能是首要任务,不需要近乎实时的新鲜度。
  • 你需要 Direct Lake 中尚不支持的功能。

小窍门

使用导入模式时,连接到视图而不是原始表,仅包含必要的列,并使用适当的数据类型来减小模型大小。 详细了解 如何减少加载到导入模型中的数据

DirectQuery 模式

DirectQuery 在查询时直接向数据源发送查询。 模型中不存储任何数据,这使得 DirectQuery 适用于实时数据方案和无法导入的非常大的数据集。

其代价是性能。 每个报表交互都会针对源系统生成查询。 DirectQuery 在以下情况下最有效:

  • 需要实时数据,甚至无法接受短暂的刷新延迟。
  • 源数据卷太大,无法导入,数据源不在Fabric。
  • 治理要求要求要求数据保留在源中。

小窍门

有关详细信息,请参阅 DirectQuery 模型指南

复合模式

复合模式在单个模型中合并存储模式。 某些表使用 Import,而另一些表则使用 DirectQuery 或 Direct Lake。 这为不同表具有不同性能和新鲜度需求的方案提供了灵活性。

例如,大型事实数据表可能保留在 Direct Lake 中,而来自外部源的小型引用表使用 Import。 复合模式还支持来自不同数据源的表之间的多对多关系。

在以下情况下使用复合模式:

  • 您需要从同一模型中的 Fabric 和非 Fabric 源获取数据。
  • 某些表需要实时数据,而另一些表则受益于缓存的性能。
  • 需要将 Direct Lake 表与导入表合并,以便进行跨源分析。

选择正确的存储模式

下表总结了何时选择每个模式:

模式 数据位置 查询速度 数据新鲜度 最适用于
Direct Lake OneLake(Delta 表) 快速 准实时 Fabric原生工作负载(默认值)
进口 模型内缓存 最快 依赖刷新 非 Fabric 源,最大性能
DirectQuery 源系统 取决于源系统 准实时 实时要求,非常大的外部数据
复合 Mixed 多种多样 Mixed 跨源方案,混合要求

存储模式还会影响 AI 消耗。 当Copilot或数据代理查询语义模型时,它们会根据模型当前反映的任何数据返回答案。 Direct Lake 的近实时新鲜度意味着 AI 查询返回当前结果,而无需等待计划的刷新。 对于为人类用户和 AI 提供服务的模型,存储模式选择直接影响这两种体验的质量。

在Fabric中,从 Direct Lake 开始。 仅在特定方案需要时才移动到另一个模式。