SQL Server Analysis Services 中的新增功能

适用于: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

本文汇总了最新版本SQL Server Analysis Services (SSAS) 中的新功能、改进、弃用和停用的功能以及行为和中断性变更。

SQL Server 2022 Analysis Services

累积更新 1 (CU1)

加密升级

此更新包括对架构写入操作加密算法的增强。 此增强功能可能需要升级表格和多维模型数据库,以确保正确加密。 若要了解详细信息,请参阅 升级加密

正式发布 (GA)

水平融合

此版本引入了水平融合,这是一种查询执行计划优化,旨在减少生成和返回结果所需的数据源查询数。 多个较小的数据源查询会融合到较大的数据源查询中。 更少的数据源查询意味着对大型数据源的往返次数和成本更低的扫描,这会导致 DAX 性能大幅提升,并降低数据源的处理需求。 使用水平融合可以更快地运行 DAX 查询,尤其是在 DirectQuery 模式下。 此外,可伸缩性也会增加。

DirectQuery 的并行执行计划

这种改进使 Analysis Services 引擎能够分析针对 DirectQuery 数据源的 DAX 查询,并确定独立的存储引擎操作。 然后,引擎可以针对数据源并行执行这些操作。 通过并行执行操作,Analysis Services 引擎可以通过利用大型数据源提供的可伸缩性来提高查询性能。 若要确保查询处理不会使数据源负担过重,请使用 MaxParallelism 属性设置指定可用于并行操作的固定线程数。

支持 Power BI DirectQuery 语义模型

此版本引入了对 Power BI 模型的支持,支持 DirectQuery 连接到 SQL Server 2022 Analysis Services 模型。 使用 2022 年 5 月版及更高版本的 Power BI Desktop 的数据建模者和报表作者现在可以合并 Power BI 模型(Azure Analysis Services,现在为 SSAS 2022)中的其他导入数据和 DirectQuery 数据。

若要了解详细信息,请参阅 将 DirectQuery 用于语义模型和 Analysis Services |Power BI 文档

MDX 查询性能

MDX Fusion 首先在 Power BI 中引入,现已在 SSAS 2022 中引入,包括公式引擎 (FE) 优化,从而减少存储引擎 (SE) 每个 MDX 查询的查询数。 使用多维表达式 (MDX) 查询模型/数据集数据(如 Microsoft Excel)的客户端应用程序将看到改进的查询性能。 常见的 MDX 查询模式现在需要的 SE 查询更少,而以前需要大量的 SE 查询才能支持不同的粒度。 减少 SE 查询意味着对大型模型的扫描成本更低,这可显著提高性能,尤其是在直接查询模式下连接到表格模型时。

若要了解详细信息,请参阅 宣布在 Power BI 中改进 MDX 查询性能 |Microsoft Power BI 博客

资源调控

此版本包括改进的 QueryMemoryLimit 服务器内存属性和 DbpropMsmdRequestMemoryLimit 连接字符串 属性的准确性。

QueryMemoryLimit 服务器内存属性在 SSAS 2019 中首次引入,仅适用于在查询处理期间创建中间 DAX 查询结果的内存假脱机。 现在,在 SSAS 2022 中,它也适用于 MDX 查询,有效地涵盖所有查询。 可以更好地控制导致重大具体化过程的昂贵查询。 如果查询达到指定的限制,引擎将取消查询,并将错误返回给调用方,从而减少对其他并发用户的影响。

客户端应用程序可以通过指定 DbpropMsmdRequestMemoryLimit 连接字符串 属性进一步减少每个查询允许的内存。 此属性以千字节为单位指定,将替代连接的 QueryMemoryLimit 服务器内存属性值。

查询交错 - 快速取消的短查询偏差

此版本引入了一个新值,该值为 Threadpool\SchedulingBehavior 属性设置指定 快速取消的短查询偏差 。 此属性设置可缩短高并发方案中的用户查询响应时间。 若要了解详细信息,请参阅 查询交错 - 配置

表格模型 1600 兼容性级别

此版本引入了表格模型的 1600 兼容级别 。 1600 兼容级别与 Power BI 和 Azure Analysis Services 中的最新功能相吻合。

SSAS 2022 中已弃用的功能

此版本未宣布已 弃用 的功能。

SSAS 2022 中已停用的功能

此版本中 不再提供 以下功能:

模式/类别 功能
表格 1100 和 1103 兼容级别
多维 数据挖掘
Power Pivot 模式 Power Pivot for SharePoint

SSAS 2022 中的重大更改

表格模型 1100 和 1103 兼容级别在此版本中已停用。 若要防止 发生中断性变更,请在将早期 SSAS 版本升级到 SSAS 2022 之前,将模型升级到 1200 兼容级别。

SSAS 2022 中的行为更改

此版本中没有 行为更改

SQL Server 2019 Analysis Services

SQL Server 2019 Analysis Services CU 5

SQL Server Analysis Services累积更新包含在SQL Server累积更新中。 若要详细了解并下载最新的累积更新,请参阅SQL Server 2019 年最新累积更新。 累积更新 KB 页汇总了所有SQL Server功能(包括 SSAS)的已知问题、改进和修补程序。 此处介绍了有关 SSAS 的主要功能更新的其他详细信息。

适用于多维模型的 SuperDAX (SuperDAXMD)

借助 CU5,基于 DAX 的客户端现在可以针对多维模型使用 SuperDAX 函数和查询模式,从而在查询模型数据时提高性能。 SuperDAX 首先使用 Power BI 和 SQL Server Analysis Services 2016 为表格模型引入了 DAX 查询优化。 SuperDAXMD 现在为多维模型带来了这些改进。

