Excel 连接到PostgreSQL数据库时在电源查询中参数化源

Excel 连接到PostgreSQL数据库时在电源查询中参数化源,excel,postgresql,powerquery,m,Excel,Postgresql,Powerquery,M,使用for postgresql,我想创建一个excel工作簿,从给定的模式加载一些表。架构是使用excel工作簿中的命名范围设置的,每个架构的表名相同 我尝试了以下方法: 将名为SchemaIdParam的查询定义为“来自其他源”/“空白查询” let rng= Excel.CurrentWorkbook(){[Name="schemaid"]}[Content] in rng let src = PostgreSQL.Database("xxx.myhost.com

使用for postgresql,我想创建一个excel工作簿,从给定的模式加载一些表。架构是使用excel工作簿中的命名范围设置的,每个架构的表名相同

我尝试了以下方法:

将名为
SchemaIdParam
的查询定义为“来自其他源”/“空白查询”

let
    rng= Excel.CurrentWorkbook(){[Name="schemaid"]}[Content]
in
    rng
let
    src = PostgreSQL.Database("xxx.myhost.com:5235", "my_database"),
    tbl = src{[Schema=SchemaIdParam,Item="mytable"]}[Data]
in
    tbl
(工作簿中定义了名称“schemaid”。)

将名为mytable的查询“from PostgreSQL db”定义为

let
    rng= Excel.CurrentWorkbook(){[Name="schemaid"]}[Content]
in
    rng
let
    src = PostgreSQL.Database("xxx.myhost.com:5235", "my_database"),
    tbl = src{[Schema=SchemaIdParam,Item="mytable"]}[Data]
in
    tbl
现在这不起作用了。错误消息声明:“[Expression.error]:表中的键和行之间不匹配”(自己的翻译)。但是,如果我用引号中的文字值替换
SchemaIdParam
,它就会工作。然后,正确的表被交付

任何关于我如何解决这个问题的提示都非常感谢


我希望使用命名范围作为架构名称的原因是,我希望以编程方式在excel之外设置架构名称。我非常乐意接受关于如何以另一种方式执行此操作的建议。

这可能是一个类型错误。作为该查询的一部分,请尝试将
SchemaIdParam
值转换为文本,否则请重试

tbl = src{[Schema=Number.ToText(SchemaIdParam),Item="mytable"]}[Data]

经过多次尝试,我找到了答案。我在定义
SchemaIdParam
时遇到问题。工作定义是:

let
    rng= Excel.CurrentWorkbook(){[Name="jobid"]}[Content],
    value = rng{0}[Column1]
in
    value
i、 例如,我必须引用指定范围内的特定单元格