【发布时间】:2021-08-25 12:13:31
【问题描述】:
我有一个数据集,我正试图将其相互连接以获取前 30 天的计数。初始表具有针对一天给出的不同的 id 计数。我的最终目标是通过自己加入来获取当前天数和前 x(当前示例为 30)天数,这样我就可以计算从第 1 天到第 30 天前的滚动 30 平均值。
到目前为止,结构已经确定,但不确定是否最好。
原来的表是
Day. id. group
12/1/2020. 1. A
12/2/2020. 1. A
12/3/2020. 2. B
12/3/2020. 3. B
12/3/2020. 4. B
12/4/2020. 1. A
12/4/2020. 2. A
12/4/2020. 3. A
12/4/2020. 4. A
.
.
.
1/30/2021. 1. A
我使用原始表每天进行不同的计数
Day. Count_prev30. group
12/1/2020. 83. A
12/2/2020. 93. A
12/3/2020. 103. B
12/4/2020. 126. A
.
.
.
1/4/2021. 166. A
目前我拿这张桌子,还做了一个 date_sub(partition_date_et, 29) partition_date_et_30 并有另一个设置在哪里
Day. Day_previous_30 Count_current. group
1/1/2021. 12/01/2020 123. A
1/2/2021. 12/02/2020 133. A
1/3/2021. 12/03/2020 143. B
1/4/2021. 12/04/2020 166. A
.
.
.
1/31/2021. 12/31/2020 186. A
我加入了这些数据集,所以我使用 Day 和 Day_previous_30
Day. Day_previous_30 Count_current. count_prev30 group
1/1/2021. 12/01/2020 123. 83 A
1/2/2021. 12/02/2020 133. 93 A
1/3/2021. 12/03/2020 143. 103 A
1/4/2021. 12/04/2020 166. 126 B
.
.
.
.
infinite dates
我不确定这是否是在我的聚合中获取当前日期和当前日期的最佳方法对于 2021 年 1 月 1 日,我的平均计数是 Count_current + Count_prev30 /2。
只是想看看如果有更好的方法,其他人将如何实现这一点。我不认为有一个计数不同的窗口函数,比如 sum over。
【问题讨论】:
-
请解释您要完成的工作。你在寻找什么结果?你怎么知道 2020-12-01 比 2021-01-01 早 29 天?而
count_current是从哪里来的? -
谢谢,我以为我已经解释清楚了。更新了更多上下文。 @GordonLinoff
-
这两组数据是固定的还是你为一个表获取它们?
-
@banana_99 我从一张桌子上获得。
-
@epv 能否请您给我们展示您的一张桌子,以便我们想出一些更容易的方法?有很多功能可以一步轻松实现。
标签: sql hive count distinct-values