全部产品
阿里云办公

数据查询

更新时间:2018-10-20 22:03:20

通过TSDB客户端进行查询和时空过滤,使用格式和时序数据库一致,此外扩展了Filter的时空过滤能力。

注意:地理位置信息不支持聚合运算和降采样

首先,数据查询需要先构建一个Query对象。Query对象表示查询条件,用于指定Tag、Metric和聚合查询条件等。创建方式和时序数据库一样,Query 对象使用方式也保持一致, 请参考查询数据

时间范围内的轨迹查询

查询出目标物体在给定时间范围内每一时刻的地理位置信息,这样就可以通过其他工具进行轨迹展示;

注意:“metric”需要指定为”coordinate”

例:

  1. Query query = Query.timeRange(1538130000, 1538140328)
  2. .sub(SubQuery.metric("coordinate").aggregator(Aggregator.NONE)
  3. .tag("sensor":"IOTE_8859_0001|IOTE_8859_0001").build()).build();
  4. tsdb.query(query);

返回结果:使用 Query 方法查询的数据以List的形式返回,其中的QueryResult是每个子查询的查询结果;可以使用QueryResult的getDps()方法获取查询的数据。

BBOX时空过滤查询

返回位置在给定的矩形框内的所有点。

使用方法:

  • FilterType指定为GeoBBox;
  • Metric可以为已写入的任意指标;
  • Filter的过滤条件的第一个字段为过滤方式(within或existed),后面的字段为指定的矩形框的地理信息。

例:

  1. Query geoQuery =
  2. Query.timeRange(1538130000, 1538140328)
  3. .sub(SubQuery.metric("coordinate")
  4. .aggregator(Aggregator.NONE).tag(tags)
  5. .filter(FilterType.GeoBBox,
  6. "within, 117.63954, 38.97943, 117.77481,39.07358").build())
  7. .build();
  8. List<QueryResult> queryResults = tsdb.query(geoQuery);

返回结果:使用 Query 方法查询的数据以List的形式返回,其中的QueryResult是每个子查询的查询结果;可以使用QueryResult的getDps()方法获取查询的数据。

Distance

返回以给定位置为圆心,给定距离为半径的圆内的所有点。

使用方法:

  • FilterType指定为GeoDistance;
  • Metric可以为已写入的任意指标;
  • Filter的过滤条件的第一个字段为过滤方式(within或existed ),详见下文的过滤方式小节;第二和第三个字段表示圆心的经纬度信息,第四个字段表示半径(米)。

例:

  1. Query geoQuery =
  2. Query.timeRange(1538130000, 1538140328)
  3. .sub(SubQuery.metric(coordinateMetric)
  4. .aggregator(Aggregator.NONE).tag(tags)
  5. .filter(FilterType.GeoDistance,
  6. "within, 117.63954, 38.97943, 1000").build())
  7. .build();
  8. List<QueryResult> queryResults = tsdb.query(geoQuery);

返回结果:使用 Query 方法查询的数据以List的形式返回,其中的QueryResult是每个子查询的查询结果;可以使用QueryResult的getDps()方法获取查询的数据。

过滤方式

无论BBOX还是Distance,Filter字段里有两种过滤方式:within和existed。

  • within:查询只存在于给定时空范围信息的所有点。

例:查询下午2:00-6:00时间段出现给定地理位置范围内(通过BBOX或者Distance指定地理位置过滤条件)的符合条件的所有数据点。

  • existed:查询曾经出现在给定时空范围内的所有点。

    比如某个目标的时间线为T1 (未出现) | T2 (出现) | T3 (未出现) | T4 (未出现) | T5 (未出现) | T6 (未出现)

    查询条件:时间范围(T2 – T5)

    返回时间点: T2, T3, T4, T5, (由于时间T2出现在BBox内,所以返回T2 ~ T6的所有时间点)

    例:查询下午2:00-6:00在给定地理范围内曾经出现过的符合条件的目标的完整轨迹(2:00-6:00的轨迹信息)。