【发布时间】:2021-06-28 06:49:41
【问题描述】:
我想将外部 PostgreSQL 数据库中的数据自动流式传输到我 GCP 帐户中的 Google Cloud Platform BigQuery 数据库中。到目前为止,我已经看到可以使用 EXTERNAL_QUERY() 函数查询外部数据库(MySQL 或 PostgreSQL),例如:
https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries
但要使其正常工作,数据库必须位于 GCP Cloud SQL 中。我试图查看从外部 PostgreSQL 流式传输到 Cloud SQL PostgreSQL 数据库有哪些选项,但我只能找到有关在一次性副本中复制它的信息,而不是流式传输: https://cloud.google.com/sql/docs/mysql/replication/replication-from-external
我希望这种流式传输到 BigQuery 的原因是我正在使用 Google Data Studio 从外部 PostgreSQL 创建报告,效果很好,但 GDS 只能接受来自 Google BigQuery 数据库的 SQL 查询参数。例如。如果我们有一个包含 1M 条目的表,并且我们希望用户添加一个 Google Data Studio 参数,这将变成:
SELECT * from table WHERE id=@parameter;
这意味着查询会更快,并且不会达到 Google Data Studio 中 100K 记录的限制。
在外部 PostgreSQL(只读访问)和 Google BigQuery 之间创建连接以便通过 BigQuery 查询时获得与查询外部 PostgreSQL 相同的实时结果的最佳方法是什么?
【问题讨论】:
-
如果您正在寻找将数据流式传输到 BigQuery,我不认为使用
EXTERNAL_QUERY()是要走的路。您为什么不直接将数据流式传输到 BigQuery,而不是计划将数据从 PostgreSQL 移动到 CloudSQL?这并不简单,但通过适当的数据流作业,您可以做到。也许为了更简单,您可以每 X 小时批处理一次。 -
EXTERNAL_QUERY的限制是什么?性能? -
性能将是最重要的,是的。但还有更多 - cloud.google.com/bigquery/docs/…。您需要实时数据吗?还是那不重要?您可以考虑构建一个管道来提取数据并加载到 BQ 中吗?
标签: postgresql google-bigquery google-data-studio