Excel 2016 Power Query-从Oracle数据字典获取数据

时间:2018-09-26 14:29:02

标签: excel oracle powerquery data-dictionary

我已经建立了一个使用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 个答案:

答案 0 :(得分:0)

我知道了!回答我自己的问题,以防将来对其他人有用

实际上可以直接在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查询对于数据字典视图来说似乎很好用:)