【Apache Druid】聚合函数max,min的默认值问题

问题描述:

需求是对某一个字段取最大值和最小值,并且过滤条件不一致,就想到了druid聚合函数支持携带filter子句这一特性,按想法写出来但结果有点奇怪。
【Apache Druid】聚合函数max,min的默认值问题_第1张图片

问题分析:

由于需要统计某个字段的最大值和最小值,并且在有Filter条件的情况下,由于Filter条件过滤之后的无结果,所以触发了聚合函数的默认值。
这一点在官网中得到了印证。
【Apache Druid】聚合函数max,min的默认值问题_第2张图片

解决方法:

count聚合函数结合case子句对空行数据强制赋0。
先用count函数求出过滤条件下的行数。
用case子句判断这个行数是否是0,
如果是0则强制赋0,
如果不是0则认为至少有一条数据,可以使用聚合函数。
【Apache Druid】聚合函数max,min的默认值问题_第3张图片

你可能感兴趣的:(druid大数据)