dynamicExcel Power Query

我有一个名为“ParameterTable”的Excel工作簿中的表。 在此表中,我存储了要传递给通过Excel Power Query执行的SQL查询的参数。

为了从工作簿中获取这些参数,我使用了一个名为“fnGetParameter”的函数。 function代码如下所示:

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保存到文本文件)使得在文本文件中更容易地编辑查询,并且避免了在其他工作簿使用类似查询时多次更改查询。

思考?