Power BI 中的查询折叠 (Query Floding)

时间:2024-03-24 22:19:26

为了加快数据查询效率,Power BI中引入了查询折叠(Query Folding)的概念。查询折叠是指在查询某些外部数据源数据时,Power BI中使用的Power Query M语言中的部分函数可以转换成该外部数据源自身可识别的查询语句,并在外部数据源中直接执行该查询,从而减少到需要加载到Power BI中进行查询的数据。

例如,一个Microsoft SQL Serve数据库中有100万行数据,其中的20万行数据为有效数据,需要加载到Power BI当中进行分析。当使用Power Query M语言对数据库进行筛选时,通过查询折叠技术,Power Query M语言就可以转换成对应的T-SQL语言,并直接在SQL Server端进行执行。这样,原本需要加载100万行数据到Power BI当中再进行过滤,通过先在SQL Server中执行T-SQL查询语句,就只有20万行数据会被加载到Power BI当中,大大降低了数据传输量,提高了数据查询效率。

要想查看当前在Power BI界面进行的查询操作是否进行了查询折叠,可以通过在查询编辑器中,点击相应查询应用步骤,然后右键选择“查看本机查询”来进行。例如,在Power BI中对两张SQL Server 数据库中的表单进行了追加操作,点击“查看本机查询”后即可获得对应T-SQL查询语句。
Power BI 中的查询折叠 (Query Floding)

目前查询折叠在使用上有一些限制,主要包括:

  • 只有部分本身拥有特定查询语言的数据源支持进行查询折叠,例如SQL Server,Oracle以及支持用ODBC连接的数据源。例如Excel,CSV,Website这种本身没有任何查询机制的数据源则不支持查询折叠

  • 即使支持进行查询折叠的数据源,也并不是所有Power Query M函数都可以转换成对应数据源使用的查询语言。例如当在Power Query查询编辑器对SQL Server数据库下表单中的某个数据提取首字母,则无法进行查询折叠。因为T-SQL查询语言中没有相应提取首字母的操作。此时,Power BI必须将数据源中的数据加载进来之后才能进行提取操作。
    要确定当前查询步骤是否可以进行查询折叠,只需要查看查询编辑器中“应用的步骤”中相应步骤下的“查看本机”选项是否灰掉即可。如果灰掉则表明无法进行查询折叠。
    Power BI 中的查询折叠 (Query Floding)

  • 如果在连接数据源之前所示预先配置了查询语句,则查询折叠不再起作用。
    Power BI 中的查询折叠 (Query Floding)

对于支持进行查询折叠的数据源,当在Power Query查询编辑器对其进行设置时,应该尽可能的先使用可以直接在数据源执行的查询操作,之后再使用Power Query M函数独有功能对其进行加工。这样的操作顺序可以减少需要传输到Power BI中进行操作的数据量,从而提高数据查询效率。