带有参数的 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 无效列的主要内容,如果未能解决你的问题,请参考以下文章