【发布时间】:2019-12-09 04:38:22
【问题描述】:
我需要使用派生列中的前一个值来获得同一列的下一个结果。
每个名字的第 1 次出现默认为 1
派生列 = num(i) + 派生 (i-1)
Name, Num, derived
A 0 1
A 1 2
A 0 2
B 0 1
B 0 1
B 1 2
C 0 1
C 0 1
D 1 1
D 1 2
D 1 3
下面是我的一半代码——使用了窗口延迟功能但无法实现
spark.sql("""
select
z.name as name,
z.num as num,
case
when z.row_num='1' then '1'
else (lag(num) over(partition by z.name order by name))
end as derived
from
(select name,num,row_number() over(partition by name order by name) as row_num
from result)z""").show()
【问题讨论】:
-
能否也提供原始结果表?见meta.stackoverflow.com/questions/333952/…
-
你用的是mysql还是hive?
-
@GMB - 我正在使用 Hive
标签: hive apache-spark-sql