ваши требования не очень понятны в вопросе.Также кажется, что эта функция 'C_II.Common.FN_COM_DATEToYearMonth' специфична для вашего проекта и не является стандартной функцией сервера sql.
Позволяет разбить ее поэтапно:
Если мы запустимнижеприведенные операторы на сервере sql:
DECLARE @Anchor_DT as DATE =EOMONTH(Getdate(),-1);
select @Anchor_DT;
Дата будет указана как: 2019-06-30, тогда как преобразование улья, которое вы для этого сделали, неверно.
select last_day(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'))
Это дастпоследний день текущего месяца - «2019-07-31», поэтому правильное и эквивалентное покрытие для сервера sql будет выглядеть следующим образом:
select DATE_SUB(current_date(),DAY(current_date()));
Дата будет возвращена как: «2019-06-30».
Последние два утверждения в вашем вопросе были не очень ясны, но похоже, что вы ожидаете ниже конверсии.
select date_format('${hiveconf:anchor_dt}','yyyy-MM');
Он вернется как: 2019-06
"DECLARE @StartYearMonth as INT =ISNULL(@StartYearMonth_Inp,C_II.Common.FN_COM_DATEToYearMonth(DATEADD(MM,-@ReloadMonths+1,@Anchor_DT)));"
Я преобразовал вышеупомянутое утверждение в sql server, как показано ниже:
select format((DATEADD(MM,-@ReloadMonths+1,@Anchor_DT)),'yyyy-MM');
Это вернет дату в sql server как: 2018-04
Ответ на ваш вопрос: создайте скрипт ульяи сохраните его в папке hdfs. (testdatehive.hql)
select date_format('${hiveconf:anchor_dt}','yyyy-MM');
select date_format(add_months('${hiveconf:anchor_dt}',-${hiveconf:reloadMonths}+1),'yyyy-MM');
Сценарий оболочки:
#!/bin/bash
#Declare integer variable
declare -i reloadMonths=15
echo $reloadMonths
echo "Executing the hive query - get anchor date and store it in shell variable"
anchor_dt=$(hive -e "select DATE_SUB(current_date(),DAY(current_date()));")
echo $anchor_dt
echo "Pass anchor_date & reloadMonths to hive script"
hive --hiveconf anchor_dt=$anchor_dt --hiveconf reloadMonths=$reloadMonths -f hdfs://hostname/user/vikct001/dev/hadoop/hivescripts/testdatehive.hql
echo "Executing the hive query - ends"
Вот ваш вывод оболочки:
15
Executing the hive query - get anchor date and store it in shell variable
2019-06-30
Pass anchor_date & reloadMonths to hive script
2019-06
2018-04
Дайте мне знать, если это работает.