首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Upsolver中聚合数据并在雅典娜中使用雅典娜输出

在Upsolver中聚合数据并在雅典娜中使用雅典娜输出
EN

Stack Overflow用户
提问于 2022-11-30 17:36:37
回答 1查看 17关注 0票数 0

我得到卡夫卡流,我需要聚合和加载到雅典娜。当每个事件发生时,聚合应该更新以反映新事件。我希望为多个输出重用这些聚合数据,所以我首先使用Upsolver中间输出来构造聚合数据。然后创建多个Athena和Redshift输出,从这个聚合的中间输出到Upsert。由于摄入每分钟发生,问题是每次新事件到达时,它仅用该分钟的数据覆盖聚合,而不是从迄今为止处理的所有数据的总聚合?

EN

回答 1

Stack Overflow用户

发布于 2022-11-30 17:38:24

中间处理程序输出在默认情况下只处理被摄入的数据,因此每1分钟的事件流都将被聚合。由于您希望聚合到目前为止的所有数据,所以需要添加一个WINDOW子句。

代码语言:javascript
复制
SELECT id, col1, count(col2)
FROM table
GROUP BY id, col1
WINDOW 31 DAYS

您可以添加任何您需要的窗口。在这种情况下,中间产出将在过去31天内保持总量。

使用window=31 days,让我们假设这些是您接收到的事件流。日期是事件中的属性,它显示事件实际发生的时间,时间是Upsolver属性,它显示事件何时进入Upsolver。你在计算身份。

代码语言:javascript
复制
    id=1 date=11/30/2022 time =11/30/2022       count=1
    id=1 date=12/15/2022 time =12/15/2022       count=2
    id=1 date=12/20/2022 time =12/20/2022       count=3
    id=1 date=12/31/2022 time =12/31/2022       count=4

因此,每次由于您的事件是在31天内,计数不断更新。让我们说,一个很晚的事件到达,不可能的情况在您的业务案例,但仍在发生。虽然没有迟到的事件应该在31天后到达,但有一件事情真的晚到了。

代码语言:javascript
复制
    id=1 date=12/10/2022 time =2/1/2023  

这是一个真的很晚的事件,没有考虑,也许它不会发生,但如果它确实发生,它现在将重新汇总到31天从2/1/2023年,并导致一个新的计数只有1,因为这是这个定义的窗口中的唯一事件。您可以在下面添加使其安全失败的位置。

代码语言:javascript
复制
SELECT id, col1, count(col2)
FROM table
WHERE DATE_DIFF_PRECISE('day', TO_DATE("date"), TO_DATE(time)) <= 31
GROUP BY id, col1
WINDOW 31 DAYS
//Here 31 was your window, change accordingly
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74631952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档