如何在Power查询中向查询添加where子句?

时间:2019-07-15 06:08:20

标签: powerquery

我需要基于excel中的参数从数据库返回一组数据。

所以我创建了以下“ Query1”

let
    Source = Sql.Database("VI107064\SQLEXPRESS", "Stock", [Query="select * from customer#(lf)where custID = " &CustID])
in
    Source

然后我创建了“ CustID”

let
    Source = Excel.CurrentWorkbook(){[Name="CustID"]}[Content],
    SourceValue = Record.Field(Source{0},  "CustID"),
    SourceText = Number.ToText(SourceValue)
in
    SourceText

问题是Excel抱怨该查询引用了其他查询或步骤,因此它可能无法直接访问数据源。请重建此数据组合。

enter image description here

因此,在阅读https://www.excelguru.ca/blog/2015/03/11/power-query-errors-please-rebuild-this-data-combination/

之后

我了解此问题,并且我认为要解决此问题,我需要将query1复制到query2。 更新查询1,使其只返回表。 更新查询2,使其将查询1作为源,然后添加过滤器。

对吗?还是有更好的方法做到这一点?

1 个答案:

答案 0 :(得分:1)

如果您不担心数据隐私设置,最简单的解决方案是关闭这些设置。

文件>选项和设置>查询选项>隐私

enter image description here


无论如何,我建议将代码清理为一个看起来像这样的单个查询:

let
    CustID = Excel.CurrentWorkbook(){[Name="CustID"]}[Content]{0}[Column1],
    Source = Sql.Database("VI107064\SQLEXPRESS", "Stock"){[Schema="dbo",Item="customer"]}[Data],
    #"Filtered Rows" = Table.SelectRows(Source, each ([CustID] = CustID))
in
    #"Filtered Rows"

如果右键单击“应用的步骤”窗格中的最后一步,则可以看到在SQL Native Query中该解释为

select [_].[ <A bunch of columns here> ],
    [_].[ <...> ],
    [_].[ <etc> ]
from [dbo].[customer] as [_]
where [_].[CustID] = <CustID value here>