передача параметров в раздел не работает в улье

Я хочу передать значение раздела в качестве параметра.

SET runmdt = date_sub(current_date,5);

Приведенный ниже запрос работает нормально.

SELECT
cal_id,caller_name,location
from
amobe_tbl a
WHERE a.create_dt IN
(select DISTINCT create_dt from mt_call 
WHERE create_dt between date_sub(current_date,20) and current_date)
and a.create_dt=${hiveconf:runmdt};

При вставке в таблицу разделов не работает.

SET runmdt = date_sub(current_date,5);
INSERT OVERWRITE TABLE amobe_tbl PARTITION (create_dt=${hiveconf:runmdt})
SELECT
cal_id,caller_name,location
from
amobe_tbl a
WHERE a.create_dt IN
(select DISTINCT create_dt from mt_call 
WHERE create_dt between date_sub(current_date,20) and current_date)
and a.create_dt=${hiveconf:runmdt};

FAILED: строка ParseException 1:92 не может распознать ввод рядом с 'date_sub' '(' 'current_date' в константе create_dt - это тип данных date.

Помогите, пожалуйста.

Заранее спасибо.


person Rock    schedule 03.07.2017    source источник
comment
Вы получили свой ответ, но в любом случае предложение WHERE не имеет смысла (WHERE a.create_dt IN (...) and a.create_dt=${hiveconf:runmdt})   -  person David דודו Markovitz    schedule 03.07.2017


Ответы (1)


1

Переменные Hive - это не что иное, как механизм замены текста.
Замена выполняется перед синтаксическим анализом и выполнением.

hive> set hivevar:v1=se;
hive> set hivevar:v2=l;
hive> set hivevar:v3=ec;
hive> set hivevar:v4=t 1+;
hive> set hivevar:v5=2;
hive> ${hivevar:v1}${hivevar:v2}${hivevar:v3}${hivevar:v4}${hivevar:v5};
OK
3

2

Используйте динамические разделы

set hive.exec.dynamic.partition.mode=nonstrict;

SET runmdt = date_sub(current_date,5);
INSERT OVERWRITE TABLE amobe_tbl PARTITION (create_dt)
SELECT
cal_id,caller_name,location,${hiveconf:runmdt}
from
amobe_tbl a
WHERE a.create_dt IN
(select DISTINCT create_dt from mt_call 
WHERE create_dt between date_sub(current_date,20) and current_date)
and a.create_dt=${hiveconf:runmdt};
person David דודו Markovitz    schedule 03.07.2017
comment
Спасибо большое за вашу помощь - person Rock; 04.07.2017
comment
Пожалуйста. Убедитесь, что вы приняли ответ (отметив символ V слева от ответа) - person David דודו Markovitz; 04.07.2017