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 支持连接。这解决了问题。
我准备了一个从 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 支持连接。这解决了问题。