Power BI 博客上的单独公告重点介绍了 Power BI 用户如何通过下载最新版本的 Power BI Desktop 从此多维模型性能改进中获益。 Power BI 服务中的现有交互式报表无需任何其他步骤即可受益,因为 Power BI 自动生成优化的 SuperDAX 查询。 Power BI 自动检测与支持 SuperDAX 的多维模型的连接,并使用已针对表格模型使用的相同优化 DAX 函数和查询模式。 虽然 Power BI 可以自动切换到 SuperDAXMD,但在你自己的商业智能解决方案中,你可能必须手动优化 DAX 查询模式。

优化的查询模式应使用 SUMMARIZECOLUMNS 函数替换效率较低的标准 SUMMARIZE 函数。 使用 DAX 变量 VAR 在定义位置只计算表达式一次,然后在任何其他 DAX 表达式中重复使用结果,而无需再次执行计算。 其他可能不太常见的 SuperDAX 函数包括 SUBSTITUTEWITHINDEXADDMISSINGITEMS 以及 NATURALLEFTOUTERJOINNATURALINNERJOINISONORAFTERGROUPBYSELECTCOLUMNSUNION 也是 SuperDAX 函数。

若要详细了解 DAX 如何处理多维模型以及要注意的重要模式和约束,请务必查看 多维模型的 DAX

SQL Server 2019 Analysis Services GA (正式发布)

表格模型兼容性级别

此版本引入了表格模型的 1500 兼容级别

查询交叉

查询交叉是一种表格模型系统配置,可在高并发情况下改善用户查询响应时间。 具有 短查询偏差的查询 交错允许并发查询共享 CPU 资源。 要了解详细信息,请参阅查询交叉

表格模型中的计算组

通过将常见度量值表达式分组为“计算项”,计算组可显著减少冗余度量值的数量 。 计算组在报告客户端中作为具有单个列的表显示。 列中的每个值都表示一个可应用于任何度量值的可重用计算或计算项。 计算组可以拥有任意数量的计算项。 每个计算项由 DAX 表达式定义。 若要了解详细信息,请参阅 计算组

Power BI 缓存刷新的调控设置

SSAS 2019 及更高版本中现在支持 ClientCacheRefreshPolicy 属性设置。 此属性设置已可用于Azure Analysis Services。 Power BI 服务缓存仪表板磁贴数据和报告数据以用于初始加载Live Connect报表,导致提交到引擎的缓存查询过多,并在极端情况下导致服务器过载。 ClientCacheRefreshPolicy 属性允许你在服务器级别重写此行为。 有关详细信息,请参阅常规属性

联机附加

使用此功能,能够以联机操作的形式附加表格模型。 联机附加可用于本地查询横向扩展环境中只读副本的同步。 若要执行联机附加操作,请使用 Attach XMLA 命令的 AllowOverwrite 选项。

AllowOverwrite

此操作可能需要“使模型内存翻倍”,以便在加载新版本的同时使旧版本保持联机

典型使用模式如下所示:

  1. DB1(版本 1)已附加在只读服务器 B 上。

  2. 在写入服务器 A 上处理 DB1(版本 2)。

  3. DB1(版本 2)分离,并置于服务器 B 可访问的位置(通过共享位置或使用 robocopy 等)。

  4. <AllowOverwrite=True 的 Attach> 命令在服务器 B 上执行,新位置为 DB1 (版本 2) 。

如果没有此功能,管理员需要先分离数据库,然后附加新版本的数据库。 这会导致用户在无法使用数据库时出现故障时间,并导致针对该数据库的查询失败。

指定此新标志时,将在同一事务中以原子方式删除数据库的版本 1,且不会出现故障时间。 但是,这需要同时将两个数据库加载到内存中。

表格模型中的多对多关系

此改进允许两个列不唯一的表之间的多对多关系。 可以在维度和事实表之间以高于维度的键列的粒度定义关系。 这样避免了对维度表进行标准化并且可以改善用户体验,因为生成的模型具有较少带有逻辑分组列的表。

多对多关系要求模型在 1500 和更高兼容级别。 可以使用 Visual Studio 2019 和 Analysis Services 项目 VSIX update 2.9.2 及更高版本、表格对象模型 (TOM) API、表格模型脚本语言 (TMSL) 和开源表格编辑器工具来创建多对多关系。

资源治理的内存设置

以下属性设置提供了改进的资源治理:

  • Memory\QueryMemoryLimit - 此内存属性可用于限制由提交给模型的 DAX 查询构建的内存假脱机。
  • DbpropMsmdRequestMemoryLimit - 此 XMLA 属性可用于替代适用于连接的 Memory\QueryMemoryLimit 服务器属性值。
  • OLAP\Query\RowsetSerializationLimit - 此服务器属性限制行集中返回的行数,从而保护服务器资源免受大量数据导出使用的影响。 此属性适用于 DAX 和 MDX 查询。

可以使用最新版本的 SQL Server Management Studio (SSMS) 设置这些属性。 这些设置已可用于Azure Analysis Services。

SSAS 2019 中弃用的功能

此版本未宣布任何 已弃用 的功能。

SSAS 2019 中已停用的功能

此版本未宣布停止 使用 的功能。

SSAS 2019 中的中断性变更

此版本中没有 重大更改

SSAS 2019 中的行为更改

此版本中没有 行为更改

SQL Server 2017 Analysis Services

