Параметризация источника в Power Query при подключении к БД PostgreSQL - PullRequest
1 голос
/ 28 июня 2019

Используя поставщика данных .Net для postgresql, я хотел бы создать книгу Excel, которая загружает некоторые таблицы из заданной схемы. Схема задается с использованием именованного диапазона в книге Excel, имена таблиц одинаковы для каждой схемы.

Я попробовал следующее:

Определить запрос "из других источников" / "пустой запрос" с именем SchemaIdParam как

let
    rng= Excel.CurrentWorkbook(){[Name="schemaid"]}[Content]
in
    rng

(имя "schemaid" определено в рабочей книге.)

Определить запрос "из PostgreSQL db" с именем mytable как

let
    src = PostgreSQL.Database("xxx.myhost.com:5235", "my_database"),
    tbl = src{[Schema=SchemaIdParam,Item="mytable"]}[Data]
in
    tbl

Теперь это не работает. Сообщение об ошибке гласит: «[Expression.Error]: нет соответствия между ключом и строками в таблице» (собственный перевод). Тем не менее, это работает, если я заменю SchemaIdParam на буквальное значение в кавычках. Затем доставляется правильный стол.

Любые советы, как я могу решить эту проблему, очень ценятся!

Причина, по которой я хочу использовать именованный диапазон для имени схемы, заключается в том, что я хочу программно, вне Excel, установить имя схемы. Я очень открыт для предложений, как сделать это по-другому.

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Это может быть ошибка типа. Попробуйте преобразовать значение SchemaIdParam в текст как часть этого запроса или попробуйте

tbl = src{[Schema=Number.ToText(SchemaIdParam),Item="mytable"]}[Data]
0 голосов
/ 28 июня 2019

После долгих попыток я нашел ответ. У меня была проблема с определением SchemaIdParam. Рабочее определение:

let
    rng= Excel.CurrentWorkbook(){[Name="jobid"]}[Content],
    value = rng{0}[Column1]
in
    value

Т.е. мне пришлось ссылаться на конкретную ячейку в названном диапазоне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...