Hive sql - 多个分区之间

Hive sql - between multiple partitions

我有一个按年、月、日划分的配置单元 table

CREATE TABLE t1 (
...
 )
PARTITIONED BY (
year INT,
month INT,
day INT'
)
STORED AS PARQUET;

我需要从中获取最后 7 days/partitions 的数据。找到如何获取最近 7 天数据的第一步,例如:

val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
val runDate = date
val runDay = LocalDate.parse(runDate.toString, formatter)
val runDayMinus7 = runDay.minusDays(7)

但后来我在桥下遇到了巨魔。有没有办法通过多个分区 select 这两个日期之间的数据?否则,有什么方法不需要将多个分区更改为单个分区 YYYYMMDD?

要么是scala,要么是hive。

提前致谢

我已经创建了下一个方法来解决这个问题。两个参数,日期和天数

  def dayFilter(date: LocalDate, days: Int): Column = {
   days match {
    case _ if days < 0 => lit(false)
    case 0 => (col("year") === date.getYear and
     col("month") === date.getMonthValue and
     col("day") === date.getDayOfMonth)
    case _ => (col("year") === date.getYear and
     col("month") === date.getMonthValue and
     col("day") === date.getDayOfMonth) or dayFilter(date.minusDays(1), days - 1)
   }
 }

如果我们导入Java LocalDate,那么我们需要getMonthValue。以防万一,我们使用 joda.time 然后 getMonthOfYear