目录:
[显示]
查询语法
查询http请求发送到查询节点(broker node),然后查询节点转发至历史节点(historical node)或实时节点(realtime node)处理,最后合并结果返回
查询基本组件
Filter
过滤器,json对象,对维度进行筛选,表示满足filter的行是需要的数据,类似sql中的where子句
- selector filter 类似sql中的where key=value
1"filter":{"type":"selector","dimension":...,"value":...} - regex filter 使用正则,java正则表达式语法
1"filter":{"type":"regex","dimension":...,"pattern":...} - logical expression filter 支持and/or/not,允许嵌套
123"filter":{"type":"and","fields":[<filter>,...]}"filter":{"type":"or","fields":[<filter>,...]}"filter":{"type":"not","fields":<filter>} - search filter 通过字符串匹配,有多种匹配方式,通过query.type指定
1"filter":{"dimension":"product","query":{"type":"insensitive_contains","value":"foo"},"type":"search"} - in filter 类似sql中的in
1"filter":{"type":"in","dimension":...,"values":["foo",...]} - bound filter 比较过滤器,支持字符串比较,默认就是字符串比较,要芀为数字需设置alphaNumeric为true
1234"filter":{"type":"bound","dimension":"age","low":"21","upper":"31","alphaNumeric":true} # 21<=age<=31"filter":{"type":"bound","dimension":"age","low":"21",lowerStrict":true,"upper":"31","upperStrict":true,"alphaNumeric":true} # 21<age<31"filter":{"type":"bound","dimension":"age","upper":"31","upperStrict":true,"alphaNumeric":true} # age<31"filter":{"type":"bound","dimension":"name","low":"foo","upper":"hoo"} # foo<=name<=hoo - javascript filter 只支持一个入参,即filter里指定的维度值,返回true或false
12# foo<=name<=hoo"filter":{"type":"javascript","dimension":"name","function":"function(x){return(x>='foo'&&x<='hoo'}"}
Aggregator
聚合器
- count aggregator 计算数据行数
12{"type":"count","name":<output_name>}{"type":"longSum","name":<output_name>,"fieldName":"count"} # 摄入了多少条原始数据 - sum aggregator 求和
1、longSum 负责64位有符号整型的求和
2、doubleSum 负责64位浮点数的求和12{"type":"longSum","name":<output_name>,"fieldName":<mertic_name>}{"type":"doubleSum","name":<output_name>,"fieldName":<mertic_name>} - min/max aggregator 求最小/最大值
1、doubleMin doubleMax
2、longMin longMax - cardinality aggregator 使用hyperloglog算法计算给定维度集合的基数 基数实际就是 count(distinct(value))
对单个维度求基数,推荐hyperunique aggregator1{"type":"cardinality","name":<output_name>,"fieldNames":[<dimension1>,...],"byRow":<false|true>} - hyperUnique aggregator 计算指定维度的基数
1{"type":"hyperUnique","name":<output_name>,"fieldNames":<metric_name>}
- filtered aggretator 只对满足规则的维度进行聚合,可提升聚合效率
1{"type":"filtered","filter":{"type":"selector","dimension":...,"value":...},"aggregator":<agg>}
- javascript aggregator 其中指定的列即为function的入参,执行性能会比较慢
Post-Aggregator
可以对Aggregator的结果进行二次加工并输出。最终的输出既包含Aggregator的结果,也包含Post-Aggregator的结果
- Arithmetic Post-Aggregator 对Agg的结果进行算术运算
- Field Accessor Post-Aggregator 返回指定Agg的值
- Constant Post-Aggregator 返回一个常数
- HyperUnique Cardinality Post-Aggregator 获取HyperUnique Aggretor的结果
Search Query
可以用在 filter 的 search 和 search查询中
定义了几种字符串匹配方式
- contains 包含 可通过 case_sensitive 指定是否区分大小写
- insensitive_contains 同 contains但不区分大小写
- fragment 可以指定多个值,任意匹配一个即可
1{"type":"fragment","case_sensitive":false,"values":[xxx,...]}
Interval
指定时间区间 时间格式为ISO-8601 前闭后开
"intervals":["2016-08-28T00:00:00+08:00/2016-08-29T00:00:00+08:00"]
Context
在查询中可指定的参数,若不指定,会使用默认值
转载请注明:轻风博客 » druid笔记1-查询语法