gpt4 book ai didi

hadoop - 聚合条件存储在另一个表中的数据

转载 作者:行者123 更新时间:2023-12-02 18:57:05 25 4
gpt4 key购买 nike

我有两张 table 。对于表 2 中的每个日期和类别对,我想计算从那天开始计算的该类别的过去一周和两周的记录计数。
表 1

| DATE         |Category |
|--------------|---------|
|2018-10-01 |ABC1 |
|2018-10-03 |ABC1 |
|2018-10-05 |ABC2 |
|2018-10-07 |ABC1 |
|2018-10-08 |ABC1 |
|2018-10-11 |ABC2 |
|2018-10-16 |ABC1 |
|2018-10-19 |ABC2 |
|2018-10-20 |ABC1 |
|2018-10-22 |ABC2 |
|2018-10-30 |ABC1 |
表2
| Category     |DATE           |
|--------------|---------------|
|ABC1 |2018-10-30 |
|ABC2 |2018-10-24 |
|ABC1 |2018-10-23 |
|ABC2 |2018-10-21 |

最终结果应该类似于
| Category     |DATE           |past_week  | past_2_weeks  |
|--------------|---------------|-----------|---------------|
|ABC1 |2018-10-30 |1 |3 |
|ABC2 |2018-10-24 |1 |1 |
|ABC1 |2018-10-23 |2 |2 |
|ABC2 |2018-10-21 |1 |1 |
我知道这可以在 中实现SQL 使用相关的内联子查询,但 hive 没有那个能力。有没有优化的方法来做到这一点?
注意 数据集非常大,例如table1有超过500000行,table2有大约20000行。还有许多其他类别可用(~160)。我只想向您展示这些表格的外观。

最佳答案

您可以在 中进行子查询 hive 也是。
在您的示例中,我加入了两个子查询。

WITH t AS(
SELECT t2.category AS category, t2.date AS date, COUNT(*) AS past_week
FROM table_dos t2
JOIN table_uno t1 ON(t2.category = t1.category)
WHERE t2.date >= t1.date AND
CEIL(DATEDIFF(to_date(t2.date),to_date(t1.date)) / 7) <= 1
GROUP BY t2.category, t2.date)
SELECT t.category AS category, t.date AS date ,t.past_week AS past_week, t2.past_2_weeks AS past_2_weeks
FROM t
JOIN (SELECT t2.category AS category, t2.date AS date, COUNT(*) AS past_2_weeks
FROM table_dos t2
JOIN table_uno t1 ON(t2.category = t1.category)
WHERE t2.date >= t1.date AND
CEIL(DATEDIFF(to_date(t2.date),to_date(t1.date)) / 7) <= 2
GROUP BY t2.category, t2.date) AS t2
ON(t.category = t2.category)
WHERE t.date = t2.date
ORDER BY category, date DESC;
给定数据的预期输出
+-----------+-------------+------------+---------------+--+
| category | date | past_week | past_2_weeks |
+-----------+-------------+------------+---------------+--+
| ABC1 | 2018-10-30 | 1 | 3 |
| ABC1 | 2018-10-23 | 2 | 2 |
| ABC2 | 2018-10-24 | 2 | 3 |
| ABC2 | 2018-10-21 | 1 | 2 |
+-----------+-------------+------------+---------------+--+

关于hadoop - 聚合条件存储在另一个表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61359295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com