在 DirectQuery 模型中定义分区
适用于: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
本文介绍如何在 DirectQuery 模型中使用分区。 有关表格模型中分区的更多常规信息,请参阅 表格模型中的分区。
注意
虽然一个表可以有多个分区,但在 DirectQuery 模式下,只能指定其中一个分区用于查询执行。 一个分区要求可适用于所有兼容性级别的 DirectQuery 模型。
在 DirectQuery 模式下使用分区
对于每个表,您必须指定要用作 DirectQuery 数据源的单个分区。 如果存在多个分区,则在您切换模型以便启用 DirectQuery 模式时,默认情况下,在该表中已创建的第一个分区将标记为 DirectQuery 分区。 稍后可以使用 Visual Studio 中表格模型设计器中的分区管理器来更改此设置。
为什么在 DirectQuery 模式下仅允许单个分区? 在 (的表格模型中,如 OLAP 模型中) ,表的分区由 PowerQuery M 查询或 SQL 查询定义。 创建分区定义的开发人员负责确保分区不重叠。 Analysis Services 不检查记录是属于一个分区还是多个分区。
缓存表格模型中分区的行为方式相同。 如果您在使用内存中模型,则在访问缓存时,将对每个分区计算 DAX 公式,并且合并结果。 但表格模型使用 DirectQuery 模式时,无法计算多个分区、合并结果以及将其转换到 SQL 语句中以便发送到关系数据存储区。 这样做可能会导致无法接受的性能损失,以及在聚合结果时潜在的不精确性。
因此,对于在 DirectQuery 模式下响应的查询,服务器使用已标记为 DirectQuery 访问的主分区的单个分区,称为 DirectQuery 分区。 此分区的定义中指定的 SQL 查询定义可用于在 DirectQuery 模式下响应查询的完整数据集。
如果未显式定义分区,则引擎只是向整个关系数据源发出 SQL 查询,执行 DAX 公式规定的任何基于集的操作,并且返回查询结果。
更改 DirectQuery 分区
因为在一个表中只能有一个分区可以指定为 DirectQuery 分区,所以,默认情况下,Analysis Services 使用在该表中创建的第一个分区。 在模型项目创作期间,可以使用分区管理器更改 DirectQuery 分区。 对于已部署的模型,可以使用 SQL Server Management Studio更改 DirectQuery 分区。
更改表格模型项目的 DirectQuery 分区
在 Visual Studio 的模型设计器中,单击包含已分区表的表 (选项卡) 。
单击“ 扩展>表>分区”。
在“分区管理器”中,作为当前直接查询分区的分区由分区名称上的前缀 (DirectQuery) 指示。
从 “分区” 列表中选择一个不同的分区,然后单击 “设置为 DirectQuery”。 在选择当前 DirectQuery 分区时 “设置为 DirectQuery” 按钮未启用,并且在尚未为直接查询模式启用模型时不可见。
更改已部署表格模型的 DirectQuery 分区
在 SQL Server Management Studio 中,在 对象资源管理器 中打开模型数据库。
展开“表”节点,右键单击已分区表,然后选择“分区”。
为用于 DirectQuery 模式而指定的分区在分区名称上具有前缀 (DirectQuery)。
若要更改为其他分区,请单击 “直接查询” 工具栏图标以便打开 “设置 DirectQuery 分区” 对话框。 在尚未为直接查询启用的模型上,DirectQuery 工具栏图标不可用。
从 “分区名称” 下拉列表中选择一个不同的分区,然后根据需要更改该分区上的处理选项。