数据查询

更新时间:

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

说明

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

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

时间范围内的轨迹查询

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

说明

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

例子:

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

返回结果:使用 query 方法查询的数据以List

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

BBOX时空过滤查询

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

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

例子:

Query geoQuery = 
 Query.timeRange(1538130000, 1538140328)
      .sub(SubQuery.metric("coordinates")
      .aggregator(Aggregator.NONE).tag(tags)
      .filter(FilterType.GeoBBox,
          "within, 117.63954, 38.97943, 117.77481,39.07358").build())
      .build();
List<QueryResult> queryResults = tsdb.query(geoQuery);

返回结果:使用 query 方法查询的数据以List

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

Distance

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

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

例子:

Query geoQuery = 
 Query.timeRange(1538130000, 1538140328)
      .sub(SubQuery.metric(coordinateMetric)
      .aggregator(Aggregator.NONE).tag(tags)
      .filter(FilterType.GeoDistance, 
          "within, 117.63954, 38.97943, 1000").build())
      .build();
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的轨迹信息)。