小编典典

如何转发填充表中的空值

sql

我有一个大查询表,看起来像这样:![Table
[(https://ibb.co/1ZXMH71)如您所见,大多数值都是空的。我想向前填充这些空值,这意味着使用按时间排序的最后一个已知值。

显然,有一个名为FILL的函数但是我不知道如何使用它。

这是我尝试过发布到Web UI的查询:

SELECT sns_6,Time
FROM TABLE_PATH
FILL sns_6,-1,0 order: Time

我得到的错误是:语法错误:[3:6]处出现意外的标识符“ sns_6”,我想要的是获取一个新表,其中sns_6列填充有最后一个已知值。

另外,我希望所有列都可以使用此功能,但是由于fill仅支持单个列,因此,我现在必须遍历所有列。如果有人知道如何进行迭代,那将是一个很大的收获。


阅读 183

收藏
2021-04-07

共1个答案

小编典典

以下是BigQuery标准SQL

我想向前填充这些空值,这意味着使用按时间排序的最后一个已知值

#standardSQL
SELECT time
  LAST_VALUE(sns_1 IGNORE NULLS) OVER(ORDER BY time) sns_1,
  LAST_VALUE(sns_2 IGNORE NULLS) OVER(ORDER BY time) sns_2
FROM `project.dataset.table`

我希望所有列都发生这种情况

您可以在下面的行中添加所需填充的列数(显然,您需要替换sns_N为真实列的名称)

  LAST_VALUE(sns_N IGNORE NULLS) OVER(ORDER BY time) sns_N
2021-04-07