动态Excel电源查询

时间:2016-09-01 22:23:43

标签: excel powerpivot powerquery

我在名为“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保存到文本文件)是因为它使得在文本文件中更容易编辑查询,并且如果其他工作簿使用类似的查询,则可以避免多次更改查询。

思想?

0 个答案:

没有答案