从数组 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
如果应用于您问题中的示例数据 - 输出为
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
如果应用于您问题中的示例数据 - 输出为