我有一个基于 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 …Run Code Online (Sandbox Code Playgroud)