我在 Bigquery 中有一个表,每 30 分钟显示一次数据,我想每 5 分钟显示一次数据,目前我正在使用此查询用现有值填充空值
SELECT
SETTLEMENTDATE,DUID,
LAST_VALUE(SCADAVALUE ignore nulls) OVER (
PARTITION BY DUID ORDER BY SETTLEMENTDATE) AS SCADAVALUE from x
相反,是否可以进行线性插值,像这样
我的结算日期列是 5 分钟,SCADAVALUEORIGIN 列的值非常接近 30 分钟,否则为空,我想添加一列 SCADAINTERPOLATION,它将值均匀分布在两个 30 分钟的值之间,另一个问题是,当我每 5 分钟刷新一次数据时,最后一个值将在 (5,10,15,20,25) 分钟内显示 null,我希望我的解释很清楚
以下是 BigQuery 标准 SQL
#standardSQL
SELECT
TIMESTAMP_ADD(SETTLEMENTDATE, INTERVAL 5 * i MINUTE) AS SETTLEMENTDATE,
IF(i = 0, SCADAVALUEORIGIN, NULL) AS SCADAVALUEORIGIN,
SCADAVALUEORIGIN AS SCADAVALUE,
ROUND(SCADAVALUEORIGIN + IFNULL((next_value - SCADAVALUEORIGIN) / 6 * i, 0), 3) AS SCADAINTERPOLATION
FROM (
SELECT SETTLEMENTDATE, SCADAVALUEORIGIN,
LEAD(SCADAVALUEORIGIN) OVER(ORDER BY SETTLEMENTDATE) next_value,
FROM `project.dataset.table`
), UNNEST(GENERATE_ARRAY(0, 5)) i
如果适用于您问题中的样本数据 - 结果是
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)