连续值bigquery

Consecutive values bigquery

我得到了“类型”和“前一行”字段并尝试生成“连续值”字段

我尝试使用 count () over (partition by type , previouse row ) 但在“上一行”更改后该值不会重置

type previous row Consecutive values
X 1 2
X 1 1
X 0 3
X 0 2
X 0 1
X 1 2
X 1 1

我该如何解决这个问题?

为了实现您的目标 - 您需要了解如何对行进行排序。通常是某种日期或时间戳或任何其他允许订购的方式。因此,假设您有一个名为 ts 的额外列可用,它定义了该顺序 - 如下例所示

所以在这种情况下请考虑以下解决方案

select * except(change, grp),
  count(1) over(partition by type, grp order by ts desc) Consecutive_values
from (
  select *, countif(change) over(partition by type order by ts) grp
  from (
    select *, 
      ifnull(value != lag(value) over(partition by type order by ts), true) change
    from data
  )
)
# order by ts     

如果应用于示例数据 - 输出为