LAG 函数和 NULLS
LAG function and NULLS
所以我正在尝试使用 LAG 函数 (Google BigQuery),我的第一个值是 NULL。
我正在使用滞后函数来获得 lag_Value_1,lag_Value_2...
在这里:
SELECT ITEM,row_A,row_B,date,Value_1,Value_2,Value_3,Value_4,Value_5,
LAG(Value_1,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_1,
LAG(Value_2,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_2,
LAG(Value_3,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_3,
LAG(Value_4,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_4,
LAG(Value_5,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_5
FROM table
对填写第 2 项的 lag_Value_1,2,3,4,5.... 有帮助吗?
你想要滞后的三参数形式吗?
SELECT ITEM, row_A, row_B, date, Value_1, Value_2, Value_3, Value_4, Value_5,
LAG(Value_1, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_1,
LAG(Value_2, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_2,
LAG(Value_3, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_3,
LAG(Value_4, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_4,
LAG(Value_5, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_5
FROM table
三个参数是:
- 滞后值。
- 要返回的行数。
- 默认值。
我觉得下面是你要找的:
LAST_VALUE(Value_1 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_1,
LAST_VALUE(Value_2 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_2,
LAST_VALUE(Value_3 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_3,
LAST_VALUE(Value_4 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_4,
LAST_VALUE(Value_5 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_5
所以我正在尝试使用 LAG 函数 (Google BigQuery),我的第一个值是 NULL。
我正在使用滞后函数来获得 lag_Value_1,lag_Value_2... 在这里:
SELECT ITEM,row_A,row_B,date,Value_1,Value_2,Value_3,Value_4,Value_5,
LAG(Value_1,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_1,
LAG(Value_2,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_2,
LAG(Value_3,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_3,
LAG(Value_4,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_4,
LAG(Value_5,0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_5
FROM table
对填写第 2 项的 lag_Value_1,2,3,4,5.... 有帮助吗?
你想要滞后的三参数形式吗?
SELECT ITEM, row_A, row_B, date, Value_1, Value_2, Value_3, Value_4, Value_5,
LAG(Value_1, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_1,
LAG(Value_2, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_2,
LAG(Value_3, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_3,
LAG(Value_4, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_4,
LAG(Value_5, 1, 0) OVER (PARTITION BY ITEM ORDER BY row_A asc) as lag_Value_5
FROM table
三个参数是:
- 滞后值。
- 要返回的行数。
- 默认值。
我觉得下面是你要找的:
LAST_VALUE(Value_1 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_1,
LAST_VALUE(Value_2 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_2,
LAST_VALUE(Value_3 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_3,
LAST_VALUE(Value_4 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_4,
LAST_VALUE(Value_5 IGNORE NULLS) OVER (PARTITION BY ITEM ORDER BY row_A ASC) AS lag_Value_5