如何覆盖 bigquery 现有表中的列值
Posted
技术标签:
【中文标题】如何覆盖 bigquery 现有表中的列值【英文标题】:How to overwrite column values in bigquery existing table 【发布时间】:2021-08-16 17:45:14 【问题描述】:我需要覆盖/更新 bigquery 中的列值。 下面解决方案的问题是每次需要上传少量记录时都会加载大量数据。 需要一个更优化的解决方案,只上传匹配的 id。
额外:如果它可以检查值是否相同会更好,否则它不会更新记录。 我认为它会随着负载减少更多
表 1:
name id value
jose 1 10
jack 5 15
lex 4 12
表 2:
id value
1 200
2 200
3 700
4 800
5 200
查询:
select
t1.name,
t1.id,
t2.value
from table 1 as t1
left join table2 as t2
on t1.id=t2.id
下面链接中的示例创建了一个新表,因此不起作用。它需要更新现有表中的值。
changing column values in bigquery
【问题讨论】:
【参考方案1】:你错了。
在 BigQuery 中,您支付所读内容,而不是所写内容。因此,如果您需要读取很多行进行比较,则每次读取您都需要付费,并且写入是免费的。因此,您应该使用 WHERE 逻辑减少您“阅读”的项目数量以降低成本。
【讨论】:
以上是关于如何覆盖 bigquery 现有表中的列值的主要内容,如果未能解决你的问题,请参考以下文章
Pyspark:如何将现有非空列的元组列表作为数据框中的列值之一返回
如何引用 BigQuery SQL 中先前行的列值,以便执行操作或计算?