如何使用 bigquery 流向现有记录插入嵌套数据

Posted

技术标签:

【中文标题】如何使用 bigquery 流向现有记录插入嵌套数据【英文标题】:How to insert nested data to an existing record using bigquery streaming 【发布时间】:2017-04-18 15:59:38 【问题描述】:

我正在尝试了解 bigQuery 并查看它是否符合我们的需求。 我们的基本要求之一是存储嵌套结构,使得嵌套部分需要与主记录分开存储。

例如 假设我们有一个员工的记录,在存储了该员工的主要数据后,假设一分钟后,另一条记录将与员工以前的工作地点一起到达(然后可能会到达另一条这样的记录)

所以我们需要存储第一条员工记录,然后更新结构以添加有关员工的详细信息,此详细信息也作为新记录插入,不会覆盖现有记录。

如何在 bigQuerY 中做到这一点? 假设我们可能有不同的数据来源?

【问题讨论】:

【参考方案1】:

将其存储在 BigQuery 中的首选和推荐方式是仅追加。这意味着您只能进行更新/删除,并且您会不断地更新新行。

通过拥有来自同一用户的行流,您需要以这样的方式编写查询以选择最后一行,以获得最新的配置文件。但是您拥有所有传入流的“版本控制”。

换句话说,您使用Streaming Insert 功能不断添加新行。然后你的 SQL 查询通常使用窗口函数来选择最后一行。

您不能更新一行,也不能将 BigQuery limits DML statements 追加到记录中,每个表为 96。

【讨论】:

另一个选项可能是维护包含各种信息的单独表,并根据员工 ID 将它们关联起来。分析函数可能很复杂,因为 OP 希望跨行组合信息。

以上是关于如何使用 bigquery 流向现有记录插入嵌套数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用现有时间戳在 BigQuery 中生成未嵌套的数组

如何使用java将复杂的动态嵌套json插入bigquery

使用 Golang 将嵌套数据插入 BigQuery

使用数组数组插入 Bigquery 表

在bigquery中以编程方式更新/插入数据

如何在展平嵌套字段后将数据​​从一个 bigquery 表流式插入到另一个表?