我们在Bigquery中有两个表,一个包含我们的主要数据,另一个将待处理的更新流式传输到其中,这些表将使用计划的查询来应用。 一旦合并到目标表中,有一种方法可以使用DML删除源表中的记录(待更新)。
根据我在网上可以找到的文档,我无法在BQ中导航重复/嵌套的记录。我们的数据是重复记录的4个层次,每个给定层次的每个条目都有一个ID字段。我们必须找到最里面的子记录,并更新其中的一些字段。
我尝试编译发现的示例,但无法弄清楚如何正确地为每个孩子进行子选择。
data_table中的主表条目示例
a.a_id: '123',
a.a_children: [
b.b_id: '1234',
b.b_children: [
c.c_id: '12345',
c.c_children: [
event_id: 'abc',
sold: false,
cost: 0
]
]
]
来自updates_table的示例更新条目
a_id: '123', b_id: '1234', c_id: '12345', event_id: 'abc', sold: true, cost: 1.23
每个子级字段可能有多个条目,但是更新记录应唯一地标识c.children中的一个条目并对其进行更新,而不会影响或删除其对等项。
我还尝试了一种UDF,该UDF将接受顶级数组并查找+修改底部字段,但是我无法获得udf签名以完全匹配,并且BigQuery不会打印完整的错误消息(截断长消息)-因此我无法正确定义我的udf签名。
更新查询应仅使用匹配的父项a_id,b_id,c_id和event_id值更新给定的c.children条目,而不会影响其他现有条目或删除存在但我们未更新的其他字段。