根据另一列的先前值在 Hive 中创建新列
Creating new column in Hive based on previous value of another column
我有这样的数据:
Status Order
NULL 1
NULL 2
1 3
NULL 4
NULL 5
0 6
NULL 7
NULL 8
NULL 9
1 10
我正在尝试添加一个新列,用以前的数字填充空值,例如:
Status New
NULL NULL
NULL NULL
1 1
NULL 1
NULL 1
0 0
NULL 0
NULL 0
NULL 0
1 1
我正在使用 hive,并且可以访问 pyspark,但如果可能的话,我试图通过 SQL 解决。我研究了 window 函数(等级、Dense_rank、Row_number、滞后、领先)。有什么建议么?
你需要的是等价群。然后就可以使用window函数来填充数据了。一个组可以定义为最多包含给定值的非空值的数量。
这假定您有一列指定排序。
所以:
select t.*, max(status) over (partition by grp) as new_status
from (select t.*, count(status) over (order by ?) as grp
from t
) t;
?
用于指定排序的列。
我有这样的数据:
Status Order
NULL 1
NULL 2
1 3
NULL 4
NULL 5
0 6
NULL 7
NULL 8
NULL 9
1 10
我正在尝试添加一个新列,用以前的数字填充空值,例如:
Status New
NULL NULL
NULL NULL
1 1
NULL 1
NULL 1
0 0
NULL 0
NULL 0
NULL 0
1 1
我正在使用 hive,并且可以访问 pyspark,但如果可能的话,我试图通过 SQL 解决。我研究了 window 函数(等级、Dense_rank、Row_number、滞后、领先)。有什么建议么?
你需要的是等价群。然后就可以使用window函数来填充数据了。一个组可以定义为最多包含给定值的非空值的数量。
这假定您有一列指定排序。
所以:
select t.*, max(status) over (partition by grp) as new_status
from (select t.*, count(status) over (order by ?) as grp
from t
) t;
?
用于指定排序的列。