我刚刚开始使用BQ及其Node.js客户端,对于我的用例,我想插入或更新行取决于它们是否已经基于存储在其中一列中的唯一标识符存在。
我在节点客户端存储库中没有看到任何关于如何更新行而不是注入的示例。
换句话说,我想查询我的表看看是否有"id"字段已经匹配x.如果它存在,我想替换行,如果它不存在,我想注入它。
我该如何做到这一点?
您还可以对NodeJs
客户端使用Bigquery
合并查询:
MERGE dataset.Inventory T
USING dataset.NewArrivals S
ON T.product = S.product
WHEN MATCHED THEN
UPDATE SET quantity = T.quantity + S.quantity
WHEN NOT MATCHED THEN
INSERT (product, quantity) VALUES(product, quantity)
merge
查询允许更新元素,如果它存在于Bigquery
,否则插入它。
如果你感兴趣,我写了一篇文章,展示合并查询以及如何使用BigQuery
在批处理管道中删除重复项
我在这里找到了答案
所以显然BigQuery不是设计成像数据库一样的行为。不是更新现有行,而是继续将数据追加为新行,然后使用查询通过删除重复项来清理表,如下所示