[英]How to declare a variable in BigQuery and set it as an argument for EXTERNAL_QUERY?
I have some external data base connection in my BigQuery project How can I declare a variable to set it as an argument for EXTERNAL_QUERY I tried to write this我的 BigQuery 项目中有一些外部数据库连接 我如何声明一个变量以将其设置为 EXTERNAL_QUERY 的参数 我试着写这个
DECLARE req STRING DEFAULT 'SELECT * FROM tracker'; SELECT * FROM EXTERNAL_QUERY("tdv3.eu.tracker", req)
But if I run it like但是如果我像这样运行它
SELECT * FROM EXTERNAL_QUERY("tdv3.eu.tracker", '''SELECT * FROM tracker''')
it works well.它运作良好。 Where I'm wrong and how to fix it?
我错在哪里以及如何解决?
You can make it work by using EXECUTE IMMEDIATE as in below example您可以使用 EXECUTE IMMEDIATE 使其工作,如下例所示
DECLARE req STRING;
SET req = '"SELECT * FROM tracker"';
EXECUTE IMMEDIATE 'SELECT * FROM EXTERNAL_QUERY("tdv3.eu.tracker",' || req || ');'
You can use EXECUTE IMMEDIATE
:您可以使用
EXECUTE IMMEDIATE
:
DECLARE INPUT STRING;
DECLARE DSQL STRING;
SET INPUT = "'CSV'";
SET DSQL = 'SELECT * FROM EXTERNAL_QUERY("tdv3.eu.tracker", "SELECT * FROM INFORMATION_SCHEMA.ENGINES WHERE ENGINE=' || INPUT || '")';
EXECUTE IMMEDIATE DSQL;
BQ does not support passing a script variable to EXTERNAL_QUERY
. BQ 不支持将脚本变量传递给
EXTERNAL_QUERY
。
You must either use a literal string (that is, passing the query string directly to the query), or use a parameter (the error message that you are getting should mention that).您必须要么使用文字字符串(即将查询字符串直接传递给查询),要么使用参数(您收到的错误消息应该提到这一点)。
Such a parameterized query would look like:这样的参数化查询看起来像:
SELECT * FROM EXTERNAL_QUERY("tdv3.eu.tracker", @query);
Or using a positionnal parameter:或者使用位置参数:
SELECT * FROM EXTERNAL_QUERY("tdv3.eu.tracker", ?);
Note that query parameters are supported in bq
CLI, API or from your application client, but not by the Console of Classic UI.请注意,
bq
CLI API 或您的应用程序客户端支持查询参数,但经典 UI 的控制台不支持查询参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.