全部产品
云市场

SDK多值读取

更新时间:2019-03-08 00:16:34

示例代码:

  1. /*
  2. * 通过multiFieldQuery() API。
  3. * 请求创建流程:MultiFieldSubQueryDetails List -> MultiFieldSubQuery -> MultiFieldQuery
  4. * 现在多值查询支持多个子查询。
  5. *
  6. * 查询时必须提供的信息:
  7. * MultiFieldSubQueryDetails List: 查询指标下具体的度量(子类比)信息。例如只查询"speed"或者“direction”
  8. * 里面可以指定聚合运算(Aggreagtor),值过滤(dpValue),斜率计算(rate),降采样(downsample)等。
  9. * Metric: 代表查询的数据指标,例如 "wind"
  10. * Time Range: Start Time and End Time
  11. *
  12. * 可选信息:
  13. * Tags: 过滤时间的信息
  14. * Limit/Offset: 分页处理
  15. */
  16. // 创建要查询 fields 的信息
  17. MultiFieldSubQueryDetails speedFieldDetails = MultiFieldSubQueryDetails
  18. .field("speed").aggregator(Aggregator.SUM).downsample("2s-sum").build();
  19. MultiFieldSubQueryDetails levelFieldDetails = MultiFieldSubQueryDetails
  20. .field("level").aggregator(Aggregator.AVG).downsample("2s-avg").build();
  21. MultiFieldSubQueryDetails tempFieldDetails = MultiFieldSubQueryDetails
  22. .field("temperature").aggregator(Aggregator.COUNT).downsample("2s-count").build();
  23. MultiFieldSubQueryDetails allFieldsDetails1 = MultiFieldSubQueryDetails
  24. .field("*").aggregator(Aggregator.MAX).downsample("2s-max").alias("max_").build();
  25. MultiFieldSubQueryDetails allFieldsDetails2 = MultiFieldSubQueryDetails
  26. .field("*").aggregator(Aggregator.MIN).downsample("2s-min").alias("min_").build();
  27. List<MultiFieldSubQueryDetails> subQueryDetails = new LinkedList<>();
  28. subQueryDetails.add(speedFieldDetails);
  29. subQueryDetails.add(levelFieldDetails);
  30. subQueryDetails.add(tempFieldDetails);
  31. subQueryDetails.add(allFieldsDetails1);
  32. subQueryDetails.add(allFieldsDetails2);
  33. // 创建多值模型子查询
  34. MultiFieldSubQuery subQuery = MultiFieldSubQuery.metric(metric).fieldsInfo(subQueryDetails)
  35. .filter(Filter.filter(FilterType.LiteralOr, "district", "Yuhang|Xiacheng|Xihu", true).build())
  36. .build();
  37. // 创建多值模型查询
  38. MultiFieldQuery query = MultiFieldQuery.start(1542772000L).end(1542772020L).msResolution(false)
  39. .sub(subQuery).build();
  40. List<MultiFieldQueryResult> results = tsdb.multiFieldQuery(query);