连接到 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
即,我必须引用命名范围内的特定单元格。
使用 postgresql 的
我尝试了以下方法:
定义一个名为 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
即,我必须引用命名范围内的特定单元格。