繁体   English   中英

如何在 BigQuery 中声明一个变量并将其设置为 EXTERNAL_QUERY 的参数?

[英]How to declare a variable in BigQuery and set it as an argument for EXTERNAL_QUERY?

我的 BigQuery 项目中有一些外部数据库连接 我如何声明一个变量以将其设置为 EXTERNAL_QUERY 的参数 我试着写这个

DECLARE req STRING DEFAULT 'SELECT * FROM tracker'; SELECT * FROM EXTERNAL_QUERY("tdv3.eu.tracker", req)

但是如果我像这样运行它

SELECT * FROM EXTERNAL_QUERY("tdv3.eu.tracker", '''SELECT * FROM tracker''')

它运作良好。 我错在哪里以及如何解决?

您可以使用 EXECUTE IMMEDIATE 使其工作,如下例所示

DECLARE req STRING;
SET req = '"SELECT * FROM tracker"';
EXECUTE IMMEDIATE 'SELECT * FROM EXTERNAL_QUERY("tdv3.eu.tracker",' || req || ');'

您可以使用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 不支持将脚本变量传递给EXTERNAL_QUERY

您必须要么使用文字字符串(即将查询字符串直接传递给查询),要么使用参数(您收到的错误消息应该提到这一点)。

这样的参数化查询看起来像:

SELECT * FROM EXTERNAL_QUERY("tdv3.eu.tracker", @query);

或者使用位置参数:

SELECT * FROM EXTERNAL_QUERY("tdv3.eu.tracker", ?);

请注意, bq CLI API 或您的应用程序客户端支持查询参数,但经典 UI 的控制台不支持查询参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM