利用python来对druid进行复杂查询

  有些时候通过superset来操作查询druid不能完全达到想要的数据分析结果,需要通过pydruid来将数据聚合结果导出到pandas进行更细致的分析,这里简单记录一下pydruid的使用。
  示例1:

from pydruid.client import *
from pydruid.utils.aggregators import longsum,doublesum,count
from pydruid.utils.filters import Dimension, Filter
from pydruid.utils.postaggregator import Field,Const
res = query.groupby(
    datasource="<表名>",
    granularity={
        "type": "period", 
        "period": "PT5M" #聚合的时间粒度 一小时: PT1H
    },
    intervals="2019-10-15T21:00:00+00:00/2019-10-15T21:56:35+00:00", #时间范围 
    dimensions=[
        "A", 
        "B",
        "C"
    ],  #待聚合的维度字段
    filter=Filter(
        type= 'and',
        fields= [
            Bound("<数值字段>",lower=0,upper=4), # 大于0, 小于4 
            Filter(
                type= 'or',
                fields= [
                    Dimension("A") == "xxxx",
                    Dimension("B") == "yyyy"
                ]
            ) # 需要过滤的字符字段
        ]
    ),
    #post_aggregations={'percent': (Field('count') / Field('rows')) * Const(100))},
    aggregations={  # druid中定义好的聚合操作
        "count": count("count")
    }
)
df = ts.export_pandas() # 可以输出为pandas的DataFrame来进行后续的分析

你可能感兴趣的:(利用python来对druid进行复杂查询)