假设您有 10 个相当大的事实表(每个 50-100 GB),应该使用 Power BI 进行查询。它们不适合 Azure Analysis Services RAM(价格合理)。因此,为了使用表格模型和 AAS,您必须使用以下模式:
(1) Power BI Desktop -> Azure Analysis Services -> [DirectQuery] -> SQL Database
但据我所知本文 https://www.element61.be/en/resource/choice-between-tabular-or-multidimensional-models-sql-server-analysis-services-2012,AAS 表格模型不会缓存任何聚合结果(意味着不会意味着任何额外的性能优化)。而且,据我所知,Power BI(PowerPivot)已经嵌入了AAS。
作为替代方案,我可以直接从 Power BI 查询 SQL 数据源:
(2) Power BI Desktop -> [DirectQuery] -> SQL Database
第一个模式(使用 AAS)是否比第二个模式(不使用 AAS)提供任何性能优势?
附:我的问题不是关于语义层的利弊,为此请参阅本文 https://www.jamesserra.com/archive/2013/08/why-use-a-ssas-cube/。这个问题与以下问题不一样这个问题 https://stackoverflow.com/questions/58235730/azure-analysis-services-vs-direct-query,因为它仅询问 ASS DirectQuery 的性能方面。
性能优势需要根据您的工作负载和其他因素进行测试。
警告(这个答案是基于我自己和我同事的经验和测试)
服务标准:从服务的角度来看,Azure Analysis Services (AAS) 和 Power BI Service (PBIS) 之间的主要区别在于,AAS 是一组已知的硬件/性能,而 PBIS 是共享容量,并且可以遭受“吵闹的邻居”问题,如果另一个客户位于同一集群上并大量使用它,则会对您的报告性能产生影响。
表现:本质上,PBI 和 AAS 正在做同样的事情,将 DAX 转换为 SQL 查询,然后返回数据。根据我构建 PBI 和 AAS 的经验,就性能而言,两者之间没有太大差异。往往成为瓶颈的主要问题是使用本地 SQL 网关以及本地或云中 SQL Server 的容量。例如,为了获得更好的性能,您可以使用聚集列索引将事实表带入内存,并且在工作时间内更容易增加/减少 Azure SQL 数据库 DTU 的容量。
目前AAS没有PBI那样的聚合模式,它可以减少发回的查询数量并且速度更快一些,但也有一个缺点,即它们必须在某些时候刷新。
我建议使用 DAX Studio 等进行测试,看看您可能会获得哪些性能变化。我自己的测试显示,毫秒到 1 秒范围内的差异有利于 AAS。
然而,语义层的好处是一个强有力的考虑因素
连接:AAS 比 Power BI 更好地支持其他连接,例如 Excel、SSMS、SSRS 等。 Excel 可以通过附加插件连接到 Power BI 模型。
可维护性:在 Visual Studio/SSDT 中使用 Azure DevOps、Git 等来维护数据模型的整个生命周期比在 Power BI Desktop 中容易得多。借助 AAS,您还可以使用计算组进行时间智能计算,而不是针对 YTD、平行周期、MTD 等使用多种测量或解决方法
如果纯 Power BI 方法的性能稍微好一点,我仍然会使用 AAS,因为没有性能因素的好处,它必须在切换之前显示出显着提高的性能。
希望有帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)