SQL Server 2017 Analysis Services 看到了自 2012 SQL Server 以来最重要的一些增强功能。 此版本基于 2012 SQL Server 2012 Analysis Services) 中首次引入的表格模式 (的成功,使表格模型比以往更加强大。

多维模式和 Power Pivot for SharePoint 模式是许多 Analysis Services 部署的主装。 在 Analysis Services 产品生命周期中,这些模式已成熟。 此版本中的任一模式都没有新功能。 但是,包括 bug 修复和性能改进。

此处所述的功能包含在 SQL Server 2017 Analysis Services 中。 但为了利用它们,还必须将最新版本的 Visual Studio 与 Analysis Services 项目配合使用,并SQL Server Management Studio (SSMS) 。 Analysis Services 项目和 SSMS 每月更新一次,新增和改进的功能通常与 SQL Server 中的新功能一致。

虽然了解所有新功能很重要,但了解此版本和未来版本中已弃用和停用的内容也很重要。 若要了解详细信息,请参阅 SSAS 2017 中已弃用的功能

让我们看一下此版本中的一些关键新功能。

针对表格模型的 1400 兼容级别

若要利用此处所述的许多新特性和功能,必须将新的或现有的表格模型设置为或升级到 1400 兼容级别。 1400 兼容级别的模型不能部署到 SQL Server 2016 SP1 或更早版本,也不能降级到较低的兼容性级别。 若要了解详细信息,请参阅 Analysis Services 表格模型的兼容性级别

在 Visual Studio 中,可以在创建新的表格模型项目时选择新的 1400 兼容级别。

AS_NewTabular1400Project

若要升级 Visual Studio 中的现有表格模型,请在 解决方案资源管理器 中右键单击 Model.bim,然后在“属性”中将“兼容级别”属性设置为 SQL Server 2017 (1400)

AS_Model_Properties

请务必记住,一旦将现有模型升级到 1400,就不能降级。 请务必保留 1200 模型数据库的备份。

新式获取数据体验

当涉及到将数据从数据源导入表格模型中时,SSDT 为 1400 兼容级别的模型引入了新式 获取数据 体验。 这一新功能基于 Power BI Desktop 和 Microsoft Excel 2016 中类似的功能。 新式获取数据体验通过使用“获取数据”查询生成器和 M 表达式提供巨大的数据转换和数据混合功能。

新式获取数据体验为各种数据源提供支持。 今后,更新将包括对更多内容的支持。

AS_Get_Data_in_SSDT

功能强大且直观的用户界面使选择数据和数据转换/混合功能变得比以往更容易。

高级混合

新式获取数据体验和 Mashup 功能不适用于从 1200 兼容级别升级到 1400 的现有表格模型。 新体验仅适用于在 1400 兼容级别创建的新模型。

编码提示

此版本引入了编码提示,这是一项高级功能,用于优化大型内存中表格模型的处理 (数据刷新) 。 若要更好地了解编码,请参阅 SQL Server 2012 Analysis Services 中表格模型的性能优化白皮书,以更好地了解编码。

  • 值编码为通常仅用于聚合的列提供更好的查询性能。

  • 哈希编码是按列分组的首选 (维度表值) 和外键。 字符串列始终进行哈希编码。

数值列可以使用这两种编码方法之一。 当 Analysis Services 开始处理表时,如果表为空 (带或不带分区) ,或者正在执行全表处理操作,则会为每个数值列采样值,以确定是应用值还是哈希编码。 默认情况下,当列中非重复值的样本足够大时,会选择值编码-否则哈希编码通常提供更好的压缩。 Analysis Services 可以在基于有关数据分布的进一步信息对列进行部分处理后更改编码方法,并重新启动编码过程;但是,这会增加处理时间,并且效率低下。 性能优化白皮书更详细地讨论了重新编码,并介绍了如何使用SQL Server Profiler对其进行检测。

编码提示允许建模者根据数据分析和/或响应重新编码跟踪事件之前的知识,指定编码方法的首选项。 由于哈希编码列的聚合速度比值编码列慢,因此可将值编码指定为此类列的提示。 不保证应用首选项。 它是一个提示,而不是设置。 若要指定编码提示,请在列上设置 EncodingHint 属性。 可能的值为“Default”、“Value”和“Hash”。 Model.bim 文件中的以下基于 JSON 的元数据片段指定“销售额”列的值编码。

{
    "name": "Sales Amount",
    "dataType": "decimal",
    "sourceColumn": "SalesAmount",
    "formatString": "\\$#,0.00;(\\$#,0.00);\\$#,0.00",
    "sourceProviderType": "Currency",
    "encodingHint": "Value"
}

不规则层次结构

在表格模型中,可以构建父子层次结构模型。 具有不同级别数的层次结构通常称为不规则层次结构。 默认情况下,显示不规则层次结构时,用空白表示低于最低子级的级别。 下面是组织结构图中不规则层次结构的示例:

AS_Ragged_Hierarchy

此版本引入了“隐藏成员” 属性。 可以将层次结构的“隐藏成员” 属性设置为“隐藏空成员”

AS_Hide_Blank_Members

注意

模型中的空成员表示为 DAX 空值,而非空字符串。

设置为“隐藏空成员” 并部署模型后,会在报告客户端(如 Excel)中显示易于阅读的层次结构版本。

AS_Non_Ragged_Hierarchy

详细信息行

现在可以定义提供度量值的自定义行集。 详细信息行类似于多维模型中的默认钻取操作。 同聚合级别相比,这允许最终用户查看更为详细的信息。

以下数据透视表显示 Adventure Works 示例表格模型中的年度 Internet 总销售。 可以从度量值中右键单击含有聚合值的单元格,然后单击“显示详细信息” ,查看详细信息行。

AS_Show_Details

默认情况下,显示 Internet 销售表中的关联数据。 对用户而言,此限制行为通常没有意义,因为表可能没有必要的列来显示有用信息(如客户名称和订单信息)。 使用详细信息行,可以指定度量值的“详细信息行表达式” 属性。

度量值的“详细信息行表达式”属性

度量值的“详细信息行表达式” 属性让模型作者能够自定义返回到最终用户的列和行。

AS_Detail_Rows_Expression_Property

SELECTCOLUMNS DAX 函数通常用于详细信息行表达式。 以下示例定义为示例 Adventure Works 表格模型中 Internet 销售表的行返回的列:

SELECTCOLUMNS(
    'Internet Sales',
    "Customer First Name", RELATED( Customer[Last Name]),
    "Customer Last Name", RELATED( Customer[First Name]),
    "Order Date", 'Internet Sales'[Order Date],
    "Internet Total Sales", [Internet Total Sales]
)

定义属性并部署模型后,用户选择“显示详细信息” 时,会返回自定义行集。 它自动遵循所选单元格的筛选器上下文。 在此示例中,仅显示 2010 值的行:

AS_Detail_Rows

表的默认详细信息行表达式属性

除了度量值,表还具有一个用于定义详细信息行表达式的属性。 “默认详细信息行表达式” 属性是表中所有度量值的默认值。 未定义自己的表达式的度量值从表继承表达式,并显示为表定义的行集。 这允许重复使用表达式,添加到表中的新度量值随后会自动继承表达式。

AS_Default_Detail_Rows_Expression

DETAILROWS DAX 函数

此版本包括新的 DETAILROWS DAX 函数,该函数返回详细信息行表达式定义的行集。 其工作原理类似于 MDX 中的 DRILLTHROUGH 语句,此语句也兼容表格模型中定义的详细信息行表达式。

以下 DAX 查询返回由度量值或其表的详细信息行表达式定义的行集。 如果未定义任何表达式,会返回 Internet 销售表的数据,因为 Internet 销售表是包含度量值的表。

EVALUATE DETAILROWS([Internet Total Sales])

对象级安全性

此版本引入了表和列 的对象级安全性 。 除了限制对表和列数据的访问外,还可以保护敏感的表和列名称。 这有助于防止恶意用户发现此类表的存在。

必须使用基于 JSON 的元数据、表格模型脚本语言 (TMSL) 或表格对象模型 (TOM) 设置对象级别安全性。

例如,通过将“TablePermission” 类的“MetadataPermission” 属性设置为“无” ,以下代码可帮助保护示例 Adventure Works 表格模型中的产品表。

//Find the Users role in Adventure Works and secure the Product table
ModelRole role = db.Model.Roles.Find("Users");
Table productTable = db.Model.Tables.Find("Product");
if (role != null && productTable != null)
{
    TablePermission tablePermission;
    if (role.TablePermissions.Contains(productTable.Name))
    {
        tablePermission = role.TablePermissions[productTable.Name];
    }
    else
    {
        tablePermission = new TablePermission();
        role.TablePermissions.Add(tablePermission);
        tablePermission.Table = productTable;
    }
    tablePermission.MetadataPermission = MetadataPermission.None;
}
db.Update(UpdateOptions.ExpandFull);

动态管理视图 (DMV)

DMV 是SQL Server Profiler中的查询,可返回有关本地服务器操作和服务器运行状况的信息。 此版本包括对 1200 和 1400 兼容级别的表格模型的 动态管理视图 (DMV) 的改进。

DISCOVER_CALC_DEPENDENCY现在适用于表格 1200 及更高版本的模型。 表格 1400 和更高版本的模型显示 M 分区、M 表达式和结构化数据源之间的依赖关系。 若要了解详细信息,请参阅 Analysis Services 博客

此 DMV 包含MDSCHEMA_MEASUREGROUP_DIMENSIONS改进,各种客户端工具使用该改进来显示度量维度。 例如,Excel 数据透视表中的“浏览”功能允许用户交叉钻取到与所选度量值相关的维度。 此版本更正了以前显示不正确值的基数列。

DAX 增强功能

新 DAX 功能最重要的部分之一是用于 DAX 表达式的新 IN 运算符/CONTAINSROW 函数 。 这与经常用于在 TSQL IN 子句中指定多个值的 WHERE 运算符类似。

以前,通常使用逻辑 OR 运算符指定多值筛选,如以下度量值表达式所示:

Filtered Sales:=CALCULATE (
        [Internet Total Sales],
                 'Product'[Color] = "Red"
            || 'Product'[Color] = "Blue"
            || 'Product'[Color] = "Black"
    )

使用 IN 运算符可简化此操作:

Filtered Sales:=CALCULATE (
        [Internet Total Sales], 'Product'[Color] IN { "Red", "Blue", "Black" }
    )

在这种情况下, IN 运算符引用含有 3 行的单列表,每行对应于一种指定的颜色。 请注意,表构造函数语法使用大括号。

IN 运算符的功能与 CONTAINSROW 函数相同:

Filtered Sales:=CALCULATE (
        [Internet Total Sales], CONTAINSROW({ "Red", "Blue", "Black" }, 'Product'[Color])
    )

IN 运算符还可和表构造函数有效结合使用。 例如,以下度量值按产品颜色和类别的组合筛选:

Filtered Sales:=CALCULATE (
        [Internet Total Sales],
        FILTER( ALL('Product'),
              ( 'Product'[Color] = "Red"   && Product[Product Category Name] = "Accessories" )
         || ( 'Product'[Color] = "Blue"  && Product[Product Category Name] = "Bikes" )
         || ( 'Product'[Color] = "Black" && Product[Product Category Name] = "Clothing" )
        )
    )

通过新的 IN 运算符,以上度量值表达式等效于以下表达式:

Filtered Sales:=CALCULATE (
        [Internet Total Sales],
        FILTER( ALL('Product'),
            ('Product'[Color], Product[Product Category Name]) IN
            { ( "Red", "Accessories" ), ( "Blue", "Bikes" ), ( "Black", "Clothing" ) }
        )
    )

其他改进

除了所有新功能外,Analysis Services、SSDT 和 SSMS 还包括以下改进:

  • 层次结构和列重用显示在 Power BI 字段列表中的更多有用位置。
  • 用于基于日期字段轻松创建与日期维度的关系的日期关系。
  • Analysis Services 的默认安装选项现在适用于表格模式。
  • 新的获取数据 (Power Query) 数据源。
  • 用于 SSDT 的 DAX 编辑器。
  • 现有 DirectQuery 数据源支持 M 查询。
  • SSMS 改进,例如对结构化数据源的查看、编辑和脚本支持。

SSAS 2017 中已弃用的功能

此版本中 已弃用 以下功能:

模式/类别 功能
多维 数据挖掘
多维 远程链接的度量值组
表格 兼容级别为 1100 和 1103 的模型
表格 表格对象模型属性 - Column.TableDetailPosition、Column.IsDefaultLabel、Column.IsDefaultImage
工具 SQL Server Profiler for Trace Capture

替代功能使用 SQL Server Management Studio 中嵌入的扩展事件探查器。
请参阅 Monitor Analysis Services with SQL Server Extended Events
工具 跟踪重播
替代功能的 Server Profiler。 没有替换。
跟踪管理对象和跟踪 API Microsoft.AnalysisServices.Trace 对象(包含 Analysis Services 跟踪和重播对象的 API)。 替代功能由多个部分组成:

- 跟踪配置:Microsoft.SqlServer.Management.XEvent
- 跟踪读取:Microsoft.SqlServer.XEvent.Linq
- 跟踪重播:无

SSAS 2017 中已停用的功能

此版本中 不再提供 以下功能:

模式/类别 功能
表格 VertiPaqPagingPolicy 内存属性值 (2) ,允许使用内存映射文件对磁盘进行分页。
多维 远程分区
多维 远程链接的度量值组
多维 维度写回
多维 链接的维度

SSAS 2017 中的中断性变更

此版本中没有 重大更改

SSAS 2017 中的行为更改

MDSCHEMA_MEASUREGROUP_DIMENSIONS和DISCOVER_CALC_DEPENDENCY的更改,详见 analysis Services SQL Server 2017 CTP 2.1 中的新增功能公告。

SQL Server 2016 Analysis Services

SQL Server 2016 Analysis Services 包括许多新的增强功能,可提供更高的性能、更轻松的解决方案创作、自动化数据库管理、通过双向交叉筛选增强的关系、并行分区处理等。 此版本的大多数增强功能的核心是表格模型数据库的全新 1200 兼容级别。

SQL Server 2016 Service Pack 1 (SP1) Analysis Services

下载 SQL Server 2016 SP1

SQL Server 2016 Service SP1 Analysis Services 基于 Intel 线程构建模块 (Intel TBB),通过非一致性内存访问 (NUMA) 感知和优化内存分配提供改进的性能和可伸缩性。 这一新功能通过在更少、功能更强大的企业服务器上支持更多的用户,有助于降低总拥有成本 (TCO)。

SQL Server 2016 SP1 Analysis Services 特别在以下关键领域进行了改进:

  • NUMA 感知 - 为改善 NUMA 支持,现在 Analysis Services 内的内存中 (VertiPaq) 引擎在每个 NUMA 节点上维护单独的作业队列。 这可确保段扫描作业运行于在其中为段数据分配内存的相同节点上。 请注意,仅在至少具有四个 NUMA 节点的系统上默认启用 NUMA 感知。 在双节点系统上,访问远程分配的内存的成本通常不保证管理 NUMA 细节的开销。
  • 内存分配 - Analysis Services 已通过 Intel 线程构建模块(一种为每个内核提供单独内存池的可扩展分配器)加速。 随着内核数量的增加,系统几乎可实现线性扩展。
  • 堆碎片 - 基于 Intel TBB 的可扩展分配器还有助于缓解由于堆碎片(已证实由 Windows 堆所产生)导致的性能问题。

在大型多节点企业服务器上运行 SQL Server 2016 SP1 Analysis Services 时,性能和可伸缩性测试在查询吞吐量方面表现出了显著提升。

虽然此版本中的大多数增强功能特定于表格模型,但对多维模型还是进行了许多改进;例如,针对 DB2 和 Oracle 等数据源的非重复计数 ROLAP 优化、Excel 2016 的钻取多重选择支持以及 Excel 查询优化。

SQL Server 2016 年正式发布 () Analysis Services

建模

改进了表格 1200 模型的建模性能

对于表格 1200 模型,SSDT 中的元数据操作比表格 1100 或 1103 模型快得多。 相比之下,在同一硬件上,在设置为 SQL Server 2014 兼容级别 (1103) 且包含 23 个表的模型上创建关系需要 3 秒,而在设置为兼容级别 1200 的模型上创建相同的关系只需不到 1 秒。

为 SSDT 中的表格 1200 模型添加了项目模板

在此版本中,你不再需要使用两个版本的 SSDT 来生成关系项目和 BI 项目。 用于 Visual Studio 2015 的 SQL Server Data Tools 为 Analysis Services 解决方案添加了项目模板,包括用于在 1200 兼容级别生成模型的 Analysis Services 表格项目 。 此外,还包含用于多维和数据挖掘解决方案的其他 Analysis Services 项目模板,但与以前的版本 (1100 或 1103 相同的功能级别) 。

显示文件夹

显示文件夹现在可用于表格 1200 模型。 显示文件夹在 SQL Server Data Tools 中定义并在 Excel 或 Power BI Desktop 等客户端应用程序中呈现,可帮助你将大量的度量值组织成单独的文件夹,添加可视层次结构以方便在字段列表中导航。

双向交叉筛选

此版本新增一项内置功能,可让你在表格模型中启用双向交叉筛选器,从而无需手动制定 DAX 解决方法来跨表关系传播筛选器上下文。 仅当能够以较高的确定性确定方向时,才自动生成筛选器。 如果跨表关系的多个查询路径的形式不明确,则不会自动创建筛选器。 有关详细信息,请参阅 SQL Server 2016 Analysis Services 中适用于表格模型的双向交叉筛选器

翻译

现在,可以将翻译的元数据存储在表格 1200 模型中。 模型中的元数据包括 Culture的字段、翻译的字幕和翻译的描述。 若要添加翻译,请使用 SQL Server Data Tools 中的“模型>翻译”命令。 有关详细信息,请参阅表格 模型中的翻译 (Analysis Services)

粘贴的表

现在,当模型包含粘贴的表时,可以将 1100 或 1103 表格模型升级到 1200。 建议使用 SQL Server Data Tools。 在 SSDT 中,将 CompatibilityLevel 设置为 1200,然后部署到 SQL Server Analysis Services SQL Server 2017 实例。 有关详细信息,请参阅 Compatibility Level for Tabular models in Analysis Services

SSDT 中的计算表

计算表 是基于 SSDT 中 DAX 表达式或查询的仅限模型的构造。 在数据库中部署后,计算表与常规表没有区别。

计算表有多种用途,包括创建新表用于公开特定角色中的现有表。 典型的示例是在多个上下文中运行的日期表(订单日期、发货日期等)。 通过为给定的角色创建计算表,你可以激活表关系以便于查询,或使用计算表进行数据交互。 计算表的另一个用途是将现有表的组成部分合并到只在模型中存在的全新表。 有关详细信息 ,请参阅创建计算表

公式修正

通过对表格 1200 模型进行公式修正,SSDT 将自动更新引用已重命名的列或表的任何度量值。

支持 Visual Studio 配置管理器

为了支持多个环境(如测试环境和预生产环境),Visual Studio 允许开发人员使用配置管理器创建多个项目配置。 多维模型已经利用此功能,但表格模型并未利用。 在此版本中,现在可以使用配置管理器部署到不同的服务器。

实例管理

在 SSMS 中管理表格 1200 模型

在此版本中,表格服务器模式下的 Analysis Services 实例可以运行任何兼容级别(1100、1103、1200)的表格模型。 最新的 SQL Server Management Studio 已更新,可以显示属性并针对 1200 兼容级别的表格模型提供数据库模型管理。

并行处理表格模型中的多个表分区

此版本为包含两个或更多个分区的表提供新的并行处理功能,从而提高处理性能。 使用此功能不需要进行任何配置设置。 有关配置分区和处理表的详细信息,请参阅 表格模型分区

在 SSMS 中将计算机帐户添加为管理员

SQL Server Analysis Services管理员现在可以使用 SQL Server Management Studio 将计算机帐户配置为SQL Server Analysis Services管理员组的成员。 在“选择用户或组”对话框中,设置计算机域的“位置”,然后添加“计算机”对象类型。 有关详细信息,请参阅授予对 Analysis Services 实例的服务器管理员权限

DBCC for Analysis Services

数据库一致性检查 (DBCC) 在内部运行,以检测数据库负载上的潜在数据损坏问题,但如果你怀疑数据或模型有问题,也可以按需运行该工具。 DBCC 将根据模型是表格式还是多维式来运行不同的检查。 有关详细信息,请参阅 Analysis Services 表格和多维数据库的数据库一致性检查器 (DBCC)

扩展事件更新

此版本向 SQL Server Management Studio 添加了图形用户界面,以配置和管理SQL Server Analysis Services扩展事件。 你可以设置实时数据流来实时监视服务器活动,在内存中保持加载会话数据以加速分析,或者将数据流保存到文件以进行脱机分析。 有关详细信息,请参阅 使用 SQL Server 扩展事件监视 Analysis Services

脚本编写

面向表格模型的 PowerShell

此版本包含面向兼容级别 1200 的表格模型的 PowerShell 增强功能。 你可以使用所有适用的 cmdlet,以及特定于表格模式的 cmdlet: Invoke-ProcessASDatabase 和 Invoke-ProcessTable cmdlet。

SSMS 脚本数据库操作

最新的 SQL Server Management Studio (SSMS)中,现在为数据库命令(包括 Create、Alter、Delete、Backup、Restore、Attach、Detach)启用了脚本。 输出是采用 JSON 格式的表格模型脚本语言 (TMSL)。 有关详细信息 ,请参阅表格模型脚本语言 (TMSL) 参考

Analysis Services 执行 DDL 任务

Analysis Services 执行 DDL 任务 现在还接受表格模型脚本语言 (TMSL) 命令。

SSAS PowerShell cmdlet

SSAS PowerShell cmdlet Invoke-ASCmd 现在接受表格模型脚本语言 (TMSL) 命令。 将来的版本可能会更新其他 SSAS PowerShell cmdlet,可让你使用新的表格元数据(发行说明中将标出例外情况)。 有关详细信息,请参阅 Analysis Services PowerShell Reference 。

SSMS 支持表格模型脚本语言 (TMSL)

使用 最新版本的 SSMS,你现在可以创建脚本来自动执行表格 1200 模型的大多数管理任务。 目前,可以编写以下任务的脚本:任何级别的处理任务,以及数据库级别的 CREATE、ALTER 和 DELETE。

在功能上,TMSL 相当于提供多维对象定义的 XMLA ASSL 扩展,不过,TMSL 使用 modeltablerelationship 等本机描述符来描述表格元数据。 有关架构的详细信息 ,请参阅表格模型脚本语言 (TMSL) 参考

为表格模型生成的基于 JSON 的脚本如下所示:

{
  "create": {
    "database": {
      "name": "AdventureWorksTabular1200",
      "id": "AdventureWorksTabular1200",
      "compatibilityLevel": 1200,
      "readWriteMode": "readWrite",
      "model": {}
    }
  }
}

有效负载是一个 JSON 文档,可以像上面所示的示例一样最小,也可以高度修饰完整的对象定义集。 表格模型脚本语言 (TMSL) 参考 介绍了语法。

在数据库级别,CREATE、 ALTER 和 DELETE 命令将在你熟悉的 XMLA 窗口中输出 TMSL 脚本。 还可以在此版本中编写其他命令(例如 Process)的脚本。 将来的版本可能会添加对其他许多操作的脚本支持。

可编写脚本的命令 说明
create 添加数据库、连接或分区。 ASSL 等效项为 CREATE。
createOrReplace 通过覆盖以前的版本来更新现有的对象定义(数据库、连接或分区)。 ASSL 等效于 AllowOverwrite 设置为 true 并且 ObjectDefinition 设置为 ExpandFull 时的 ALTER。
删除 删除对象定义。 ASSL 等效项为 DELETE。
refresh 处理对象。 ASSL 等效项为 PROCESS。

DAX

改进了 DAX 公式编辑

汇报编辑栏有助于通过语法着色区分函数、字段和度量值来更轻松地编写公式,它提供智能函数和字段建议,并使用错误波浪线告知 DAX 表达式的一部分是否出错。 它还允许你换行 (Alt + Enter) 和缩进 (Tab)。 现在,编辑栏还允许你编写注释作为度量值的一部分,只需键入“//”,同一行中这些字符后的所有内容都将被视为注释。

DAX 变量

此版本现在包含对 DAX 中变量的支持。 现在,变量可将表达式的结果存储为命名变量,然后,可以将该变量作为参数传递给其他度量值表达式。 为变量表达式计算结果值后,这些值不会更改,即使在其他表达式中引用该变量。 有关详细信息,请参阅 VAR 函数

新的 DAX 函数

在此版本中,DAX 引入了超过五十个新函数,可在 Power BI 中实现更快的计算和增强的可视化效果。 若要了解详细信息,请参阅 新的 DAX 函数

保存未完成的度量值

现在,你可以直接在表格 1200 模型项目中保存未完成的 DAX 度量值,并在准备好继续时再次拾取这些值。

其他 DAX 增强功能

  • 非空计算 — 减少了非空所需的扫描次数。
  • 度量值融合 — 同一表中的多个度量值将合并成单个存储引擎查询。
  • 分组集 — 当查询请求多个粒度(总计/年/月)的度量值时,将在最低级别发送单个查询,其余粒度则从最低级别派生。
  • 冗余联接消除 — 向存储引擎发出的单个查询将返回维度列和度量值。
  • 严格计算 IF/SWITCH — 条件为 false 的分支将不再引发存储引擎查询。 以前总是急切地计算分支,之后又将结果丢弃。

开发人员

AMO 中表格 1200 可编程性的 Microsoft.AnalysisServices.Tabular 命名空间

Analysis Services 管理对象 (AMO) 已更新,现在包含用于管理 SQL Server 2016 Analysis Services 表格模式实例的新表格命名空间,并提供用于以编程方式创建或修改表格 1200 模型的数据定义语言。 请访问 Microsoft.AnalysisServices.Tabular 以进一步阅读有关 API 的信息。

Analysis Services 管理对象 (AMO) 更新

AMO) (Analysis Services 管理对象 已重新分解为包含第二个程序集,Microsoft.AnalysisServices.Core.dll。 不管服务器模式如何,新程序集都会区分 Analysis Services 中广泛应用的常见类,如 Server、Database 和 Role。 以前,这些类是原始 Microsoft.AnalysisServices 程序集的一部分。 将它们移到新的程序集便铺平了将来扩展到 AMO 的道路,在泛型与特定于上下文的 API 之间进行分隔。 现有应用程序不受新程序集的影响。 但是,如果出于任何原因而选择使用新 AMO 程序集来重新生成应用程序,请务必添加对 Microsoft.AnalysisServices.Core 的引用。 同样,加载和调用 AMO 的 PowerShell 脚本现在必须加载 Microsoft.AnalysisServices.Core.dll。 请务必更新任何脚本。

BIM 文件的 JSON 编辑器

Visual Studio 2015 中的代码视图现在以 JSON 格式呈现表格 1200 模型的 BIM 文件。 Visual Studio 的版本决定了是要通过内置 JSON 编辑器还是简单文本以 JSON 格式呈现 BIM 文件。

若要使用可让你展开和折叠模型各部分的 JSON 编辑器,需要安装 SQL Server Data Tools 的最新版本,以及 Visual Studio 2015(任何版本,包括免费的社区版)。 对于其他所有 SSDT 或 Visual Studio 版本,BIM 文件将以 JSON 格式呈现为简单文本。 空模型至少将包含以下 JSON:

  {  
    "name": "SemanticModel",
    "id": "SemanticModel",
    "compatibilityLevel": 1200,
    "readWriteMode": "readWrite",
    "model": {}
  }  

警告

避免直接编辑 JSON。 这样做可能会损坏模型。

MS-CSDLBI 2.0 架构中的新元素

以下元素已添加到 [MS-CSDLBI] 2.0 架构中定义的 TProperty 复杂类型:

元素 定义
DefaultValue 指定在评估查询时要使用的值的属性。 DefaultValue 属性是可选的,但如果无法聚合成员中的值,则会自动选择该属性。
统计信息 基础数据中与列关联的一组统计信息。 这些统计信息由 TPropertyStatistics 复杂类型定义,仅当生成这些信息需要消耗大量的计算资源时才提供,如“Conceptual Schema Definition File Format with Business Intelligence Annotations”(包含业务智能标注的概述架构定义文件格式)文档的第 2.1.13.5 部分中所述。

DirectQuery

新的 DirectQuery 实现

此版本对表格 1200 模型的 DirectQuery 进行了重大改进。 摘要如下:

  • DirectQuery 现在会生成更简单的查询,从而提供更好的性能。
  • 对定义用于模型设计和测试的示例数据集的额外控制。
  • DirectQuery 模式下的表格 1200 模型现在支持行级别安全性 (RLS)。 以前,RLS 会阻止在 DirectQuery 模式下部署表格模型。
  • 在 DirectQuery 模式下,表格 1200 模型现在支持计算列。 以前,计算列会阻止在 DirectQuery 模式下部署表格模型。
  • 性能优化包括针对 VertiPaq 和 DirectQuery 的冗余联接消除。

用于 DirectQuery 模式的新数据源

在 DirectQuery 模式下,表格 1200 模型支持的数据源现在包括 Oracle、Teradata 和 Microsoft Analytics Platform (以前称为并行Data Warehouse) 。 若要了解详细信息,请参阅 DirectQuery 模式

SSAS 2016 中已弃用的功能

此版本中 已弃用 以下功能:

模式/类别 功能
多维 远程分区
多维 远程链接的度量值组
多维 维度写回
多维 链接的维度
多维 主动缓存的 SQL Server 表通知。
替代功能将对主动缓存使用轮询。
请参阅 主动缓存 (维度) 主动缓存 (分区)
多维 会话多维数据集。 没有替换。
多维 本地多维数据集。 没有替换。
表格 未来版本中将不支持表格模型 1100 和 1103 兼容性级别。 替代项是在兼容级别 1200 或更高级别设置模型,将模型定义转换为表格元数据。 请参阅 Compatibility Level for Tabular models in Analysis Services
工具 SQL Server Profiler for Trace Capture

替代功能使用 SQL Server Management Studio 中嵌入的扩展事件探查器。
请参阅 Monitor Analysis Services with SQL Server Extended Events
工具 跟踪重播
替代功能的 Server Profiler。 没有替换。
跟踪管理对象和跟踪 API Microsoft.AnalysisServices.Trace 对象(包含 Analysis Services 跟踪和重播对象的 API)。 替代功能由多个部分组成:

- 跟踪配置:Microsoft.SqlServer.Management.XEvent
- 跟踪读取:Microsoft.SqlServer.XEvent.Linq
- 跟踪重播:无

SSAS 2016 中已停用的功能

此版本中 不再提供 以下功能:

Feature 替代功能或解决方法
CalculationPassValue (MDX) 无。 SQL Server 2005 中已弃用此功能。
CalculationCurrentPass (MDX) 无。 SQL Server 2005 中已弃用此功能。
NON_EMPTY_BEHAVIOR 查询优化器提示 无。 SQL Server 2008 中已弃用此功能。
COM 程序集 无。 SQL Server 2008 中已弃用此功能。
CELL_EVALUATION_LIST 内部单元属性 无。 SQL Server 2005 中已弃用此功能。

SSAS 2016 中的中断性变更

.NET 4.0 版本升级

(AMO) 、ADOMD.NET 和表格对象模型 (TOM) 客户端库的 Analysis Services 管理对象现在面向 .NET 4.0 运行时。 这可能是对指向 .NET 3.5 的应用程序的重大更改。 使用这些程序集的较新版本的应用程序现在必须指向.NET 4.0 或更高版本。

AMO 版本升级

此版本是 Analysis Services 管理对象的版本升级, (AMO) ,在某些情况下是中断性变更。 调入 AMO 的现有代码和脚本将继续运行,和从以前的版本升级之前一样。 但是,如果需要重新编译应用程序,并且以 SQL Server 2016 Analysis Services 实例为目标,则必须添加以下命名空间以使代码或脚本正常运行:

using Microsoft.AnalysisServices;  
using Microsoft.AnalysisServices.Core;  

现在,无论何时在你的代码中引用 Microsoft.AnalysisServices 程序集,都需要 Microsoft.AnalysisServices.Core 命名空间。 对于以前只能在 Microsoft.AnalysisServices 命名空间中的对象,如果它们在表格和多维方案中使用的方式相同,则在此版本中会移到核心命名空间。 例如,服务器相关的 API 将重新安置到核心命名空间中。

尽管现在有多个命名空间,但它们都在同一程序集 (Microsoft.AnalysisServices.dll) 中。

XEvent DISCOVER 更改

为了更好地支持 SSMS for SQL Server 2016 Analysis Services 中的 XEvent DISCOVER 流式处理,DISCOVER_XEVENT_TRACE_DEFINITION已替换为以下 XEvent 跟踪:

  • DISCOVER_XEVENT_PACKAGES

  • DISCOVER_XEVENT_OBJECT

  • DISCOVER_XEVENT_OBJECT_COLUMNS

  • DISCOVER_XEVENT_SESSION_TARGETS

SSAS 2016 中的行为更改

SharePoint 模式下的 Analysis Services

不再需要运行 PowerPivot 配置向导这一安装后任务。 这适用于从当前 SQL Server 2016 Analysis Services 加载模型的 SharePoint 的所有受支持版本。

表格模型中的 DirectQuery 模式

DirectQuery 是表格模型的数据访问模式,在此模式下,查询执行将在后端相关数据库上执行,实时检索结果集。 它通常用于无法存储在内存中的大型数据集,或者常用在当数据不稳定并想在查询中返回针对表格模型的最新数据时。

DirectQuery 在最近的几个版本中作为数据访问模式存在。 在 SQL Server 2016 Analysis Services 中,该实现略有修改,假设表格模型的兼容性级别为 1200 或更高。 DirectQuery 的限制比之前更少。 它还具有不同的数据库属性。

如果在现有的表格模型中使用 DirectQuery,则可以在当前的兼容级别 1100 或 1103 上保留该模型并继续使用 DirectQuery 作为其对这两种级别的实现。 或者,可以升级到 1200 或更高版本,以受益于 DirectQuery 的增强功能。

没有就地升级 DirectQuery 模型,因为较旧兼容级别的设置在较新的 1200 和更高兼容级别中没有完全相同的对应项。 如果有在 DirectQuery 模式下运行的现有表格模型,则应在SQL Server Data Tools打开该模型,关闭 DirectQuery,将“兼容级别”属性设置为 1200 或更高,然后重新配置 DirectQuery 属性。 有关详细信息 ,请参阅 DirectQuery 模式

定义

弃用的功能 将在将来的版本中从产品中停用,但仍受支持并包含在当前版本中,以保持向后兼容性。 建议在新的和现有项目中停止使用已弃用的功能,以保持与未来版本的兼容性。 文档不会针对已弃用的功能进行更新。

早期版本中已弃用 已停用的功能 。 它可能继续包含在当前版本中,但不再受支持。 在所述或将来的版本中,可能会完全删除已停用的功能。

中断性变更会导致功能、数据模型、应用程序代码或脚本在升级到当前版本后不再正常运行。

与上一版本相比, 行为更改 会影响当前版本中相同功能的工作方式。 仅描述重大行为更改。 不包括用户界面中的更改。 对默认值的更改、完成升级或还原功能所需的手动配置,或现有功能的新实现都是行为更改的示例。