4

我在 bigquery 中有大量数据,我想做一些分析,通过加入我在云 sql 中的一小组数据来增强这些分析。我已经搜索但找不到两者之间的基于 sql 的桥梁。我在想这样的事情:

SELECT
  bqdb.table as a,
  csdb.table as b,
  csdb.table as c
FROM bigquery:project:bqdb.table as t1,cloudsql:project:csdb.table as t2
JOIN t1 ON t1.a=t2.b
WHERE a='foo'
GROUP BY a,b
ORDER BY c
4

2 回答 2

1

Cloud SQL 和 Google BigQuery 中的数据之间目前没有直接的桥梁。为了运行这样的查询,您需要通过 mysqldump 工具以 CSV 格式导出 Cloud SQL 表数据,然后将该数据作为新表导入 BigQuery。

于 2012-11-25T20:39:02.940 回答
1

根据此处的文档,这现在是可能的:

数据通常分散在许多地方。您可以在 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;
于 2020-07-15T15:17:59.263 回答