我在Hive中有一个表,如下所示:
| 身份证|国家|时间戳|
| --------------|--------------|--------------|
| A|1|2022-01-01 23:01|
| A|0|2022-02-13 09:00|
| A|1|2022-04-04 11:21|
| A|0|2022-04-15 09:32|
| A|0|2022-04-27 10:05|
| B|1|2022-02-03 04:51|
| B|0|2022-02-14 05:01|
我需要输出两个新列,'actioned'和'completed'。列actioned将是state = 1的地方,而completed将是state = 0的地方。因此,从上表中,我想创建以下输出:
| 身份证|行动的|已完成|
| --------------|--------------|--------------|
| A|2022-01-01 23:01|2022-02-13 09:00|
| A|2022-04-04 11:21|2022-04-15 09:32|
| B|2022-02-03 04:51|2022-02-14 05:01|
做这件事最有效的方法是什么?
1条答案
按热度按时间6ss1mwsb1#
你可以使用窗口函数来识别在同一个
id
上从状态1
(已执行)到0
(已完成)的转换。下面是一个使用lead()
的方法: