有些时候通过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来进行后续的分析