Power BI和SQL Server索引

5

我已经做了一些研究,但没能够得到有价值的信息来回答我的问题。

我正在开展一个数据仓库项目,我的客户要求我们使用power bi pro进行数据可视化。

对我不清楚的是,当power bi在其数据模型中获取数据时,是否会受益于SQL Server中开发的索引结构。

谢谢提前对此主题提供建议/提示。


1
如果您使用PowerBI导入整个表格,则表格上的索引无关紧要。 如果您正在使用自定义查询或视图导入转换或过滤后的数据,则会像往常一样使用索引。 一旦数据已经被导入PowerBI(即不使用DirectQuery),则源的索引不再相关; 它将完全基于其自己处理的数据形式进行工作。 - Jeroen Mostert
1
我对PowerBI只有一点了解,所以不会提交真正的答案。但是,如果您不仅仅是拉取完整表格,那么使用SQL索引肯定会对数据提取有所帮助。如果您从视图或其他结构化查询中导入数据,则索引将提供帮助。在PowerBI导入数据后,SQL Server索引就无法发挥作用了。 - squillman
2个回答

1

这在一定程度上取决于您是否使用实时连接。

在使用PowerBI导入模式时,现有索引可以加快数据加载速度,其中数据源是视图、查询或存储过程。

当连接到上述数据源时,它们也将用于Live模式,并且在直接连接到多个表时可能会被使用。

正如评论所述,如果您使用导入模式将整个表带入PowerBI,则现有索引将对您没有好处,而PBI使用的内部SSAS实例则完全不同。

一个注意事项是,列存储索引可用于解决使用网关处理数据大小限制的问题,如此处所述:https://community.powerbi.com/t5/Power-Query/Using-SQL-Server-with-Nonclustered-Columnstore-Index/td-p/563787,但这与您的问题没有直接关系。


1
这还取决于查询通常从表中读取多少数据;如果查询经常拉取表的大部分数据,SQL的查询优化器将忽略索引并执行完整的表(或聚集索引)扫描。 - Chris Hackett

1
索引可以提高服务器端的检索速度。关于索引能提高多少检索速度,取决于具体情况。如果在Power BI查询编辑器中进行大量数据转换和混搭,则索引仅在从SQL Server选择行的步骤中有帮助。对于在Power BI端进行处理的步骤(例如与来自Excel文件的数据合并、添加自定义列或某些形式的值替换),它并没有帮助。但是,由于您提到的是数据仓库而不是简单的数据库,我将假设您在Power BI端几乎没有进行任何转换,而是依靠服务器端来完成重量级工作。在这种情况下,如果策略得当,索引肯定会有助于加速事情。
导入模式和连接实时模式之间存在一些差异。
导入模式:
数据导入可用于任何数据源类型,可以组合来自不同来源的数据。当前Power BI服务限制发布文件大小为1 GB。
当使用导入时,数据存储在Power BI文件/服务中。因此,在数据源端不需要设置权限(仅需要加载的服务帐户即可),您可以公开共享数据或与组织外的人分享数据。另一方面,所有数据都存储在Power BI上。支持实现完整的DAX表达式和完整的Power Query转换。
连接实时模式: 实时连接存在更多限制。它无法针对所有数据源进行操作。当前列表可以在这里中查看,它不能将来自多个来源的数据合并。
您只能使用选择的一个数据源/数据库。您不能再从多个数据源中合并数据。如果您连接到SQL数据库,仍然可以在该数据库的对象之间创建逻辑关系以及度量和计算列。当您连接到SQL Server Analysis Services时,您仅限于报告布局,甚至不能制作计算列,而目前只能创建度量。使用实时连接时,用户必须能够访问底层数据源。这意味着您不能在组织外或公开共享。不支持实现完整的DAX表达式,仅支持报告级别度量。要了解有关报告级别度量的更多信息,请观看Patrick的精彩视频,没有Power Query转换。
您可以了解更多:直接查询、实时连接或导入数据-艰难的决定

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接