只查询最后 n 个分区

Only query last n partitions

我有一个按日期分区的 table (table1)。它可能看起来像这样:

╔════════════╦═══════╦══════╗
║    date    ║ col1  ║ col2 ║
╠════════════╬═══════╬══════╣
║ 2020-06-16 ║ Jeff  ║ 3    ║
║ 2020-06-16 ║ Bob   ║ 148  ║
║ 2020-06-16 ║ Karen ║ 101  ║
║ 2020-06-15 ║ Joy   ║ 9    ║
║ 2020-06-15 ║ Joe   ║ 33   ║
║ 2020-06-12 ║ Kevin ║ 48   ║
║ 2020-06-12 ║ Raj   ║ 100  ║
║ 2020-06-12 ║ Karen ║ 9    ║
║ ...        ║ ...   ║ ...  ║
╚════════════╩═══════╩══════╝

我想 运行 查询 SELECT count(*) FROM table1 group by col1 HAVING count(*) > 1 但假设我只想 运行 最后两个分区(日期 2020-06-162020-06-15).在 Hive 中有没有一种直接的方法可以做到这一点?换句话说,我只想在给定时间检查前 n 个分区。

我不确定这是否能解决您的问题,但您可以参考当前日期:

where date >= date_sub(current_date, -2)

尝试使用子查询获取 order bylimit 2 的两个最新日期:

SELECT count(*) 
FROM table1 
WHERE date IN (SELECT DISTINCT date FROM table1 ORDER BY date DESC LIMIT 2)
GROUP BY col1 
HAVING count(*) > 1