将批量数据插入大查询中而不将其保留在流缓冲区中

时间:2019-01-02 12:20:29

标签: node.js async-await google-bigquery synchronization

我的动机如下:

  1. 每半小时将批量记录插入到大查询中
  2. 删除记录(如果存在)

这些记录是会更改其状态的事务,这些状态从:未决,成功,失败和过期。

BigQuery不允许我删除仅在半小时前插入的行,因为它们仍在流式缓冲区中。

有人会建议我一些解决方法,因为我的表中出现了一些重复的行。

1 个答案:

答案 0 :(得分:1)

更好的做法是:

  • 将定期loads执行到登台表中(加载是一项免费操作)
  • 加载完成后,执行MERGE statement

您想要这样的东西:

MERGE dataset.TransactionTable dt
USING dataset.StagingTransactionTable st
ON dt.tx_id = st.tx_id
WHEN MATCHED THEN
UPDATE dt.status = st.status
WHEN NOT MATCHED THEN
INSERT (tx_id, status) VALUES (st.tx_id, st.status)