在Hive / Scala中选择使用相对日期的记录

时间:2017-11-03 18:38:38

标签: scala date apache-spark hive

有没有一种解决此问题的好方法:假设我想选择在给定分组的先前选定记录之前至少6个月的记录。

IE中。我有:

Col A   Col B   Date
1       A       2015-01-01 00:00:00
1       A       2014-10-01 00:00:00
1       A       2014-05-01 00:00:00
1       A       2014-01-01 00:00:00
1       B       2014-01-01 00:00:00
2       A       2015-01-01 00:00:00
2       A       2014-10-01 00:00:00
2       A       2014-01-01 00:00:00
2       A       2013-10-01 00:00:00

我想只选择相对于之前选择的日期至少相隔6个月的日期。即它将返回:

Col A   Col B   Date
1       A       2015-01-01 00:00:00
1       A       2014-05-01 00:00:00
1       B       2014-01-01 00:00:00
2       A       2015-01-01 00:00:00
2       A       2014-01-01 00:00:00

如果你想选择相对于最新的

,我很明显如何使用排序来做到这一点

(即:

SELECT b.date, b..., a.latest_date 
FROM(
SELECT *, row_number OVER PARTITION BY Col A, Col B ORDER BY Date as row_number
FROM table1) temp
WHERE row_number = 1) a
INNER JOIN TABLE 1 b
ON KEY)
WHERE datediff(date, latestdate)/365 > 0.5

左右

,但我有点不清楚你将如何相对于彼此做这件事。有没有办法在Hive / Scala中递归执行此操作?

1 个答案:

答案 0 :(得分:0)

嗨,有一个窗口滞后的概念,并且引导概念既是蜂巢又是火花,你可以在两者中完成这个任务。这是spark中的代码。

<span className="ms-Table-cell">
  <div>
    <IconButton
      onClick= { this._removeItemFromDetail }
      id={ detail.Id.toString() }
      iconProps={ { iconName: 'Cancel' } }
      title='Delete' />
  </div>  
</span>

private _removeItemFromDetail(e) {
    console.log("e.target",e.target);
}