确定何时开发 DirectQuery 模型

已完成

DirectQuery 模型包含存储模式属性设置为“DirectQuery”的表,这些表属于同一个源组。

源组是与数据源相关的一组模型表。 分为两种类型:

  • 导入 – 表示所有导入存储模式表(包括计算表)。 一个模型中只能有一个导入源组。
  • DirectQuery – 表示与特定数据源相关的所有 DirectQuery 存储模式表。

注意

导入模型和 DirectQuery 模型仅包含一个源组。 如果有多个源组,则模型框架称为复合模型。 第 5 单元介绍了复合模型。

DirectQuery 模型的优势

开发 DirectQuery 模型可以获得多项优势。

为大型或快速变化的数据源建模

当源数据表现出数量和/或速度方面的特征时,非常适合选择 DirectQuery 模型作为框架。 由于 DirectQuery 表不需要刷新,因此它们很适合用于大型数据存储,例如数据仓库。 将整个数据仓库导入到模型是不切实际且低效的做法,甚至根本做不到。 当源数据快速变化而用户需要查看最新数据时,DirectQuery 模型可以提供准实时的查询结果。

当报表查询 DirectQuery 模型时,Power BI 会将这些查询传递到基础数据源。

关系图显示星型架构 DirectQuery 模型。当 Power B I 报表查询此模型时,Power B I 会将这些查询传递到基础数据源,在本例中为 Azure S Q L 数据库。

强制实施源 RLS

当源数据库强制实施行级安全性 (RLS) 时,DirectQuery 也很有用。 源数据库不会在 Power BI 模型中复制 RLS 规则,而是强制实施其规则。 此方法仅适用于某些关系数据库,它涉及到为数据集数据源设置单一登录。 有关详细信息,请参阅使用 DirectQuery 的 Azure SQL 数据库

数据主权限制

如果你的组织实施了限制数据离开所在地的安全策略,则无法导入数据。 可能适合使用连接到本地数据源的 DirectQuery 模型。 (也可以考虑安装 Power BI 报表服务器用于本地报告。)

创建专用数据集

通常,DirectQuery 模式支持关系数据库源。 这是因为,Power BI 必须将分析查询转换为数据源可以理解的本机查询。

但是,可以采用一种非常有效的替代做法。 你可以连接到 Power BI 数据集(或 Azure Analysis Services 模型),并将其转换为 DirectQuery 本地模型。 本地模型是描述一个模型与另一个模型的关系的相关术语。 在这种情况下,原始数据集是远程模型,新数据集是本地模型。 这些模型链接在一起,“链接”是用于描述相关模型的术语。 通过这种方式,最多可以链接三个模型。

这种链接模型的功能支持个性化和/或扩展远程模型的潜力。 可以执行的最简单操作是将对象(例如表或列)重命名,或者向本地模型添加度量。 还可以使用计算列或计算表来扩展模型,或者添加新的导入表或 DirectQuery 表。 但是,这些扩展会导致创建新的源组,这意味着,模型将变成复合模型。 第 5 单元介绍了该方案。

有关详细信息,请参阅使用适用于 Power BI 数据集和 Azure Analysis Services 的 DirectQuery

DirectQuery 模型限制

必须记住与 DirectQuery 模型相关的许多限制。 主要限制如下:

  • 并非所有数据源都受支持。 通常,仅支持主要关系数据库系统。 也支持 Power BI 数据集和 Azure Analysis Services 模型。

  • 并非可以执行所有 Power Query (M) 转换,因为这些查询必须转换为源系统可以理解的本机查询。 因此,举例来说,无法使用透视或逆透视转换。

  • 分析查询性能可能不佳,尤其是在源系统未优化(使用索引或具体化视图)或分析工作负载的资源不足的情况下。

  • 分析查询可能会影响源系统的性能。 这可能导致所有工作负载(包括 OLTP 操作)的体验变慢。

提升 DirectQuery 模型性能

如果你有理由开发 DirectQuery 模型,可以通过两种方式来缓解一些限制。

数据源优化

可以优化源数据库,以确保预期的分析查询工作负载性能良好。 具体而言,可以创建索引和具体化视图,并确保数据库为所有工作负载提供足够的资源。

提示

建议始终与数据库所有者协作。 他们知道 DirectQuery 模型可以在其数据库上放置的附加工作负载,这一点非常重要。

DirectQuery 用户定义的聚合表

可将用户定义的聚合表添加到 DirectQuery 模型。 用户定义的聚合表是隐藏的特殊模型表(来自用户、计算和 RLS)。 如果它们满足针对大型事实数据表执行的较高粒度的分析查询,则它们可以发挥最大的作用。 将聚合表设置为使用 DirectQuery 存储模式后,它可以查询数据源中的具体化视图。 还可以将聚合表设置为使用导入存储模式或启用自动聚合,第 4 单元将介绍这些选项。

有关详细信息,请参阅 Power BI Desktop 中的 DirectQuery 模型指南