文档

查询时序数据

更新时间:

表格存储提供了GetTimeseriesData接口用于查询某一时间线在指定时间段时序数据。查询时序数据时,如果不确定要查询时间线信息(例如度量名称、数据源信息),您可以先根据指定条件检索到时间线后再进行查询。

功能概述

调用GetTimeseriesData接口查询指定时间线中符合条件的时序数据。

查询时序数据时,您必须指定要查询时间线信息以及根据需要配置查询条件。

  • 配置是否按照时间倒序读取数据,可用于获取某条时间线的最新数据。

  • 系统默认会返回所有数据列,您可以配置获取指定数据列。

  • 配置一次最多返回的行数。

使用方式

您可以使用控制台、命令行工具或者SDK进行时序数据查询操作。

说明

通过不同使用方式进行操作时支持的功能存在差异,请以实际为准。

查询时序数据前,您需要完成如下准备工作。

  • 已完成确定要查询的时间线标识信息。如果不确定时间线标识信息,请通过检索时间线获取。具体操作,请参见管理时间线元数据

  • 使用SDK方式进行操作时,还需要完成初始化Client。具体操作,请参见初始化OTSClient

  • 使用命令行工具方式进行操作前,还需要完成下载并启动命令行工具,然后配置接入实例信息。具体操作,请参见下载命令行工具启动并配置接入实例

使用控制台

您可以使用控制台查询某一时间线在指定时间范围内的数据。

  1. 进入实例管理页面。

    1. 登录表格存储控制台

    2. 在页面上方,选择资源组和地域。

    3. 概览页面,单击实例名称或者单击实例操作实例管理

  2. 实例详情页签,单击时序表列表页签。

  3. 时序表列表页签,单击时序表名称后选择数据管理页签或在时序表操作列单击数据管理

  4. 数据管理页签,在目标时间线的操作列单击查询数据

  5. 选择时间范围或者微秒时间戳的查询方式并设置时间,单击查询

    符合查询条件的数据会显示在数据管理页签,查询结果支持按列表或者图的方式展示。

    按列表展示数据

    fig_timeseriesdataquery

    按图形展示数据

    说明

    图中不同颜色代表不同的数据列,将鼠标移动到数据趋势线上将显示该时间节点上不同数据列的值。您还可以通过取消选中或者选中指定数据列来展示所需数据列。

    fig_picdisplay

使用命令行工具

您可以使用命令行工具查询某一时间线在指定时间范围内的数据。

执行getts命令查询某一个时间线中指定范围内的时序数据。更多信息,请参见查询时序数据

以下示例用于查询度量名称为cpu,数据源标识为localhost,且标签为"region=hangzhou""os=ubuntu"的时间线中1667638230000000之前产生的最多100条时序数据。

getts --k '["cpu","localhost",["region=hangzhou","os=ubuntu"]]' --time_start 0 --time_end 1667638230000000 --limit 100

使用SDK

您可以使用Java SDKGo SDK查询某一时间线在指定时间范围内的数据。此处以Java SDK为例介绍时序数据查询的使用。

以下示例用于查询test_timeseries_table时序表中满足指定条件的时序数据。

private static void getTimeseriesData(TimeseriesClient client) {
    String tableName = "test_timeseries_table";
    GetTimeseriesDataRequest getTimeseriesDataRequest = new GetTimeseriesDataRequest(tableName);
    Map<String, String> tags = new HashMap<String, String>();
    tags.put("region", "hangzhou");
    tags.put("os", "Ubuntu16.04");
    // 通过measurementName、dataSource和tags构建TimeseriesKey。
    TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_0", tags);
    getTimeseriesDataRequest.setTimeseriesKey(timeseriesKey);
    // 指定时间范围。
    getTimeseriesDataRequest.setTimeRange(0, (System.currentTimeMillis() + 60 * 1000) * 1000);
    // 限制返回行数。
    getTimeseriesDataRequest.setLimit(10);
    // 设置是否倒序读取数据,可不设置,默认值为false。如果设置为true,则倒序读取数据。
    getTimeseriesDataRequest.setBackward(false);
    // 设置获取部分数据列,可不设置,默认获取全部数据列。
    getTimeseriesDataRequest.addFieldToGet("string_1", ColumnType.STRING);
    getTimeseriesDataRequest.addFieldToGet("long_1", ColumnType.INTEGER);

    GetTimeseriesDataResponse getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
    System.out.println(getTimeseriesDataResponse.getRows().size());
    if (getTimeseriesDataResponse.getNextToken() != null) {
        // 如果nextToken不为空,可以发起下一次请求。
        getTimeseriesDataRequest.setNextToken(getTimeseriesDataResponse.getNextToken());
        getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
        System.out.println(getTimeseriesDataResponse.getRows().size());
    }
}

常见问题

相关文档

  • 您还可以使用SQL查询时序数据。更多信息,请参见使用SQL查询时序数据

  • 如果要可视化展示时序数据,您可以通过对接Grafana实现。更多信息,请参见对接Grafana

  • 如果要低成本存储时序数据以及快速查询和分析时序数据,您可以使用时序分析存储实现。更多信息,请参见时序分析存储概述