Hive запрос с указанием регистра - PullRequest
1 голос
/ 14 мая 2019

Я пытаюсь использовать поле в моих данных, называемое приоритетом, чтобы получить числовое значение для функции DATE_ADD.По сути, приоритет определяет, сколько дней до того, как проблема вышла из SLA.

Я пытаюсь использовать этот приоритет, говоря:

псевдокод - If priority=p0, DATE_ADD (date, INTERVAL 1 day) Else If priority=p1, DATE_ADD (date, INTERVAL 15 day)

Вот мой код, который я пытаюсь использовать:

SELECT 
    jira.jiraid as `JIRA / FR`,
    jira.priority as `Priority`,
    DATE_FORMAT(jira.created,"MM/dd/Y") as `Date Jira Created`,
    DATE_FORMAT(DATE_ADD(jira.created, INTERVAL 
        CASE jira.status 
            WHEN "P0" THEN 1
            WHEN "P1" THEN 15
            WHEN "P2" THEN 40
            WHEN "P3" THEN 70
        ELSE 70
    END day),"MM/dd/Y") as `Date when Out of SLA`
    FROM jira

Поддерживает ли hive этот тип операторов if / else?

1 Ответ

1 голос
/ 14 мая 2019

Вам не нужно использовать INTERVAL в Hive для добавления дней. date_add функция принимает целые дни. Рассчитайте интервал в подзапросе, это сработает и будет выглядеть чище:

select
      s.jiraid as `JIRA / FR`,
      s.priority as `Priority`,
      DATE_FORMAT(s.created,'MM/dd/Y') as `Date Jira Created`,
      DATE_FORMAT(DATE_ADD(s.created, s.days_interval),'MM/dd/Y') as `Date when Out of SLA`
 from
(
SELECT 
      j.jiraid,
      j.priority,
      j.created, 
      CASE j.status 
            WHEN 'P0' THEN 1
            WHEN 'P1' THEN 15
            WHEN 'P2' THEN 40
            ELSE           70
      END as days_interval
  FROM jira j
)s;

Хотя вы можете вычислить оператор case в функции date_add, поместив оператор case в качестве параметра функции, и он также должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...