首页 > 解决方案 > 连接到 PostgreSQL 数据库时在 Power Query 中参数化源

问题描述

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

我尝试了以下方法:

定义一个查询“来自其他来源”/“空白查询”,命名SchemaIdParam

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

(名称“schemaid”在工作簿中定义。)

mytable定义一个名为“来自 PostgreSQL db”的查询

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

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

非常感谢我如何解决此问题的任何提示!

我想为模式名称使用​​命名范围的原因是我想以编程方式在 excel 之外设置模式名称。我对如何以另一种方式做到这一点的建议持开放态度。

标签: excelpostgresqlpowerquerym

解决方案


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

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

推荐阅读