0

我需要在两个日期之间拆分日期,并从中忽略周六和周日。0.11.1 上的内置函数将有助于获取星期几,但如何确定是星期六还是星期天?有人对此有任何想法吗?我的预期输出如下所述。

输入:

用户起始日期

拉吉 2013 年 10 月 3 日 2013 年 10 月 8 日

詹姆斯 2013 年 10 月 4 日 2013 年 10 月 7 日

ETC..

预期输出:

拉吉 2013 年 10 月 3 日

拉吉 2013 年 10 月 4 日

拉吉 2013 年 10 月 7 日

拉吉 2013 年 10 月 8 日

詹姆斯 10/4/2013

詹姆斯 10/7/2013

4

2 回答 2

2

由于 Pig DateTime 对象实际上是以毫秒为单位的 Unix 纪元时间,因此可以使用开箱即用的 Pig 运算符轻松完成。

(DaysBetween(ToDate('10/3/2013','MM/dd/yyyy'),ToDate(0L)) + 4L) % 7    
  • 产生 0...6 范围内的长整数,其中 0 = 太阳,1 = 星期一,...等
  • 0L 代表 1/1/1970,星期四
  • 添加 4L 天使 0 = 星期日

满足自己,这是从 Unix 命令行:

$>  date -d '1/1/1970' +%w-%a   
4-Thu     
$>  date -d '10/3/2013' +%w-%a  
4-Thu

当然,如果您对 UDF 感到满意,并且这是一个常见的需求,那么这是最好的解决方案。

卡特海岸

于 2014-03-09T18:55:55.487 回答
0

您需要编写一个 UDF。您可以使用 Java 的Calendar类来执行此操作。

于 2013-10-03T16:41:45.010 回答