В моем коде свиньи переменная event_date вычисляется следующим образом:
SUBSTRING(case when join_start_ts is NULL or TRIM(join_start_ts)=='' then 'null' else join_start_ts end,0,10) as event_date;
Где event_date выглядит следующим образом (например,): 2018-04-30 00: 00: 00.0 (ПРИМЕЧАНИЕ: все часы, sec, min должен быть равен нулю)
В таблице DDL (где переменная event_date сохраняется после выполнения расчета) переменная event_date определяется как:
........
,event_date timestamp
)
PARTITIONED BY (data_input_date string)
stored as orc
location
'${hiveconf:s3bucket}/${hiveconf:fact_path}/${hiveconf:join_failure_fact}/'
TBLPROPERTIES ("orc.compress"="snappy");
При выполнении вычисления (какпоказано выше) Я только хочу изменить формат event_date на datetime таким образом, чтобы все его часы, минуты, секунды были равны нулю.
Для этого я попробовал 2 вещи:
- Используя функцию todate () вне SUBSTRING, но это не поддерживается в Pig.Если бы не было SUBSTRING, то я мог бы использовать функцию ToDate.
Я использовал этот метод вычисления ниже, и используя его, event_date приходит в формате datetime, но выглядит так (например,): 2018-04-30 17: 03: 50.798 (я хочу, чтобы все часы, секунды, минуты были равны нулю)
(case when join_start_ts is NULL or TRIM(join_start_ts)=='' then NULL else ToDate(join_start_ts) end) as eventdate;
Что я долженсделать так, чтобы при вычислении переменной event_date он выглядел как 2018-04-30 00: 00: 00.0 и был в формате datetime?