我需要基于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作为源,然后添加过滤器。
对吗?还是有更好的方法做到这一点?
答案 0 :(得分: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>