强大的查询功能可基于Excel列列表过滤SQL视图

时间:2019-03-08 20:19:43

标签: sql-server excel powerbi powerquery m

是否有一种方法可以使用Power Query基于excel表列中的值列表过滤SQL视图?

我有一个SQL视图,该视图返回大量数据(数百万条记录或属性)。用户希望基于属性ID的excel表列进行过滤。我知道我可以基于视图和Power查询中的excel列之间的属性ID进行合并联接。但是合并似乎首先带来了数百万条记录,然后在联接中对其进行了过滤。这需要很长时间。用户希望每天动态更改propertyID的列表并运行查询。

本质上,我想在Excel中创建电源查询 SQL中有什么

SELECT * FROM SQLViewName 
WHERE PropertyID IN (Select Column from ExcelTable) 

1 个答案:

答案 0 :(得分:2)

您应该可以使用List.Contains函数来做到这一点。

如果我的ExcelTable

ID
---
436
437
438
439

然后添加一个像这样的过滤器应该可以解决问题:

Table.SelectRows(SQLViewName, each List.Contains(ExcelTable[ID], [PropertyID]))

当我尝试执行此操作并在最后应用的步骤中执行“查看本机查询”时,它将Excel表折叠到WHERE子句中,其中ExcelTable的值像这样的文字:

select [_].[PropertyID],
    [_].[OtherColumns]
from [dbo].[SQLViewName] as [_]
where [_].[PropertyID] in (436, 437, 438, 439)

这使我能够在几秒钟内加载数百万行的表。