Hive 在配置单元中,使用COALESCE将空值替换为相同的列值
我想用我想得到结果的同一列中的值替换特定列的null值 我在下面试过Hive 在配置单元中,使用COALESCE将空值替换为相同的列值,hive,Hive,我想用我想得到结果的同一列中的值替换特定列的null值 我在下面试过 select d_day, COALESCE(val, LAST_VALUE(val, TRUE) OVER( ORDER BY d_day ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) as val from data_table 一种方法是使用两个窗口功能,下面是一个示例: with tmp_table as ( sele
select
d_day,
COALESCE(val, LAST_VALUE(val, TRUE)
OVER( ORDER BY d_day ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW))
as val from data_table
一种方法是使用两个窗口功能,下面是一个示例:
with tmp_table as (
select 1 as ts, 3 as val
union all
select 2 as ts, NULL as val
union all
select 3 as ts, NULL as val
union all
select 4 as ts, 4 as val
union all
select 5 as ts, NULL as val
union all
select 6 as ts, 5 as val
union all
select 7 as ts, 6 as val
)
, rank_table as (
select *, SUM(val) OVER (ORDER BY ts ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as rnk
from tmp_table
)
select *, max(val) over (partition by rnk)
from rank_table
那么你的情况呢
with rank_table as (
select *, SUM(val) OVER (ORDER BY d_day ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as rnk
from your_table
)
select *, max(val) over (partition by rnk)
from rank_table
请记住,d_日前的第一批订单将使您的作业在单个减速机上运行,因此,如果您的数据非常大,则可能需要一些时间才能完成