Excel 2016 Power Query - получение данных из словаря данных Oracle - PullRequest
0 голосов
/ 26 сентября 2018

У меня настроена электронная таблица Excel 2016 с источником данных Oracle db, и у меня уже есть несколько запросов, настроенных в 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 голосов
/ 26 сентября 2018

Я понял это!Отвечая на мой собственный вопрос на случай, если в будущем это пригодится кому-либо еще

На самом деле можно задать запрос 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-запроса напрямую таким образом работает нормально для представлений словаря данных:)

...