Внешний_запрос с запросом Dynami c - Ошибка: аргумент подключения в EXTERNAL_QUERY должен быть литеральной строкой или параметром запроса - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь вызвать external_query с динамически созданной строкой запроса в BigQuery Web UI.

DECLARE extquery STRING;
SET extquery = "SELECT * FROM mytable;";
SELECT * FROM EXTERNAL_QUERY("my-external-conn", extquery);

Этот скрипт выдает ошибку

Query error: Invalid table-valued function EXTERNAL_QUERY
Connection argument in EXTERNAL_QUERY must be a literal string or query parameter

Невозможно сделать в BigQuery ? Как правильно передать запрос в качестве параметра?

1 Ответ

2 голосов
/ 18 апреля 2020

При возникновении ошибки - «Аргумент подключения в EXTERNAL_QUERY должен быть литеральной строкой или параметром запроса»
Итак, «должна быть литеральной строкой» версия будет

SELECT * FROM EXTERNAL_QUERY("my-external-conn", "SELECT * FROM mytable;");    

Это сложнее с «должен быть параметром запроса»
Примечание: параметры запроса и переменные сценария - это совершенно разные животные - вы можете проверить детали в соответствующих документах - но чтобы уточнить мою точку зрения: extquery в SET extquery = "SELECT * FROM mytable;"; это не параметр , а переменная сценария

Между тем, пользовательский интерфейс BigQuery (ни Classi c, ни консоль) не поддерживает параметризованные запросы, но вы все еще можете сделать это с помощью CLI, API или клиентов по вашему выбору

Ниже приведен пример для CLI

bq query \
--use_legacy_sql=false \
--parameter='extquery::SELECT * FROM mytable;' \
'SELECT * FROM EXTERNAL_QUERY("my-external-conn", @extquery)'  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...