【问题标题】:Power Query Invalid Column with parameter带有参数的 Power Query 无效列
【发布时间】: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' 会给我“无效列”错误。
为什么会这样,我能做些什么来解决它?
谢谢! :)

【问题讨论】:

    标签: sql parameter-passing powerquery


    【解决方案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 & "'
    

    【讨论】:

    • 非常感谢!我知道这是一件很小的事情,但是所有这些都是自学成才的,我就是无法掌握它。
    猜你喜欢
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多