对于给定的月份,比如12月我想要以下行作为输出。有没有办法通过内置的Hive UDF实现这一目标?
1日 - 12月2016
2日 - 12月2016
。
。
。
30日 - 12月2016
31日 - 12月2016
我自己找到答案(其中dual是ORACLE中的虚拟表):
从中选择date_add('2016-11-01',cntr - 1) (选择explode(num)AS cntr from (选择阵列(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23, 24,25,26,27,28,29,30,31)来自双)temp1的数字 )temp2 其中cntr< = day(last_day('2016-11-01'));
答案 0 :(得分:0)
您的仓库中需要一个日历日期维度date_dim
表。此表应位于每个数据仓库中,以用作维度和类似您的情况。我建议你创建并加载这个表。您可以按年和月生成所需的行查询date_dim过滤。
例如,您可以在此处下载:http://www.kimballgroup.com/data-warehouse-business-intelligence-resources/books/microsoft-data-warehouse-dw-toolkit/或查找其他来源或生成您自己的来源
另请参阅有关date_dim生成的文章:https://www.codeproject.com/articles/647950/create-and-populate-date-dimension-for-data-wareho
答案 1 :(得分:0)
使用hive的date_format()
。假设你的date_field
变量。
select date_format(date_field,'dd-MMM-yyyy') from table1;
其中table1
是表名。