首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GCP BigQuery联邦查询中使用查询参数

如何在GCP BigQuery联邦查询中使用查询参数
EN

Stack Overflow用户
提问于 2021-02-01 23:30:47
回答 1查看 668关注 0票数 1

我有一个基于gcp的环境。我在gcp BigQuery中使用标准SQL脚本,并对cloudsql MySql使用联邦查询。联邦查询从cloudsql mysql数据库中选择数据。我需要根据依赖于BigQuery中数据的条件从cloudsql mysql数据库中选择数据。我在gcp bigquery中使用标准sql脚本中的变量来存储从bigquery中选择的值。我想在mysql查询的where子句中计算这个变量的值。参见下面的示例,在该示例中,我从BigQuery中选择一个日期并将其存储在变量"BQ“中

_

最后

_

DATETIME“。

代码语言:javascript
复制
DECLARE BQ_LAST_DATETIME DATETIME
    SET BQ_LAST_DATETIME = (select max(date_created) from bq_my_dataset.bq_my_table);

由于我使用bigquery联邦查询从cloudsql数据库读取数据(

https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries

),我想使用我存储在变量"BQ“中的值

_

最后

_

mysql查询where子句中的“DATETIME”

代码语言:javascript
复制
SELECT * FROM EXTERNAL_QUERY("my-gcp-project.my-region.my-connection2-cloudsql", "select * from mysqlschema.mysql_table where where date_created = @BQ_LAST_DATETIME;" );

请注意,在上面的查询中,我使用了"@BQ

_

最后

_

我不确定我是否可以直接使用bigquery脚本变量作为联邦查询的“外部”查询部分的查询参数。有什么建议可以在联邦查询中实现外部查询的参数化吗?或者你是否知道我如何才能达到与我的意图相似的效果?

实际上,我试着按照描述的那样去做。我使用bigquery脚本变量作为联邦查询的“外部”查询部分的查询参数。这里唯一的细微差别是,由于我处理的是日期,所以我执行了强制转换,而且由于日期变量实际上被视为字符串,因此我使用mysql STR将其格式化为date

_

_

日期如下

代码语言:javascript
复制
DECLARE BQ_LAST_DATETIME DATETIME
    SET BQ_LAST_DATETIME = (select max(date_created) from bq_my_dataset.bq_my_table);
    SET BQ_LAST_DATE= CAST(BQ_LAST_DATETIME  AS DATE);
    SELECT * FROM EXTERNAL_QUERY("my-gcp-project.my-region.my-connection2-cloudsql", "select * from mysqlschema.mysql_table where where date_created =  STR_TO_DATE(@BQ_LAST_DATE,'%Y-%m-%d') ;" );

虽然此查询被解析器接受,但它没有给出预期的结果。基本上,变量@BQ的值

_

最后

_

日期似乎未按预期到达MySQL查询。

有人知道我错过了什么吗?

非常感谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-02 21:48:38

你可以试试

代码语言:javascript
复制
DECLARE BQ_LAST_DATETIME STRING;
DECLARE DSQL STRING;
SET BQ_LAST_DATETIME = 'SELECT max(date_created) from bq_my_dataset.bq_my_table';
SET DSQL = '"select * from mysqlschema.mysql_table where date_created = (' || BQ_LAST_DATETIME || ')"';
EXECUTE IMMEDIATE 'SELECT * FROM EXTERNAL_QUERY("my-gcp-project.my-region.my-connection2-cloudsql",' || DSQL || ');'
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65995449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档