连接到 PostgreSQL 数据库时在 Power Query 中参数化源

Parameterize Source in Power Query when connecting to PostgreSQL DB

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

我尝试了以下方法:

定义一个名为 SchemaIdParam 的查询 "from other sources" / "blank query" as

let
    rng= Excel.CurrentWorkbook(){[Name="schemaid"]}[Content]
in
    rng

(工作簿中定义了名称 "schemaid"。)

定义一个名为 mytable 的查询 "from PostgreSQL db" 为

let
    src = PostgreSQL.Database("xxx.myhost.com:5235", "my_database"),
    tbl = src{[Schema=SchemaIdParam,Item="mytable"]}[Data]
in
    tbl

现在这行不通了。错误消息指出:“[Expression.Error]:table 中的键和行之间不匹配”(自己翻译)。然而,如果我用引号中的文字值替换 SchemaIdParam ,它就会起作用。然后送出正确的table

非常感谢任何可以解决此问题的提示!

我想为架构名称使用命名范围的原因是我想以编程方式在 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

即,我必须引用命名范围内的特定单元格。