微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Athena或Quicksight上的滚动计数

如何解决Athena或Quicksight上的滚动计数

我有这个数据集

date         id
1/1/2020     1
1/1/2020     2
...
n            m

我希望在AWS Quicksight或Athena上有不同每月用户的滚动计数。例如

date         MAU
1/1/2020     -
1/2/2020     -
1/30/2020    100
1/31/2020    102
2020年1月30日的

100表示​​在过去30天中有100个不同的用户处于活动状态(从2020年1月1日到2020年1月30日)。在1/31/2020上为102,表示在过去30天中有102个不同的用户处于活动状态(从1/2/2020到1/30/2020)

解决方法

基本思想是将窗口计数与范围框架一起使用。如果我们将日期转换为一个纪元并使用以下范围框架,它是否可以在Amazon Athena中使用?

select date,sum(count(*)) over(
        order by to_unixtime(date)
        range between - 60 * 60 * 24 * 30 preceding and current row
    ) mau
from mytable
group by date

窗口函数解决方案的另一种选择是相关子查询:

select date,count(*) + (
        select count(*) 
        from mytable t1
        where t1.date >= t.date - interval '30' day and t1.date < t.date
    ) mau
from mytable
group by date

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。