Excel 2016 Power Query - 从 Oracle 数据字典中获取数据
Posted
技术标签:
【中文标题】Excel 2016 Power Query - 从 Oracle 数据字典中获取数据【英文标题】:Excel 2016 Power Query - Get data from Oracle data dictionary 【发布时间】:2018-09-26 14:29:01 【问题描述】:我已经设置了一个带有 Oracle db 数据源的 Excel 2016 电子表格,并且我已经在 PowerQuery 中设置了几个查询,以从特定架构中的表中获取数据,并且一切正常。
我现在需要从数据字典中获取一些数据——我需要在架构中找到与特定表关联的触发器的名称——所以我设置了一个查询来尝试从 user_triggers 中获取数据,但是到目前为止,我还不能让它工作。
这是我到目前为止设置的查询(SourceTableName 是对工作表中命名单元格的引用以获取表名):
let
STN = Excel.CurrentWorkbook()[Name="SourceTableName"][Content],
#"Changed Type" = Table.TransformColumnTypes(STN,"Column1", type text),
table_name = #"Changed Type"0[Column1],
Source = Oracle.Database("MY_DB", [HierarchicalNavigation=true]),
Schema = Source[Schema="MY_SCHEMA"][Data],
USER_TRIGGERS = Schema[Name="USER_TRIGGERS"][Data]
in
USER_TRIGGERS
只要表名是架构中的表之一,这对于我已经设置的其他查询非常有效,但是在上面的示例中引用数据字典视图似乎不起作用。
我在尝试运行此查询时遇到的错误是:
Expression.Error:键与表中的任何行都不匹配。 细节: 键=记录 表=表
有谁知道是否真的可以使用 powerquery 从数据字典中获取数据,以及是否需要进行更改才能使其正常工作?
提前感谢您对此的任何帮助!
干杯, 戴夫
【问题讨论】:
【参考方案1】:我想通了!回答我自己的问题,以防将来对其他人有用
实际上可以直接在 db 连接行中指定 SQL 查询,您可以在 SQL 中包含来自查询其他部分的变量名,如下所示:
let
STN = Excel.CurrentWorkbook()[Name="SourceTableName"][Content],
#"Changed Type" = Table.TransformColumnTypes(STN,"Column1", type text),
table_name = #"Changed Type"0[Column1],
upper_tn = Text.Upper(table_name),
Triggers = Oracle.Database("MY_DB", [HierarchicalNavigation=true, Query="select trigger_name from user_triggers where table_name = '" & upper_tn & "'"])
in
Triggers
以这种方式直接使用 SQL 查询似乎适用于数据字典视图:)
【讨论】:
还添加以防有人发现它有用:发现当我的查询返回 >1M 行时遇到此错误。以上是关于Excel 2016 Power Query - 从 Oracle 数据字典中获取数据的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的excel的Power Query没有按行分隔分选项
从 Excel 数据模型/Power Query 查询单个数据点(获取和转换数据)
Excel Power Query - 睡眠或等待命令等待 API 速率限制