分区和 DirectQuery 模式 (SSAS 表格)

本部分介绍如何在 DirectQuery 模型中使用分区。 有关表格模型中分区的更多常规信息,请参阅分区(SSAS 表格)。

有关如何更改使用的分区或查看有关分区的信息的说明,请参阅“更改 DirectQuery 分区”(SSAS 表格)。

在 DirectQuery 模式下使用分区

对于每个表,必须指定要用作 DirectQuery 数据源的单个分区。 如果有多个分区,则切换模型以启用 DirectQuery 模式时,默认情况下,表中创建的第一个分区将标记为 DirectQuery 分区。 稍后可以使用 SQL Server Data Tools 中的分区管理器(SSDT)来更改此设置。

为什么在 DirectQuery 模式下只允许单个分区?

在表格模型中(如 OLAP 模型中),表的分区由 SQL 查询定义。 创建分区定义的开发人员负责确保分区不重叠。 Analysis Services 不会检查记录是否属于一个或多个分区。

缓存表格模型中的分区的行为方式相同。 如果使用内存中模型,则在访问缓存时,会为每个分区评估 DAX 公式,并合并结果。 但是,当表格模型使用 DirectQuery 模式时,不可能评估多个分区、合并结果,并将结果转换为 SQL 语句以发送到关系数据存储。 这样做可能会导致性能的不可接受的损失,以及聚合结果时的潜在不准确之处。

因此,对于 DirectQuery 模式下应答的查询,服务器使用标记为 DirectQuery 访问的主分区(称为 DirectQuery 分区)的单个分区。 此分区定义中指定的 SQL 查询定义可用于在 DirectQuery 模式下应答查询的完整数据集。

如果不显式定义分区,引擎只会向整个关系数据源发出 SQL 查询,执行 DAX 公式规定的任何基于集的作,并返回查询结果。

如果表中有多个分区,并选择一个分区作为 DirectQuery 分区,则默认情况下,所有其他分区都标记为仅用于内存中使用。

缓存模型和 DirectQuery 模型中的分区

配置 DirectQuery 分区时,必须为分区指定处理选项。

DirectQuery 分区有两个处理选项。 若要设置此属性,请使用 SQL Server Data Tools(SSDT)或 SQL Server Management Studio 中的 分区管理器 ,然后选择 “处理选项” 属性。 下表列出了此属性的值,并描述了与连接字符串上的 DirectQueryUsage 属性结合使用时每个值的效果:

DirectQueryUsage 属性 Processing Option 属性 注释
DirectQuery(直接查询) 从不处理此分区 如果模型仅使用 DirectQuery,则永远不需要处理。

在混合模型中,可以将 DirectQuery 分区配置为永远不会被处理。 例如,如果要对非常大的数据集进行作,并且不希望将完整结果添加到缓存,则可以指定 DirectQuery 分区包括表中所有其他分区的结果联合,然后从不处理联合。 转到关系源的查询不会受到影响,针对缓存数据的查询将合并来自其他分区的数据
InMemory With DirectQuery 允许处理分区 如果模型使用的是混合模式,则应对内存中查询使用同一分区,对 DirectQuery 数据源使用查询。

另请参阅

分区 (SSAS 表格)