全部產品
Search
文件中心

Tablestore:寫入時序資料

更新時間:Jul 13, 2024

建立時序表後,您可以使用PutTimeseriesData介面批量寫入時序資料。一次PutTimeseriesData調用支援寫入多行資料。

前提條件

參數

一行時序資料(timeseriesRow)包括時間軸標識(timeseriesKey)和時間軸資料的配置,其中時間軸資料包括資料點的時間(timeInUs)和資料點(fields)。詳細參數說明請參見下表。

參數

說明

timeseriesKey

時間軸標識,包括如下內容:

  • measurementName:時間軸的度量名稱,可以為空白。

  • dataSource:資料來源資訊,可以為空白。

  • tags:時間軸的標籤資訊,為多個字串的key-value對。

timeInUs

資料點的時間,單位為微秒。

fields

資料點,可以由多個名稱(FieldKey)和資料值(FieldValue)對組成。

樣本

以下樣本用於向test_timeseries_table時序表中寫入多個時序資料。

private static void putTimeseriesData(TimeseriesClient client) {
    List<TimeseriesRow> rows = new ArrayList<TimeseriesRow>();
    for (int i = 0; i < 10; i++) {
        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_" + i, tags);
        // 指定timeseriesKey和timeInUs建立timeseriesRow。
        TimeseriesRow row = new TimeseriesRow(timeseriesKey, System.currentTimeMillis() * 1000 + i);
        // 增加資料值(field)。
        row.addField("cpu_usage", ColumnValue.fromDouble(10.0));
        row.addField("cpu_sys", ColumnValue.fromDouble(5.0));
        rows.add(row);
    }
    String tableName = "test_timeseries_table";
    PutTimeseriesDataRequest putTimeseriesDataRequest = new PutTimeseriesDataRequest(tableName);
    putTimeseriesDataRequest.setRows(rows);
    // 一次寫入多行時序資料。
    PutTimeseriesDataResponse putTimeseriesDataResponse = client.putTimeseriesData(putTimeseriesDataRequest);
    // 檢查是否全部成功。
    if (!putTimeseriesDataResponse.isAllSuccess()) {
        for (PutTimeseriesDataResponse.FailedRowResult failedRowResult : putTimeseriesDataResponse.getFailedRows()) {
            System.out.println(failedRowResult.getIndex());
            System.out.println(failedRowResult.getError());
        }
    }
}