Hive 在配置单元中,使用COALESCE将空值替换为相同的列值

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

我想用我想得到结果的同一列中的值替换特定列的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 (
  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_日前的第一批
订单将使您的作业在单个减速机上运行,因此,如果您的数据非常大,则可能需要一些时间才能完成