是否可以将cloud sql table加入bigquery?

时间:2012-11-25 14:26:50

标签: google-bigquery google-cloud-sql

我在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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

根据文档here,现在可以这样做:

数据通常分散在许多地方。您可以存储客户表 在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;