在Hive中查找数据块

时间:2019-05-10 13:18:55

标签: hive

我有一张表格,其中包含由某些模块完成的一系列测量,我们称它们为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ł

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案:从模块名称中构建一个块标识符,并通过从全局行号中减去某个模块中的行号来构建一个数字。

块标识符是唯一的,并另外保留了模块中块的顺序:

right: 30px;

问候 Paweł