轉(zhuǎn)載自http://yangyangmyself.iteye.com/blog/2321759 1、Druid 查詢概述 上一節(jié)完成數(shù)據(jù)導(dǎo)入后,接下來講講Druid如何查詢及統(tǒng)計分析導(dǎo)入的數(shù)據(jù)。
? ? Druid的查詢是使用REST風(fēng)格的HTTP請求查詢服務(wù)節(jié)點(Broker、Historical、Realtime),這些服務(wù)節(jié)點暴露REST查詢接口,客戶端發(fā)送Json對象請求查詢接口。一般情況下,查詢服務(wù)接口發(fā)布在Broker節(jié)點,基于Linux 的POST請求查詢?nèi)缦滤?#xff1a;? Java代碼??
curl?-X?POST?'<queryable_host>:<port>/druid/v2/?pretty'?-H?'Content-Type:application/json'?-d?@<query_json_file>?? ?
2、Druid 查詢類型 Druid在不同場景下,有很多的查詢類型。查詢是由各種JSON屬性和Druid有不同類型的不同場景下查詢組成。對于各種類型的查詢類型的配置可以json屬性文件設(shè)置。Druid查詢類型,概括一下為3大類:
? ? ?1. 聚合查詢 - 時間序列查詢(Timeseries)、排名查詢(TopN)、分組查詢(GroupBy)
? ? ?2. 元數(shù)據(jù)查詢 - 時間范圍(Time Boundary) 、段元數(shù)據(jù)(Segment Metadata)、數(shù)據(jù)源(Datasource)
? ? ?3. Search查詢 - Search
? ? ?本節(jié)以聚合查詢?yōu)橹?#xff0c;其它查詢類型比較簡單,使用上相對比較少,暫不介紹。對聚合查詢類型下的3種查詢?nèi)绾芜x擇進(jìn)行一下概述:
? ? ?在可能的情況下,我們建議使用的時間序列和TopN查詢代替分組查詢,分組查詢是Druid最靈活的的查詢,但是性能最差。時間序列查詢是明顯快于GROUPBY查詢,因為聚合不需要分組尺寸。對于分組和排序在一個單一的維度,TopN查詢更優(yōu)于GROUPBY。
?
2.1 Json查詢屬性 在講聚合查詢下的3種查詢類型之前,我們需要對3種查詢類型共有的特別重要的Json屬性理解與熟悉,常用屬性如:queryType、dataSource、granularity、filter、aggregator等。
?
2.1.1 查詢類型(queryType) 對應(yīng)聚合查詢下的3種類型值:timeseries、topN、groupBy 2.1.2 數(shù)據(jù)源(dataSource) 數(shù)據(jù)源,類似數(shù)據(jù)庫中表的概念,對應(yīng)數(shù)據(jù)導(dǎo)入時Json配置屬性dataSource值
?
2.1.3 聚合粒度(granularity) 粒度決定如何得到數(shù)據(jù)塊在跨時間維度,或者如何得到按小時,天,分鐘的匯總等。在配置查詢聚合粒度里有三種配置方法:
? ??
1. 簡單聚合粒度?- 支持字符串值有:all、none、second、minute、fifteen_minute、thirty_minute、hour、day、week、month、quarter、year
? ? ? ?(1) all - 將所有塊變成一塊
? ? ? ?(2) none - 不使用塊數(shù)據(jù)(它實際上是使用最小索引的粒度,none意味著為毫秒級的粒度);按時間序列化查詢時不建議使用none,因為所有的毫秒不存在,系統(tǒng)也將嘗試生成0值,這往往是很多。
? ??
2. 時間段聚合粒度?- Druid指定一精確的持續(xù)時間(毫秒)和時間綴返回UTC(世界標(biāo)準(zhǔn)時間)。
? ??
3. 常用時間段聚合粒度?- 與時間段聚合粒度差不多,但是常用時間指平時我們常用時間段,如年、月、周、小時等。
? ? 下面對3種聚合粒度配置舉例說明:
??
? ??簡單聚合粒度
? ? ? ??查詢粒度比數(shù)據(jù)采集時配置的粒度小,則不合理,也無意義,因較小粒度(相比)者無索引數(shù)據(jù);如
? ? 查詢粒度小于采集時配置的查詢粒度時,則Druid的查詢結(jié)果與采集數(shù)據(jù)配置的查詢粒度結(jié)果一樣。
? ? ? ? 假設(shè)我們存儲在Druid的數(shù)據(jù)使用毫秒粒度獲取,數(shù)據(jù)如下:
Java代碼??
{"timestamp":?"2013-08-31T01:02:33Z",?"page":?"AAA",?"language"?:?"en"}??{"timestamp":?"2013-09-01T01:02:33Z",?"page":?"BBB",?"language"?:?"en"}??{"timestamp":?"2013-09-02T23:32:45Z",?"page":?"CCC",?"language"?:?"en"}??{"timestamp":?"2013-09-03T03:32:45Z",?"page":?"DDD",?"language"?:?"en"}?? ? ? ? ?以"小時" 粒度提交一個groupby查詢,查詢配置如下:
Java代碼??
{?????"queryType":"groupBy",?????"dataSource":"dataSource",?????"granularity":"hour",?????"dimensions":[????????"language"?????],?????"aggregations":[????????{???????????"type":"count",???????????"name":"count"????????}?????],?????"intervals":[????????"2000-01-01T00:00Z/3000-01-01T00:00Z"?????]??}?? ? ? ??按小時粒度進(jìn)行的groupby查詢結(jié)果中timestamp值精確到小時間,比小時粒度更小粒度值自動補(bǔ)填零,
以此類推按天查詢,則小時及小粒度補(bǔ)零。timestamp值為UTC
Java代碼??
[?{????"version"?:?"v1",????"timestamp"?:?"2013-08-31T01:00:00.000Z",????"event"?:?{??????"count"?:?1,??????"language"?:?"en"????}??},?{????"version"?:?"v1",????"timestamp"?:?"2013-09-01T01:00:00.000Z",????"event"?:?{??????"count"?:?1,??????"language"?:?"en"????}??},?{????"version"?:?"v1",????"timestamp"?:?"2013-09-02T23:00:00.000Z",????"event"?:?{??????"count"?:?1,??????"language"?:?"en"????}??},?{????"version"?:?"v1",????"timestamp"?:?"2013-09-03T03:00:00.000Z",????"event"?:?{??????"count"?:?1,??????"language"?:?"en"????}??}?]?? ? ? ? ?如果指定查詢粒度為 none,則返回結(jié)果與數(shù)據(jù)導(dǎo)入時設(shè)置粒度(queryGranularity屬性值)結(jié)果一樣,
? ? 此處的導(dǎo)入粒度為毫秒,結(jié)果如下:
Java代碼??
[?{????"version"?:?"v1",????"timestamp"?:?"2013-08-31T01:02:33.000Z",????"event"?:?{??????"count"?:?1,??????"language"?:?"en"????}??},?{????"version"?:?"v1",????"timestamp"?:?"2013-09-01T01:02:33.000Z",????"event"?:?{??????"count"?:?1,??????"language"?:?"en"????}??},?{????"version"?:?"v1",????"timestamp"?:?"2013-09-02T23:32:45.000Z",????"event"?:?{??????"count"?:?1,??????"language"?:?"en"????}??},?{????"version"?:?"v1",????"timestamp"?:?"2013-09-03T03:32:45.000Z",????"event"?:?{??????"count"?:?1,??????"language"?:?"en"????}??}?]?? ? ? ?如果指定查詢粒度為 all,返回數(shù)組長度結(jié)果為1,結(jié)果如下:
Java代碼??
[?{????"version"?:?"v1",????"timestamp"?:?"2000-01-01T00:00:00.000Z",????"event"?:?{??????"count"?:?4,??????"language"?:?"en"????}??}?]?? ?
? ??時間段聚合粒度?
? ? ? ? ??指定一個精確時間持續(xù)時長(毫秒表示)及時間綴,返回UTC時間;支持可選項屬性origin,不指定時?
? ? ?默認(rèn)開始時間(1970-01-01T00:00:00Z)
?
Java代碼??
{"type":?"duration",?"duration":?7200000}?? Java代碼??
{"type":?"duration",?"duration":?3600000,?"origin":?"2012-01-01T00:30:00Z"}?? ??? ? ?
? ??以上簡單聚合粒度的示例數(shù)據(jù)為例,提交groupby查詢,持續(xù)時間段為24小時,查詢配置如下:
?
Java代碼??
{?????"queryType":"groupBy",?????"dataSource":"dataSource",?????"granularity":{"type":?"duration",?"duration":?"86400000"},?????"dimensions":[????????"language"?????],?????"aggregations":[????????{???????????"type":"count",???????????"name":"count"????????}?????],?????"intervals":[????????"2000-01-01T00:00Z/3000-01-01T00:00Z"?????]??}?? ? ? ?查詢結(jié)果:
Java代碼??
[?{????"version"?:?"v1",????"timestamp"?:?"2013-08-31T00:00:00.000Z",????"event"?:?{??????"count"?:?1,??????"language"?:?"en"????}??},?{????"version"?:?"v1",????"timestamp"?:?"2013-09-01T00:00:00.000Z",????"event"?:?{??????"count"?:?1,??????"language"?:?"en"????}??},?{????"version"?:?"v1",????"timestamp"?:?"2013-09-02T00:00:00.000Z",????"event"?:?{??????"count"?:?1,??????"language"?:?"en"????}??},?{????"version"?:?"v1",????"timestamp"?:?"2013-09-03T00:00:00.000Z",????"event"?:?{??????"count"?:?1,??????"language"?:?"en"????}??}?]?? ? ??
? ? 常用時間段聚合粒度
?
? ? ? ? ?略...
?
?
2.1.4 過濾(Filters) 一個Filter就是一個Json對象,用于過濾數(shù)據(jù)行過濾,類似SQL中的Where子句。過濾器類型有如下:Selector filte、Regular expression filter(正則表達(dá)式過濾)、Logical expression filters(AND、OR、NOT)、In filter、Bound filter、Search filter、JavaScript filter、Extraction filter
? ? 示例簡單查看使用方式:
? ?
? ?查詢過濾(Selector filte)
? ? ? ? ? ?等價于:WHERE <dimension_string> = '<dimension_value_string>'
Java代碼??
"filter":?{?"type":?"selector",?"dimension":?<dimension_string>,?"value":?<dimension_value_string>?}?? ? ?
? ? 正則表達(dá)過濾(Regular expression filter)
? ? ? ? ? ?與Selector filte差不多,只是這里使用正則表達(dá)式,表達(dá)式為標(biāo)準(zhǔn)的Java正則表達(dá)式規(guī)范
?
Java代碼??
"filter":?{?"type":?"regex",?"dimension":?<dimension_string>,?"pattern":?<pattern_string>?}?? ?
? ??邏緝表達(dá)過濾(Logical expression filters)
? ?
? ? ?AND
?
Java代碼??
"filter":?{?"type":?"and",?"fields":?[<filter>,?<filter>,?...]?}?? ?
? ? ?OR
?
Java代碼??
"filter":?{?"type":?"or",?"fields":?[<filter>,?<filter>,?...]?}?? ?
? ? ?NOT
?
Java代碼??
"filter":?{?"type":?"not",?"field":?<filter>?}?? ?
?
? ??IN過濾(In filter)
? ? ? ?
? ? SQL查詢
?
Java代碼??
SELECT?COUNT(*)?AS?'Count'?FROM?`table`?WHERE?`outlaw`?IN?('Good',?'Bad',?'Ugly')?? Druid IN 過濾表示
?
Java代碼??
{??????"type":?"in",??????"dimension":?"outlaw",??????"values":?["Good",?"Bad",?"Ugly"]??}?? ?
? ??范圍過濾(Bound filter)
? ? ? ? ?Bound filter 過濾比較值大小或小于某值,默認(rèn)按字符串比較,使用數(shù)據(jù)比較需要設(shè)置alphaNumeric 屬
? ? ?性為true;默認(rèn)?Bound filter為非嚴(yán)格性(類閉區(qū)間),如?inputString <= upper && inputSting >= lower
?
Java代碼??
{??????"type":?"bound",??????"dimension":?"age",??????"lower":?"21",??????"upper":?"31"?,??????"alphaNumeric":?true??}?? ? ? 上述表示等價如:21 <= age <= 31
?
? ??Bound filter?嚴(yán)格性,需要設(shè)置lowerStrict or/and upperStrict 屬性值為true如下:
?
Java代碼??
{??????"type":?"bound",??????"dimension":?"age",??????"lower":?"21",??????"lowerStrict":?true,??????"upper":?"31"?,??????"upperStrict":?true,??????"alphaNumeric":?true??}?? ? ? 等價如:21 < age < 31
?
2.1.5 聚合(Aggregations) 聚合可以在采集時間時規(guī)格部分的一種方式,匯總數(shù)據(jù)進(jìn)入Druid之前提供。聚合也可以被指定為在查詢時多查詢的部分,聚合類型如下:Count aggregator、Sum aggregators、Min / Max aggregators、Approximate Aggregations、Miscellaneous Aggregations?
?
? ??Count aggregator
? ? ? ? ??
? ? ? ??查詢返回匹配過濾條件的數(shù)據(jù)行數(shù),需要注意的是:Druid進(jìn)行Count查詢的數(shù)據(jù)量并不一定等于數(shù)據(jù)采
? ? 集時導(dǎo)入的數(shù)據(jù)量,因為Druid在采集數(shù)據(jù)并導(dǎo)入時已經(jīng)對數(shù)據(jù)進(jìn)行了聚合。
?
Java代碼??
{?"type"?:?"count",?"name"?:?<output_name>?}?? ?
? ? Sum aggregator
?
? ? ? ? ??longSum aggregator:計算值為有符號位64位整數(shù)
? ? ? ? ??
Java代碼??
{?"type"?:?"longSum",?"name"?:?<output_name>,?"fieldName"?:?<metric_name>?}?? ? ?
? ? ? ????doubleSum aggregator:與longSum類似,計算值為64位浮點型?
?
Java代碼??
{?"type"?:?"doubleSum",?"name"?:?<output_name>,?"fieldName"?:?<metric_name>?}?? ?
? ??Min / Max aggregators
?
? ? ? ? ??doubleMin aggregator?
?
Java代碼??
{?"type"?:?"doubleMin",?"name"?:?<output_name>,?"fieldName"?:?<metric_name>?}?? ? ??
? ? ? ? ??doubleMax aggregator
?
Java代碼??
{?"type"?:?"doubleMax",?"name"?:?<output_name>,?"fieldName"?:?<metric_name>?}?? ?
? ? ? ? ??longMin aggregator
?
Java代碼??
{?"type"?:?"longMin",?"name"?:?<output_name>,?"fieldName"?:?<metric_name>?}?? ?
? ? ? ? ?longMax aggregator
?
Java代碼??
{?"type"?:?"longMax",?"name"?:?<output_name>,?"fieldName"?:?<metric_name>?}?? ?
? ??類似聚合(Approximate Aggregations)
? ? ? ? ?
? ? ? ??基數(shù)聚合(Cardinality aggregator)
??
? ? ? ? ?計算Druid多種維度基數(shù),Cardinality aggregator使用HyperLogLog評估基數(shù),這種聚合比帶有索引的
? ? ?hyperUnique聚合慢,運行在一個維度列,意味著不能從數(shù)據(jù)集中刪除字符串維度來提高聚合;一般我們
? ? ?強(qiáng)力推薦使用hyperUnique aggregator而不是Cardinality aggregator,格式如下:
?
Java代碼??
{????"type":?"cardinality",????"name":?"<output_name>",????"fieldNames":?[?<dimension1>,?<dimension2>,?...?],????"byRow":?<false?|?true>?#?(optional,?defaults?to?false)??}?? ?
? ? ? ?.?維度值聚合-當(dāng)設(shè)置屬性byRow為false(默認(rèn)值)時,通過合并所有給定的維度列來計算值集合。
? ? ? ? ?
? ? ? ? ?對于單維度,等價如下:
?
Java代碼??
SELECT?COUNT(DISTINCT(dimension))?FROM?<datasource>?? ? ? ? ??
? ? ? ? ?對于多維度,等價如下:
?
Java代碼??
SELECT?COUNT(DISTINCT(value))?FROM?(????SELECT?dim_1?as?value?FROM?<datasource>????UNION????SELECT?dim_2?as?value?FROM?<datasource>????UNION????SELECT?dim_3?as?value?FROM?<datasource>??)?? ?
? ? ? ?.?行聚合-當(dāng)設(shè)置屬性byRow為true時,根所不同維度的值合并來計算行值,等價如下:
?
Java代碼??
SELECT?COUNT(*)?FROM?(?SELECT?DIM1,?DIM2,?DIM3?FROM?<datasource>?GROUP?BY?DIM1,?DIM2,?DIM3?)?? ?
?
? ? ? ? ? ?許多不同國家的人出生地或來自哪里,用druid配置如下:
?
Java代碼??
{????"type":?"cardinality",????"name":?"distinct_countries",????"fieldNames":?[?"coutry_of_origin",?"country_of_residence"?]??}?? ?
?
? ? ? ??HyperUnique aggregator
?
? ? ? ? 已經(jīng)被“hyperunique”在創(chuàng)建索引時聚合的維度值使用HyperLogLog計算估計,更多資料請參考官網(wǎng)
?
Java代碼??
{?"type"?:?"hyperUnique",?"name"?:?<output_name>,?"fieldName"?:?<metric_name>?}?? ??
后聚合(post-aggregators) 后聚合是對Druid進(jìn)行聚合后的值進(jìn)行聚全,如果查詢中包括一個后聚合,那么確保所有聚合滿足后聚合要求;后聚合有以下幾種類型:
1.?Arithmetic post-aggregators
2.?Field accessor post-aggregator
3.?Constant post-aggregator
4.?JavaScript post-aggregator
5.?HyperUnique Cardinality post-aggregator
? ? ?
? ? ? ? ?Arithmetic post-aggregators
?
? ? ? ? ? ?算術(shù)后聚合應(yīng)用已提供的函數(shù)從左到右獲取字段,這些字段可聚合或后聚合;支持+,?-,?*,?/, and?quotient。
? ? ? ? ? ?算術(shù)后聚合可以指定ordering屬性,用于聚合結(jié)果排序(對topN查詢很有用?):
? ? ? ? ? ? ? ?(1) 如果無ordering屬性(或null),使用默認(rèn)的浮點排序。
? ? ? ? ? ? ? ?(2)?numericFirst 首先返回有限值,其次是NaN,最后返回?zé)o限值。
? ? ? ? ? ?算術(shù)后聚合語法如下:
?
Java代碼??
postAggregation?:?{????"type"??:?"arithmetic",????"name"??:?<output_name>,????"fn"????:?<arithmetic_function>,????"fields":?[<post_aggregator>,?<post_aggregator>,?...],????"ordering"?:?<null?(default),?or?"numericFirst">??}?? ?
?
? ? ? ??Field accessor post-aggregator -?fieldName引用aggregator定義的名稱
?
Java代碼??
{?"type"?:?"fieldAccess",?"name":?<output_name>,?"fieldName"?:?<aggregator_name>?}?? ?
? ? ? ??Constant post-aggregator -?返回指定值
?
Java代碼??
{?"type"??:?"constant",?"name"??:?<output_name>,?"value"?:?<numerical_value>?}?? ?
?
2.2 時間序列查詢(Timeseries) 這些類型的查詢以時間序列查詢對象和返回一個JSON數(shù)組對象,每個對象表示時間序列查詢的值,時間序列查詢請求的Json的7個主要屬性如下:
| 屬性 | 描述 | 必填項 |
| queryType | 字符串類型,時間序列 "timeseries" | ? ?是 |
| dataSource | 字符串類型,數(shù)據(jù)源(類似數(shù)據(jù)庫表) | ? ?是 |
| descending | 排序標(biāo)志,默認(rèn)為 "false"(升序) | ? ?否 |
| intervals | 查詢時間范圍跨度,JSON對象,ISO-8601區(qū)間 | ? ?是 |
| granularity | 定義查詢結(jié)果塊粒度 | ? ?是 |
| filter | 過濾條件 | ? ?否 |
| aggregations | 聚合 | ? ?是 |
| postAggregations | 后聚合 | ? ?否 |
| context | 上下文 | ? ?否 |
?
引用官網(wǎng)序列化查詢json配置代碼??
{????"queryType":?"timeseries",????"dataSource":?"sample_datasource",????"granularity":?"day",????"descending":?"true",????"filter":?{??????"type":?"and",??????"fields":?[????????{?"type":?"selector",?"dimension":?"sample_dimension1",?"value":?"sample_value1"?},????????{?"type":?"or",??????????"fields":?[????????????{?"type":?"selector",?"dimension":?"sample_dimension2",?"value":?"sample_value2"?},????????????{?"type":?"selector",?"dimension":?"sample_dimension3",?"value":?"sample_value3"?}??????????]????????}??????]????},????"aggregations":?[??????{?"type":?"longSum",?"name":?"sample_name1",?"fieldName":?"sample_fieldName1"?},??????{?"type":?"doubleSum",?"name":?"sample_name2",?"fieldName":?"sample_fieldName2"?}????],????"postAggregations":?[??????{?"type":?"arithmetic",????????"name":?"sample_divide",????????"fn":?"/",????????"fields":?[??????????{?"type":?"fieldAccess",?"name":?"postAgg__sample_name1",?"fieldName":?"sample_name1"?},??????????{?"type":?"fieldAccess",?"name":?"postAgg__sample_name2",?"fieldName":?"sample_name2"?}????????]??????}????],????"intervals":?[?"2012-01-01T00:00:00.000/2012-01-03T00:00:00.000"?]??}?? ???
?
? ??上述配置了過濾條件,2個聚合,后聚合器將2個聚合結(jié)果進(jìn)行相除。查詢結(jié)果如下,查詢結(jié)果存儲在屬性result,以鍵值對方式存儲:
?
Java代碼??
[????{??????"timestamp":?"2012-01-01T00:00:00.000Z",??????"result":?{?"sample_name1":?<some_value>,?"sample_name2":?<some_value>,?"sample_divide":?<some_value>?}?????},????{??????"timestamp":?"2012-01-02T00:00:00.000Z",??????"result":?{?"sample_name1":?<some_value>,?"sample_name2":?<some_value>,?"sample_divide":?<some_value>?}????}??]?? ??
2.3 排名查詢(TopN query) TopN查詢根據(jù)規(guī)范返回給定維度的有序的結(jié)果集,從概念上來講,TopN查詢被認(rèn)為單維度、有序的類似分組查詢。在某些情況下,TopN查詢比分組查詢(groupby query)快。TopN查詢結(jié)果返回Json數(shù)組對象。
? ? TopN在每個節(jié)點將頂上K個結(jié)果排名,在Druid默認(rèn)情況下最大值為1000。在實踐中,如果你要求前1000個項順序排名,那么從第1-999個項的順序正確性是100%,其后項的結(jié)果順序沒有保證。你可以通過增加threshold值來保證順序準(zhǔn)確。
| 屬性 | 描述 | 必填項 |
| queryType | 字符串類型,時間序列 "topN" | ? ?是 |
| dataSource | 字符串類型,數(shù)據(jù)源(類似數(shù)據(jù)庫表) | ? ?是 |
| intervals | 查詢時間范圍跨度,JSON對象,ISO-8601區(qū)間 | ? ?是 |
| granularity | 定義查詢結(jié)果塊粒度 | ? ?是 |
| filter | 過濾條件 | ? ?否 |
| aggregations | 聚合 | ? ?是 |
| postAggregations | 后聚合 | ? ?否 |
| dimension | 查詢的維度(列) | ? ?是 |
| threshold | 返回Top N個結(jié)果 | ? ?是 |
| metric | 字符串或Json對象指定度量對Top N個結(jié)果排序 | ? ?是 |
| context | 上下文 | ? ?否
|
??
Metric
| 屬性 | 描述 | 必填項 |
| type | 數(shù)字排序 | ? ?是 |
| metric | 排序字段 | ? ?是
|
??
? ? ???數(shù)據(jù)排序(Numeric TopNMetricSpec)?-?最簡單的規(guī)范指定一個字符串值指示排序TopN結(jié)果的度量
?
Java代碼??
"metric":?"<metric_name>"?? ??
? ? ? ?metric屬性通常配置為Json對象,上述等價于:
?
Java代碼??
"metric":?{??????"type":?"numeric",??????"metric":?"<metric_name>"??}?? ?
? ??topN query 配置示例如下:
?
Java代碼??
{????"queryType":?"topN",????"dataSource":?"sample_data",????"dimension":?"sample_dim",????"threshold":?5,????"metric":?"count",????"granularity":?"all",????"filter":?{??????"type":?"and",??????"fields":?[????????{??????????"type":?"selector",??????????"dimension":?"dim1",??????????"value":?"some_value"????????},????????{??????????"type":?"selector",??????????"dimension":?"dim2",??????????"value":?"some_other_val"????????}??????]????},????"aggregations":?[??????{????????"type":?"longSum",????????"name":?"count",????????"fieldName":?"count"??????},??????{????????"type":?"doubleSum",????????"name":?"some_metric",????????"fieldName":?"some_metric"??????}????],????"postAggregations":?[??????{????????"type":?"arithmetic",????????"name":?"sample_divide",????????"fn":?"/",????????"fields":?[??????????{????????????"type":?"fieldAccess",????????????"name":?"some_metric",????????????"fieldName":?"some_metric"??????????},??????????{????????????"type":?"fieldAccess",????????????"name":?"count",????????????"fieldName":?"count"??????????}????????]??????}????],????"intervals":?[??????"2013-08-31T00:00:00.000/2013-09-03T00:00:00.000"????]??}?? ? ?
? ? 查詢前Top 5個結(jié)果,按count排序:
?
Java代碼??
[????{??????"timestamp":?"2013-08-31T00:00:00.000Z",??????"result":?[????????{??????????"dim1":?"dim1_val",??????????"count":?111,??????????"some_metrics":?10669,??????????"average":?96.11711711711712????????},????????{??????????"dim1":?"another_dim1_val",??????????"count":?88,??????????"some_metrics":?28344,??????????"average":?322.09090909090907????????},????????{??????????"dim1":?"dim1_val3",??????????"count":?70,??????????"some_metrics":?871,??????????"average":?12.442857142857143????????},????????{??????????"dim1":?"dim1_val4",??????????"count":?62,??????????"some_metrics":?815,??????????"average":?13.14516129032258????????},????????{??????????"dim1":?"dim1_val5",??????????"count":?60,??????????"some_metrics":?2787,??????????"average":?46.45????????}??????]????}??]??
轉(zhuǎn)載于:https://www.cnblogs.com/laoqing/p/9923020.html
總結(jié)
以上是生活随笔為你收集整理的【转载】DRuid 大数据分析之查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。