DirectQuery 模式下的 AAS 表格模型性能优势

AAS tabular model in DirectQuery mode performance benefits

假设您有 10 个相当大的事实表(每个 50-100 GB)应该使用 Power BI 进行查询。它们不适合 Azure Analysis Services RAM(合理的价格)。因此,为了使用表格模型和 AAS,您必须使用以下架构:

(1) Power BI Desktop -> Azure Analysis Services -> [DirectQuery] -> SQL Database

但据我所知 this article,AAS 表格模型不会缓存任何聚合结果(意味着不会暗示任何额外的性能优化)。此外,据我所知,Power BI (PowerPivot) 已经嵌入了 AAS。

或者,我可以直接从 Power BI 查询 SQL 数据源:

(2) Power BI Desktop -> [DirectQuery] -> SQL Database


第一个模式(使用 AAS)是否比第二个模式(不使用 AAS)提供任何性能优势?

P.S。我的问题不是关于语义层的优缺点,请参阅 this article. This question isn't the same as ,因为它只询问 ASS DirectQuery 的性能方面。

性能优势需要根据您的工作负载和其他因素进行测试。

警告(此答案基于我自己和同事的经验和测试)

服务标准: 从服务的角度来看,Azure Analysis Services (AAS) 和 Power BI Service (PBIS) 之间的主要区别在于 AAS 是一组已知的 hardware/performance,而 PBIS 是共享容量,并且可能会遇到 'noisy neighbour' 问题,如果另一个客户在同一个集群上并大量使用它,它将对您的报告性能产生影响。

性能: 本质上,PBI 和 AAS 正在做同样的事情,将 DAX 转换为 SQL 查询,然后返回数据。根据我在性能方面构建 PBI 和 AAS 的经验,两者之间没有太大区别。往往成为瓶颈的主要问题是使用通往本地 SQL 的网关以及本地或云端 SQL 服务器的容量。例如,为了获得更好的性能,您可以使用聚簇列索引将事实表带入内存,并且在工作时间更容易 increase/decrease Azure SQL 数据库 DTU's/capacity。

目前AAS没有PBI那样的聚合模式,它可以减少发回查询的数量并且速度更快,但也有一个缺点是它们必须在某个时候刷新.

我建议使用 DAX Studio 等进行测试,以了解您可能会在性能上获得什么样的可变性。我自己的测试显示毫秒到 1 秒范围内的差异有利于 AAS。

然而,语义层的好处是一个强有力的考虑因素

连接数: AAS 比 Power BI 更好地支持其他连接,例如 Excel、SSMS、SSRS 等。 Excel 可以使用附加插件连接到 Power BI 模型。

可维护性: 在使用 Azure DevOps 的 Visual Studio/SSDT、Git 等中,在整个生命周期中维护数据模型比在 Power BI Desktop 中要容易得多。使用 AAS,您还可以使用计算组进行时间智能计算,而不是针对 YTD、并行期、MTD 等的多个度量或解决方法

如果纯 Power BI 方法的性能稍微好一些,由于 none 性能因素的好处,我仍然会使用 AAS,它必须在切换之前显示出显着改进的性能。

希望对您有所帮助