简体   繁体   English

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

[英]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.

相关问题 Bigquery:如何声明数组变量并使用 select 语句设置数据? - Bigquery : how to declare an array variable and set data with a select statement? 如何在 BigQuery UDF 体内声明变量? - How to declare variable inside BigQuery UDF body? Google Cloud BQ 错误:无效的表值 function EXTERNAL_QUERY 无法从 MySQL 服务器获取查询架构 - Google Cloud BQ error: Invalid table-valued function EXTERNAL_QUERY Failed to get query schema from MySQL server 如何为外部查询构建动态查询参数? - How to build dynamic query argument for external query? Mercari Spanner 到 Bigquery - QUERY 中无法识别的参数 - Mercari Spanner to Bigquery - unrecognized argument in QUERY Python - 将 Python 变量用于 BigQuery Magic 查询结构(不是查询参数) - Python - Use Python variable for BigQuery Magic query structure (not query parameter) 如何查询 BigQuery 视图和表依赖项? - How to query BigQuery view and table dependencies? 如何在 BigQuery 的查询数组中获取查询数组? - How to get a query array inside a query array in BigQuery? 如何在 BigQuery 中使用 python UDF 或 json_extract 查询 json? - How to query json with python UDF or json_extract in BigQuery? 我们如何查看由 Google Cloud BigQuery 执行的查询计划? - How do we see a query plan executed by Google Cloud BigQuery?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM