将流数据与 Dataflow SQL 中的动态 BigQuery 表连接起来

Posted

技术标签:

【中文标题】将流数据与 Dataflow SQL 中的动态 BigQuery 表连接起来【英文标题】:Join streaming data with a dynamic BigQuery table in Dataflow SQL 【发布时间】:2021-05-11 13:53:53 【问题描述】:

我有一个 Dataflow SQL 作业,它将流式 PubSub 与 BigQuery 表连接起来,并将结果写入 BigQuery 表。当我向表“us_state_salesregions”添加新记录(新的销售区域)时,新的销售区域在结果表中不可见。

只有在创建新的数据流作业后,新添加的 sales_region 才会在查询的结果表中可见。

SELECT tr.*, sr.sales_region
FROM pubsub.topic.`project-id`.transactions as tr
  INNER JOIN bigquery.table.`project-id`.dataflow_sql_dataset.us_state_salesregions AS sr
  ON tr.state = sr.state_code

我应该怎么做才能在查询结果中获取新添加的sales_region(不启动新的Dataflow Job)?

【问题讨论】:

【参考方案1】:

有界源读取(例如 BigQuery)被认为是静态的,不会在流式传输管道过程中重新读取。

如果您的边桌足够小,您可以设置 looping timers 定期重新读取您的 bigtable 并在此基础上加入。

【讨论】:

以上是关于将流数据与 Dataflow SQL 中的动态 BigQuery 表连接起来的主要内容,如果未能解决你的问题,请参考以下文章

将流转换为小批量以加载到 bigquery

将 BigQuery 的聚合具体化转储到 SQL 服务器、Dataflow 与 Airflow

在 Dataflow SQL 中解析属性

从 Dataflow 作业连接到 Cloud SQL

DataFlow编程模型与Spark Structured streaming

将流分组为 POJO 的正确方法