根据此处的文档,这现在是可能的:
数据通常分散在许多地方。您可以在 BigQuery 中存储一个客户表,而在 Cloud SQL 中存储一个销售表,并希望在一个查询中连接这两个表。
BigQuery Cloud SQL 联合使 BigQuery 能够实时查询驻留在 Cloud SQL 中的数据,而无需复制或移动数据。它支持 Cloud SQL 中的 MySQL(第 2 代)和 PostgreSQL 实例。
在初始的一次性设置之后,您可以使用新的 SQL 函数编写查询EXTERNAL_QUERY()
。
...
假设您需要将每个客户的第一个订单日期包含在我们在概述中描述的报告中。此数据目前不在 BigQuery 中,但在 Cloud SQL 中的可操作 PostgreSQL 数据库中可用。以下联合查询示例实现了这一点。
SELECT c.customer_id, c.name, SUM(t.amount) AS total_revenue,
rq.first_order_date
FROM customers AS c
INNER JOIN transaction_fact AS t ON c.customer_id = t.customer_id
LEFT OUTER JOIN EXTERNAL_QUERY(
'connection_id',
'''SELECT customer_id, MIN(order_date) AS first_order_date
FROM orders
GROUP BY customer_id''') AS rq ON rq.customer_id = c.customer_id
GROUP BY c.customer_id, c.name, rq.first_order_date;