有没有办法让 Pub/Sub -> Dataflow -> BigQuery 模板来处理每条消息的多个记录?

Is there a way to get the Pub/Sub -> Dataflow -> BigQuery template to cope with multiple records per message?

我有一些应用程序向 Pub/Sub 发布消息,每条消息将包含一个或多个事件。例如

{
  ...pub/sub headers...
  "data": "{\"event\":\"event1\",\"key1\":\"value1\",\"key2\":\"value2\"}\n{\"event\":\"event2\",\"key1\":\"value1\",\"key2\":\"value2\"}\n{\"event\":\"event3\",\"key1\":\"value1\",\"key2\":\"value2\"}"
}

我想在 BigQuery 中得到如下数据:

event  | key1   | key2
event1 | value1 | value2
event2 | value1 | value2
event3 | value1 | value2

我需要将这些事件存储在 BigQuery 中,可用的模板看起来应该很合适。但是,我陷入了问题的“更多”事件部分。

我有一个非常简单的 Javascript UDF,它对入站消息进行了一些预处理,但我终究无法弄清楚格式会产生什么(如果有的话) Dataflow 作业的其余部分对该 UDF 的输出表示要保存到 BigQuery 中的多条记录这一事实感到满意。

是否可以在不创建自定义数据流作业的情况下实现我的尝试?

在 PubSub to Bigquery 数据流模板中,它取一个条目并写入 1 个对应的行。你不能扇出行数(我没试过,但在代码中,这似乎是不可能的)。

您可以构建自定义数据流(您可以从 existing template 开始。

或者,您可以 post 使用 bigquery 查询处理数据流管道,这是我的首选方式。