У меня есть таблица Hive, и мне нужно выполнить запрос, аналогичный приведенному ниже, для различных значений параметров date
, identifier1
, identifier2
, lower
и upper
и объединить результаты вместе .
Select
col1,
col2,
new_time,
sum(col3),
case
when "date" between date1 and date2 then 'No'
when "date" between date3 and date4 then 'Yes'
end as date_group,
case when "date" < e then 'test1' else 'test2' end as test_group,
'identifier1' as ID,
'identifier2' as ID2
FROM Table1
WHERE (new_time between time1 and time2)
AND (tag between 'lower' and 'upper')
GROUP BY
col1,
col2,
new_time,
case
when "date" between date1 and date2 then 'No'
when "date" between date3 and date4 then 'Yes'
end,
case when "date" < e then 'test' else 'test2' end
Моя первоначальная идея состояла в том, чтобы создать приведенную ниже таблицу параметров и l oop через каждую строку, которая содержит комбинацию значений параметров и объединяет результаты.
+------------+-------------+-------------+--------+-------+
| date | identifier1 | identifier2 | lower | upper |
+------------+-------------+-------------+--------+-------+
| 2019-05-12 | 1 | A | 10 | 20 |
| 2019-07-10 | 2 | B | 30 | 40 |
| 2019-04-10 | 3 | C | 60 | 70 |
| 2019-04-11 | 4 | D | 423 | 500 |
| 2019-07-10 | 5 | E | 85 | 88 |
+------------+-------------+-------------+--------+-------+
Две проблемы Я не уверен, как go об этом, и я не уверен, разрешает ли hiveql циклы. Я бы предпочел решение для улья, но решение SQL может сработать, если я смогу переместить свою промежуточную таблицу в реляционную базу данных. Решение будет эквивалентно приведенному ниже запросу объединения, в котором выделены значения параметров.
Любая помощь с решением приветствуется, спасибо.