我有一张表格,其中包含由某些模块完成的一系列测量,我们称它们为N和W。 每行包含一个度量。 我想为每个测量分配一个唯一的块标识符,请参见下面的预期输出。
假设:表中的记录是根据时间和模块以某种顺序写入的,因此可以假定ROW_NUMBER()OVER(ORDER BY 1)传递了一个排序列。
如何在Hive中做到这一点?
预期输出:
+---------+-------+
| module | block |
+---------+-------+
| W | 1 |
| W | 1 |
| W | 1 |
| N | 2 |
| N | 2 |
| W | 3 |
| W | 3 |
| W | 3 |
+---------+-------+
样本数据:
DROP TABLE IF EXISTS so_sample;
CREATE TABLE so_sample (
module string
);
INSERT INTO TABLE so_sample
VALUES ("W"), ("W"), ("W"), ("N"), ("N"), ("W"), ("W"), ("W")
;
问候 Paweł
答案 0 :(得分:0)
我找到了一个解决方案:从模块名称中构建一个块标识符,并通过从全局行号中减去某个模块中的行号来构建一个数字。
块标识符是唯一的,并另外保留了模块中块的顺序:
right: 30px;
问候 Paweł