只查询最后 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-16
和 2020-06-15
).在 Hive 中有没有一种直接的方法可以做到这一点?换句话说,我只想在给定时间检查前 n 个分区。
我不确定这是否能解决您的问题,但您可以参考当前日期:
where date >= date_sub(current_date, -2)
尝试使用子查询获取 order by
和 limit 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
我有一个按日期分区的 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-16
和 2020-06-15
).在 Hive 中有没有一种直接的方法可以做到这一点?换句话说,我只想在给定时间检查前 n 个分区。
我不确定这是否能解决您的问题,但您可以参考当前日期:
where date >= date_sub(current_date, -2)
尝试使用子查询获取 order by
和 limit 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