Улей массив строк в массив int - PullRequest
0 голосов
/ 06 июня 2018

В Hive у меня есть таблица со столбцом в виде строкового типа, и она содержит набор чисел, скажем, отметок.Поэтому я хочу применить некоторые арифметические операции, такие как сложение, поэтому я использовал команду split, и она возвращает массив.Но я не могу применить дополнение к массиву, я думаю, что мне нужно преобразовать в массив, чтобы применить любые арифметические операции.Я использовал команду с указанием

select sum(a) from (select split(marks, ':') as a from tbl) b;

И я попытался преобразовать его в массив, но он не работал, выдав ошибку.Я попробовал следующие команды

select sum(a) from (select cast(split(marks, ':') as a array<int>) from table) b;
select sum(a) from (select cast(b) as array<int> from (select split(marks, ':') as b from tbl) c) d;

Пожалуйста, предложите мне решение для этого .. А также, как привести массив к массиву

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Вы можете сделать что-то вроде этого, надеюсь, это поможет

Select 
 sum(a), 
 sum(b), 
 sum(c), 
 sum(d)
From
(Select
  CAST(Split(marks,':')[0] AS bigint) AS a, 
  CAST(Split(marks,':')[1] AS bigint) AS b,
  CAST(Split(marks,':')[2] AS bigint) AS c, 
  CAST(Split(marks,':')[3] AS bigint) AS d
From
Table) split_data
Group by <some column>
0 голосов
/ 06 июня 2018

Вы можете использовать это:

select sum(cast(a as int)) from TableName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...