如何使用 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 流向现有记录插入嵌套数据的主要内容,如果未能解决你的问题,请参考以下文章