我试图在我的数据中使用一个称为优先级的字段,以驱动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语句?
答案 0 :(得分:1)
您无需在Hive中使用INTERVAL
来添加日期。 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;
尽管您可以在date_add函数中计算case语句,但是将case语句作为函数参数放置也应该起作用。