带有参数的 Power Query 无效列

Posted

技术标签:

【中文标题】带有参数的 Power Query 无效列【英文标题】:Power Query Invalid Column with parameter 【发布时间】:2020-04-15 14:44:18 【问题描述】:

好的,所以我有一个 Power Query,它使用一个函数从 Excel 工作表中获取参数并输出一个值。它工作正常。在这个特定的查询中有三个这样的参数,都在 WHERE 部分。

SELECT 
* 
FROM AcctHist 
WHERE FiscYr LIKE '2019' 
AND LedgerID LIKE 'Actual' 
AND CpnyID LIKE 'NAH'

如果我使用硬值,则查询工作正常。如果我使用 FiscYr 列的参数,它工作正常。如果我将参数用于 LedgerID 或 CpnyID,查询将返回“无效列”错误。这是 Power Query 高级编辑器中查询的样子:

let
Year = Text.From(fnGetParameter("Year")),
Ledger = Text.From(fnGetParameter("Ledger")),
Fund = Text.From(fnGetParameter("Fund")),
Source = Sql.Database(("Server"), ("Database"), [Query="SELECT#(tab)#(lf)#(tab)*#(lf)FROM#(tab)#(lf)#(tab)AcctHist#(lf)WHERE#(tab)#(lf)       FiscYr LIKE '2019' AND#(lf)       LedgerID LIKE 'Actual' AND#(lf)       CpnyID LIKE 'NAH'"])
in
Source

正如所写,这工作正常,并为我提供了我需要的报告。 将 '2019' 更改为 "&Year&" 输入指定的参数(在本例中为 2019)并且查询仍然可以正常工作 以完全相同的方式更改 'Actual''NAH' 会给我“无效列”错误。 为什么会这样,我能做些什么来解决它? 谢谢! :)

【问题讨论】:

【参考方案1】:

如果从 '2019' 到 "&Year&" 的变化正是这样,那么 SQL 就可以了,因为它将 2019 作为一个数字(因为结果没有被单个 tic 包围)。 如果您忘记了其他值的单个 tic,查询引擎将查找名为 Ledger 或 Fund 的列。

如果这个断言是正确的,你的'不工作' where 子句看起来像这样:

WHERE FiscYr LIKE " & Year & "
AND LedgerID LIKE " & Ledger & "
AND CpnyID LIKE " & Fund & "

但应该是

WHERE FiscYr LIKE " & Year & "
AND LedgerID LIKE '" & Ledger & "' --note the single tics just inside of the double-quotes
AND CpnyID LIKE '" & Fund & "'

【讨论】:

非常感谢!我知道这是一件很小的事情,但是所有这些都是自学成才的,我就是无法掌握它。

以上是关于带有参数的 Power Query 无效列的主要内容,如果未能解决你的问题,请参考以下文章

power query展开表时动态获取要展开的列

powerquery中使用原始列名作为前缀 啥意思?

power query如何实现增加空白行

每一个each(Power Query 之 M 语言)

Android编程query的orderBy参数怎么填?

Power BI 中的 M(Power Query),将参数从列表传递到 SQL 语句