【问题标题】:How do you get 'event date > current date - 10 days) in HiveQL?您如何在 HiveQL 中获得“事件日期 > 当前日期 - 10 天”?
【发布时间】:2023-03-24 11:19:01
【问题描述】:

我正在整理一个每天都会刷新的查询,它需要从最近十个日期中提取记录。

我正在访问的表有一个带有 unix 时间戳的“xxdatetime”列和一个带有 yyyy-mm-dd 日期的“eventdate”列。

在 Impala 中,答案很简单:

where eventdate > to_date(days_sub(now(), 10))

我在 Hive 中使用了它的一个变体,但它失败了,因为我猜它正在扫描整个表并且这些表是 MASSIVE:

where datediff(cast(current_timestamp() as string), eventdate)=10

Hive SQL 中是否有一种轻量级的方法来按“今天 - 10 天”过滤 xxdatetime 或 eventdate 列?

【问题讨论】:

  • DATEDIFF(from_unixtime(unix_timestamp()),ts)

标签: sql hadoop hive hiveql impala


【解决方案1】:

Eventdate 是我的索引列,date_sub 是(字符串,要减去的天数),current_date 是当前 Hive yyyy mm dd。

    eventdate > date_sub(current_date, 5)

我不确定这是否是超轻量级,但它有效!

【讨论】:

    猜你喜欢
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2021-11-09
    • 2023-02-23
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    相关资源
    最近更新 更多