Excel 连接到PostgreSQL数据库时在电源查询中参数化源
使用for postgresql,我想创建一个excel工作簿,从给定的模式加载一些表。架构是使用excel工作簿中的命名范围设置的,每个架构的表名相同 我尝试了以下方法: 将名为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
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、 例如,我必须引用指定范围内的特定单元格