0

我需要根据 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 抱怨该查询引用了其他查询或步骤,因此它可能无法直接访问数据源。请重建此数据组合。

在此处输入图像描述

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

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

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

4

1 回答 1

1

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

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

在此处输入图像描述


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

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>
于 2019-07-15T16:41:13.420 回答