使用.Net data provider for postgresql,我想创建一个excel工作簿,该工作簿从给定的架构中加载一些表。使用excel工作簿中的命名范围设置架构,每个架构的表名都相同。
我尝试了以下操作:
将名为“ SchemaIdParam
”的查询“从其他来源” /“空白查询”定义为
let
rng= Excel.CurrentWorkbook(){[Name="schemaid"]}[Content]
in
rng
(在工作簿中定义了“ schemaid”这个名称。)
将名为“ mytable
”的“来自PostgreSQL数据库”的查询定义为
let
src = PostgreSQL.Database("xxx.myhost.com:5235", "my_database"),
tbl = src{[Schema=SchemaIdParam,Item="mytable"]}[Data]
in
tbl
现在这不起作用。错误消息指出:“ [[Expression.Error]:键和表中的行之间不匹配”(自己的翻译)。但是,如果我用引号中的文字值替换SchemaIdParam
,它将起作用。然后提供了正确的表格。
任何暗示我如何解决此问题的提示都非常感谢!
我要使用命名范围作为架构名称的原因是,我想以编程方式在excel之外设置架构名称。我非常乐意接受建议,以其他方式进行操作。
答案 0 :(得分:1)
可能是类型错误。尝试将SchemaIdParam
的值转换为文本,作为该查询的一部分,否则尝试
tbl = src{[Schema=Number.ToText(SchemaIdParam),Item="mytable"]}[Data]
答案 1 :(得分:0)
经过大量尝试,我找到了答案。我在定义e.g application_<cluster-timestamp>_<counter>
cluster-timestamp = The start-time of the "ResourceManager"
counter = Monotonically increasing counter for the application
时遇到问题。一个有效的定义是:
SchemaIdParam
即,我必须引用命名范围内的特定单元格。