2017-10-09 76 views
0

业务案例:
我有一个Excel电子表格中的关键ID列表。我想使用Power Query将这些ID与SQL Server数据库中的详细信息表一起使用。在Excel Power Query中针对SQL Server合并本地数据集

问题
目前使用Power查询我只知道如何导入整个表,这是超过100万点的记录,然后做了左连接上它针对的目标ID的本地表中的现有查询。

我想要做的是在原始查询中发送这组ID,所以我不回拉整个表,然后过滤它。

问题
有没有把IN子句针对类似于如下所示的本地表的例子吗?

= Sql.Database("SQLServer001", "SQLDatabase001", 
[Query="SELECT * FROM DTree WHERE ParentID 
IN(Excel.CurrentWorkbook(){[Name="tbl_IDs"]}[Content])"]) 
+1

如果您只是创建与SQL Server表的连接,Power Query将不会恢复整个数据库表。 然后就像合并表按钮一样简单。左外是默认值。 我这样做与连接Oracle表和数百万行的所有时间。 – tbur

回答

1

我首先会在excel电子表格密钥ID上建立一个“仅连接”查询。

然后我会通过连接到SQL表开始一个新的查询。在那个查询中,我将添加一个合并步骤来将密钥ID查询作为内部联接(过滤器)应用。

这将下载1米行来应用过滤器,但它出奇的快,因为这主要在内存中完成。它只会将过滤结果写入Excel表格。

为了提高性能,请在合并步骤之前尽可能多地过滤行和列。

+0

我相信当PQ运行在直接的SQL连接之下时,所有的M代码都会转换为后端的SQL语句。所以它实际上只是运行一系列的SQL语句,而最终的查询则不必下载整个表格。您可以右键单击查询中的某个步骤,然后单击“查看本地查询”选项以查看此信息。 我从来没有能够测试PQ如何完成这个任务,因为它的本地PostgreSQL连接器问题... – Wedge