我有一个如下表:
WITH
table1 AS (
SELECT
TIMESTAMP '2016-10-18 2:51:45' AS ts,
'AB4' AS packId,
FALSE AS stat,
'x' AS position
UNION ALL
SELECT
TIMESTAMP '2016-10-18 2:54:11',
'AB4',
FALSE,
'x'
UNION ALL
SELECT
TIMESTAMP '2016-10-18 3:01:17',
'AB4',
FALSE,
'x'
UNION ALL
SELECT
TIMESTAMP '2016-10-18 3:05:42',
'AB4',
TRUE,
NULL
UNION ALL
SELECT
TIMESTAMP '2016-10-18 3:06:24',
'AB4',
FALSE,
'x'
UNION ALL
SELECT
TIMESTAMP '2016-10-18 3:06:36',
'AB4',
TRUE,
'y'
UNION ALL
SELECT
TIMESTAMP '2016-10-18 3:07:41',
'AB4',
FALSE,
'x')
SELECT
ts,
packId,
stat,
position,
LAG(position) OVER prev_pos AS previous_position1,
LAG(position,2) OVER prev_pos AS previous_position2
FROM
table1
WINDOW
prev_pos AS (
PARTITION BY
packId
ORDER BY
ts)
结果如下所示:
我想获得不为 null 的前一个值(从列位置),如结果表所示,我希望这些空值是前一个非空值,在本例中它们都是“x”。(有数千行具有空位置,因此当前行的最后一个非空位置可能是它之前的一千行)
总结:如何在 bigquery 中忽略 Lag 的空值?

