繁体   English   中英

是否可以将云 sql 表连接到 bigquery?

[英]Is it possible to join cloud sql table to bigquery?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM