在蜂巢中缩放列值在0和1之间

时间:2019-01-18 09:09:57

标签: hive hiveql

我有一个名为table1的表,其中包含以下列:-

ID  count1  count2
A   3       5
B   1       7
C   2       9

我需要将count1和count2列的值设置为0到1。我需要根据数据大小来执行此操作。决赛桌应如下所示:-

ID  count1  count2
A   1       0
B   0       0.5
C   0.5     1

我编写以下查询:-

select a.ID, 
(((a.count1-min(a.count1))/(max(a.count1)-min(a.count1))),
(((a.count2-min(a.count2))/(max(a.count2)-min(a.count2)))
from table1 as a;

此查询使我对列ID出现了错误分组。

请协助在hiveql中执行此操作。

1 个答案:

答案 0 :(得分:1)

这可以通过使用minmax窗口函数来完成。空的over()子句将计算该列中所有值的汇总。由于窗口函数不是聚合函数,因此无需group by

select ID, 
(count1-min(count1) over())/(max(count1) over()-min(count1) over()),
(count2-min(count2) over())/(max(count2) over() -min(count2) over())
from table1