Масштабирование значений столбцов от 0 до 1 в улье - PullRequest
0 голосов
/ 18 января 2019

У меня есть таблица 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;

Этот запрос дает мне группу по ошибке относительно идентификатора столбца.

Пожалуйста, помогите выполнить эту операцию в hiveql.

1 Ответ

0 голосов
/ 18 января 2019

Это можно сделать с помощью оконных функций 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...