【问题标题】:Excel 2016 Power Query - Get data from Oracle data dictionaryExcel 2016 Power Query - 从 Oracle 数据字典中获取数据
【发布时间】: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 从数据字典中获取数据,以及是否需要进行更改才能使其正常工作?

提前感谢您对此的任何帮助!

干杯, 戴夫

【问题讨论】:

    标签: excel oracle powerquery data-dictionary


    【解决方案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 行时遇到此错误。
    猜你喜欢
    • 1970-01-01
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    相关资源
    最近更新 更多