Yog*_*evi 5 google-bigquery google-cloud-platform
我有一个基于 gcp 的环境。我在 gcp BigQuery 中使用标准 SQL 脚本,并在 cloudsql MySql 中使用联合查询。联合查询从cloudsql mysql数据库中选择数据。我需要根据依赖于 BigQuery 中数据的条件从 cloudsql mysql 数据库中选择数据。我在 gcp bigquery 中使用标准 sql 脚本中的变量来存储我从 bigquery 中选择的值。我想在 mysql 查询的 where 子句中获取此变量的值。请参阅以下示例,其中我从 BigQuery 选择日期并将其存储在变量“BQ_LAST_DATETIME”中。
DECLARE BQ_LAST_DATETIME DATETIME
SET BQ_LAST_DATETIME = (select max(date_created) from bq_my_dataset.bq_my_table);
Run Code Online (Sandbox Code Playgroud)
由于我使用 bigquery 联合查询从 cloudsql 数据库(https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries)读取数据,如下所示,我想使用我存储在中的值mysql 查询 where 子句中的变量“BQ_LAST_DATETIME”
SELECT * FROM EXTERNAL_QUERY("my-gcp-project.my-region.my-connection2-cloudsql", "select * from mysqlschema.mysql_table where where date_created = @BQ_LAST_DATETIME;" );
Run Code Online (Sandbox Code Playgroud)
请注意,在上面的查询中,我使用“@BQ_LAST_DATETIME”作为占位符来显示我想要实现的目标。我不确定是否可以直接使用 bigquery 脚本变量作为联合查询的“外部”查询部分中的查询参数。关于如何在联合查询中实现外部查询的参数化有什么建议,或者您是否知道我如何实现与我的意图类似的效果?
我实际上尝试按照所描述的进行操作。我在联合查询的“外部”查询部分中使用 bigquery 脚本变量作为查询参数。这里唯一的细微差别是,由于我正在处理日期,所以我执行了强制转换,并且由于日期变量实际上被视为字符串,所以我使用 mysql STR_TO_DATE 将其格式化回日期,如下所示
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') ;" );
Run Code Online (Sandbox Code Playgroud)
虽然解析器接受此查询,但它没有给出预期结果。基本上变量@BQ_LAST_DATE的值似乎没有按预期到达MySQL查询。
有谁知道我错过了什么?
非常感谢你的帮助
你可以试试EXECUTE IMMEDIATE
:
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 || ');'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3689 次 |
最近记录: |