我在名为“ParameterTable”的Excel工作簿中有一个表。在此表中,我存储了要传递给通过Excel Power Query执行的SQL查询的参数。
要从工作簿中提取这些参数,我使用一个名为“fnGetParameter”的函数。功能代码如下所示:
let //Function name and parameters
fnGetParameter = (ParameterName as text, ColumnNum as text) =>
let
//Assign Table and Column for function
ParamSource = Excel.CurrentWorkbook(){[Name="ParameterTable"]}[Content],
ParamRow = Table.SelectRows(ParamSource, each ([Parameter Name] = ParameterName)),
//Assign value for return
Value=
if Table.IsEmpty(ParamRow)=true
then null
else if ColumnNum = "1"
then Record.Field(ParamRow{0},"Value1")
else if ColumnNum = "2"
then Record.Field(ParamRow{0},"Value2")
else null
in
Value
in
fnGetParameter
因此,基本上我可以指定参数名称和列号,当在其他Power Query查询中调用时,此函数将传递它。
示例调用如下:
let
PassedParameter = Expression.Evaluate("fnGetParameter{"ParamLabel","1"}",[fnGetParameter=fnGetParameter]),
Source = Sql.Database("ServerName", "Databasename", [Query="select * from table where Column1 = " PassedParameter" ])
in Source
我的问题在于我想将SQL查询保存到文本文件中并连接到该文本文件而不是将查询存储在Excel中。出于某种原因,当Power Query尝试调用fnGetParameter函数(它是工作簿中的用户定义函数)时,SQL查询似乎无法“看到”PQ UDF。
我这样做的主要原因(将SQL查询PQ保存到文本文件)是因为它使得在文本文件中更容易编辑查询,并且如果其他工作簿使用类似的查询,则可以避免多次更改查询。
思想?