2016-11-14 78 views

回答

0

由於沒有任何queryType返回粒度。 我已檢索使用http://localhost:8081/druid/coordinator/v1/metadata/datasources/wikiticker

的數據源的信息然後獲取的最後一個或任何段的間隔

 
     JSONArray segmentArray = (JSONArray) dataSourceObj.get("segments"); 
     JSONObject lastSegmentObject = new JSONObject(segmentArray.get(segmentArray.length()-1).toString()); 
     String granularityInterval = lastSegmentObject.get("interval").toString(); 

然後計算使用任何API例如日期間隔之間的差異:約達

 
      SimpleDateFormat format = new SimpleDateFormat(Constants.DATE_FORMAT); 
      Date intervalStart = format.parse(interval.split("/")[0]); 
      Date intervalEnd = format.parse(interval.split("/")[1]);
DateTime startTime = new DateTime(intervalStart) ; DateTime endTime = new DateTime(intervalEnd) ;

Period jodaPeriod = new Period(startTime, endTime); if(jodaPeriod.getYears() == 1){ return DesignerConstants.DRUID_GRANULARITY_YEAR; }else if(jodaPeriod.getMonths() == 1){ return DesignerConstants.DRUID_GRANULARITY_MONTH; }else if(jodaPeriod.getWeeks() == 1){ return DesignerConstants.DRUID_GRANULARITY_WEEK; }else if(jodaPeriod.getDays() == 1){ return DesignerConstants.DRUID_GRANULARITY_DAY; }else if(jodaPeriod.getHours() == 1){ return DesignerConstants.DRUID_GRANULARITY_HOUR; } return "none"; } </pre>
0

FYI數據可以源具有多個分段粒度,這就是爲什麼沒有查詢會爲您做到這一點。雖然上面的代碼將返回與您問的原始問題不同的最後一個段的粒度。

相關問題