При возникновении ошибки - «Аргумент подключения в 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)'