Azure 分析服务与直接查询

Azure Analysis Services vs Direct Query

我试图评估在成本和性能方面使用 Power BI 和 Azure Analysis Services 或 Power BI 和直接查询访问数据和 运行 查询数据集的最佳方法。

我试图用下图来说明这两种方法。

图中的第 4 步和第 5 步描述了使用 Power BI 和 Direct Query 访问 Azure Data Lake 中的数据。然而,第 4 步和第 6 步描述了使用 Power BI 和 Azure Analysis Services 访问数据。

根据我自己的研究,Direct Query 因性能问题而臭名昭著,例如

All DirectQuery requests are sent to the source database, so the time required to refresh a visual is dependent on how long that back-end source takes to respond with the results from the query (or queries).

上面的陈述有据可查,但是,在我的设计中,DirectQuery 请求应该不是问题,因为大部分逻辑和转换将在 Databricks 中进行(尽管,我不希望这个问题集中在数据块)。

另一方面,使用 Azure Analysis Services (AAS),所有请求都发生在内存中,而不是 DirectQuery,因此速度更快。

所以,如果您能分享您使用 DirectQuery 和 AAS 的经验,我会很高兴。如果我错过了任何 advantages/disadvantages 使用技术而不是其他技术,请告诉我/

Power BI (PBI) 数据模型是分析服务的轻量级版本。如果您打开了 PBI Desktop,您可以打开任务管理器并看到后台有一个 Analysis Services 实例。 在 Power BI 中,数据集大小限制为 1GB,在 Premium 中为 10GB,可以刷新到 12GB。

Analysis Services 将能够容纳更多数据,并且不受限于有限的数据集大小,并且您还具有基于企业组织的其他功能。 Analysis Services 还可以在直接查询模式下访问数据源或导入数据,如 Power BI。

在您的问题中,您提到了直接查询模式 'is notorious for having performance issues',但这将取决于数据源的结构和大小。对于我已经部署的一些项目,我使用直接查询来访问至少 50-100GB 的数据源,但是这些大多是标准的星型模式数据仓库,或者定义的报告 table,两者都将具有相关索引、覆盖索引或列存储索引,以允许更有效地检索数据。由于基于度量、关系和连接开销对数据源执行的查询数量,直接查询模式将变慢。另一个可以是页面上的视觉对象数量,因为每个视觉对象都是一个查询,并且每个视觉对象都必须 运行 在数据源上。

另一种提高直接查询速度的方法是使用 Aggregations in Power BI, to store an Imported subset of data in Power BI. If the query can be answered by the aggregation layer then it will be answered quicker. Microsoft demonstrated this with the 'Trillion Row Demo'

就 Power BI 直接查询问题而言,从我与之交互的客户范围来看,那些确实存在直接查询问题的客户在低效模式中混搭了 tables, 运行数据源上的次优查询,DAX 中的大量数据转换,以及编写不当的 DAX 度量,例如大量 DISTINCT COUNTS 和 SWITCH。

因此,如果您希望导入数据,并且它超过了数据集大小限制,那么 Analysis Services 是您的最佳选择。如果你能很好地设置数据结构,Power BI 和 Direct Query 应该没有问题。

希望对您有所帮助