【问题标题】:Show date ranges for each unique value of a column (HIVE-QL Query)显示列的每个唯一值的日期范围(HIVE-QL 查询)
【发布时间】:2020-12-30 10:17:19
【问题描述】:

我有一个这样的 HIVE 表(仅显示数千行中的前 5 行):

date          metric          timestamp          value
2020-06-18    cpu_mem     2020-08-15 00:05:00      10
2020-10-18    cpu_mem     2020-08-15 00:10:00      15
2020-22-18    gpu_mem     2020-08-15 00:15:00      12
2020-26-18    cpu_mem     2020-08-15 00:20:00      10
2020-29-18    threads     2020-08-15 00:25:00      05

我想显示列的每个唯一指标的日期范围。结果如下:

unique_metrics      date_range(min/max)
cpu_mem             2019-08-10 00:05:00 - 2020-02-15 00:05:00
gpu_mem             2020-08-15 00:05:00 - 2020-09-10 00:15:00
threads             2018-06-09 00:05:00 - 2020-08-15 00:06:00

我只是展示日期的最小值和最大值示例。因此,查询将仅返回指标的唯一名称以及这些唯一指标的日期的最小值和最大值。

类似:

SELECT metric, timestamp FROM table WHERE timestamp >= MIN(timestamp) AND timestamp <= MAX(timestamp) GROUP BY metric; 

但显然这是不对的,因为我不想在给定范围之间进行选择,我只想知道每个唯一指标的范围是多少。

【问题讨论】:

  • 您的数据和结果似乎不匹配。例如,2019-08-10 00:05:00 来自哪里的指标 cpu_mem
  • @GMB 有数千行,因此我的示例中不会显示日期的最小值和最大值。但这些都是我想查询的。

标签: sql datetime max hiveql min


【解决方案1】:

因此,查询将仅返回指标的唯一名称以及这些唯一指标的日期的最小值和最大值。

你只是想要聚合吗?

select metric, min(timestamp) min_timestamp, max(timestamp) max_timestamp
from mytable
group by metric

【讨论】:

  • 是的,谢谢。理想情况下,它会在另一列中显示一个数字作为范围。例如,最小值和最大值之间的天数。
  • 没关系,我找到了 datediff 的范围。一切都好,再次感谢。
  • @Cyber​​netic: 就datediff(max(timestamp), min(timestamp))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多