如何生成一个新列,其值基于一个列的分区,同时还基于另外两个列 (BigQuery) 的值?

How do I produce a new column with values based on a Partition of one column while also based on the values of two additional columns (BigQuery)?

我有一个 table 记录了带有时间戳的作业列表的所有不同状态。因此 ID 列有许多 ID,随着它们的状态变化出现多次,例如下面的 'xyz' 作业经历了几次状态变化。

JobId Status Timestamp
xyz pending 1:00
xyz reviewed 1:02
xyz cancelled 1:04
abc pending 4:30
abc active 5:30

我想添加一个名为 CurrentStatus 的第 4 列,它将显示每个 ID 的最新状态,所以最后 table 看起来像这样。

JobId Status Timestamp CurrrentStatus
xyz pending 1:00 cancelled
xyz reviewed 1:02 cancelled
xyz cancelled 1:04 cancelled
abc pending 4:30 active
abc active 5:30 active

到目前为止,我编写了以下查询来创建一个 LatestTimeStamp 列,该列打印出按每个 Id 分区的最新时间戳。

SELECT *, MAX(Timestamp) OVER(PARTITION BY JobId) AS LatestTimeStamp
  FROM `data.sample`
JobId Status Timestamp LatestTimeStamp
xyz pending 1:00 1:04
xyz reviewed 1:02 1:04
xyz cancelled 1:04 1:04
abc pending 4:30 5:30
abc active 5:30 5:30

它产生了上面的 table 但现在我如何使用该信息来获取实际状态而不是时间戳?或者是否有更有效的方法来为每个 ID 生成一个包含当前状态的列,可能使用相关查询或 CASE 语句?

我无法找出有效的查询,因此我们将不胜感激。

下面使用

select *, 
  first_value(Status) over(partition by JobId order by Timestamp desc) as CurrrentStatus
from your_table                

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