我使用 Druid 来监控我网站中的事件。数据可以表示如下:
event_id | country | user_id | event_type
================================================
1 | USA | id1 | visit
2 | USA | id2 | visit
1 | Canada | id3 | visit
3 | USA | id1 | click
1 | Canada | id4 | visit
3 | Canada | id3 | click
3 | USA | id2 | click
我还定义了一个用于计数事件的聚合。我向 Druid 查询以显示 event_id=3 的数据,如下所示:
请注意,访问与 event_id 无关。
country | visits | clicks
===============================
USA | 4 | 2
Canada | 3 | 2
目前,我使用两个带有 2 个不同过滤器的 topNResults 查询:
- event_type = visit -> 计算每个国家/地区的访问次数,而不考虑事件 ID。
- event_id = 3
当然,我的数据要大得多,并且包含许多国家。topNResults api 必须具有阈值参数,该参数表示我希望作为响应获得的最大结果量。
问题是如果我的阈值小于实际结果,那么这两个查询可能不会具有相同的国家/地区结果。
目前,我在我的服务器中合并了重叠的结果,但我丢失了一些国家的结果,并且显示的结果低于我的阈值,尽管有更多的结果。
我可以做些什么来优化我的阈值总是相同的国家(没有将从第一个查询返回的国家列表发送到第二个过滤器 - 我试过了,它很慢)?