Apache Druid:计算异常值

Apache Druid: count outliers

我准备了一个从 Kafka 主题获取数据的 Apache Druid 安装。它工作起来非常流畅和高效。

我目前正在尝试执行一些查询,但我被困在列值是离群值的行数(按某些字段分组)中。在正常的 SQL 世界中,我基本上会计算第一和第三四分位数(q1 和 q3),然后使用类似的东西(我只对 "right" 异常值感兴趣):

SUM(IF(column_value > q3 + 1.5*(q3-q1), 1, 0))

这种方法利用了 cte 和连接:我用分组计算了 cte 中的四分位数,然后我将它与原始 table 连接起来。

我能够使用 groupBy 查询通过 datasketch 扩展轻松计算四分位数和离群值阈值,但我没有意识到如何执行可以执行计数的 postAggregation。

理论上,我可以使用第一次获得的阈值来实现第二次查询。不幸的是,我可以获得数十万个不同的值。这使得这种方法不可行。

你对如何解决这个问题有什么建议吗?

从 0.18.0 版开始,Apache Druid 支持连接。这解决了问题。