更新 bigquery 中的有限行

Update limited rows in bigquery

我有一组数据举例

  A    B    C
---- ----- ----
 1   alpha  xxx    
 2    beta  vvv 
 2    beta  ccc
 2    beta  ttt
 3   Gama   zzz

现在我想用 B 列中的相同元素(这里是测试版)更改数据,但有限制控制

例子'''update table sometable.name set B = "lamda" where B= "beta" limit 2.'''

我想要的结果应该是这样的

  A    B    C
---- ----- ----
 1   alpha  xxx    
 2   lamda  vvv 
 2   lamda  ccc
 2    beta  ttt
 3   Gama   zzz

我在 bigquery 中尝试了很多,请您指导我。请注意,这只是一个示例,我的数据集很大。

考虑以下

select * except(flag) replace(if(flag, 'lamda', B) as B)
from (
  select *, B = 'beta' and row_number() over win <= 2 as flag
  from your_table
  window win as (partition by A order by if(B = 'beta', 0, 1))
)            

如果应用于您问题中的示例数据 - 输出为

如果您可以使用 C 列作为连接键,则以下似乎是可能的。

MERGE INTO sample t USING (
  SELECT * FROM sample 
   WHERE B = 'beta' QUALIFY ROW_NUMBER() OVER() <= 2
) s ON t.C = s.C 
WHEN MATCHED THEN UPDATE SET B = 'lambda';