hive - 在 hive 中缩放列值在 0 和 1 之间
问题描述
我有一个名为 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 中执行此操作。
解决方案
这可以通过使用min
和max
窗口函数来完成。空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
推荐阅读
- flutter - 如何在flip_card Widget Flutter中使用控制器?
- javascript - 添加两个不同数组的对象
- aws-lambda - 如何在 AWS lambda 函数中拆分视频以进行可恢复上传?
- python - 如何从mysql自动更新QTableWidget中的数据?
- python - 如何使用 Gurobi 在 Python 中将变量矩阵乘以系数矩阵
- html - 表单输入上的 html 表格
- sql-server - 来自文件系统的 SSIS 包导致登录错误,但在 SSISDB 中部署时运行
- django - Django 处理用户上传的文件
- python-3.x - 如何将一组数据帧转换为 numpy 4d 数组?
- javascript - 当表格的文本方向设置为 rtl 时,标题排序图标与文本重叠