从数组 Bigquery 中减去日期

Subtract dates from array Bigquery

BigQuery 中有一个 table,如下所示。

Table

我需要找出某个元素处于特定状态的天数。

例如在这种情况下
Element1 在 Status1 中停留 13 天,在 Status2 中停留 33 天。
Element2 在 Status1 中停留 32 天,在 Status2 中停留 38 天,在 Status3 中停留 21 天。
Element3在Status1停留了5天

我想创建一个 returns 天数的新列。本来就是这样。

Table2

事实是,状态数可以从 1 到 x(x = 状态总数的变量),因此对于每个元素,状态数是未知的。

考虑以下方法

select element, array(
  select as struct *, 
    date_diff(lead(date(entered_date)) over(order by entered_date), date(entered_date), day) days
  from t.statuses
) as statuses
from your_table t      

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