2016-11-14 12 views
0

私は既存のレコードを取得し、更新してから更新されたレコードを取り込み、druidの既存のレコードを更新しようとしています。 更新されたレコードを取り込みながら使用される既存のデータソースの粒度をフェッチする必要があります。既存のdruidデータソースの粒度を取得する方法

答えて

0

granularityを返すqueryTypeが1つもないため。 私は最後または任意のセグメントの間隔

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

をフェッチhttp://localhost:8081/druid/coordinator/v1/metadata/datasources/wikiticker

を使用してデータソースの詳細情報を取得した後、例えば任意の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データソースすることができます複数のセグメント細分性を持っているので、それを行うクエリはありません。上記のコードでは、元の質問とは異なる最後のセグメントの細かさが返されますが、

関連する問題