全部產品
Search
文件中心

Tablestore:行政時間線中繼資料

更新時間:Jun 30, 2024

Table Store提供了QueryTimeseriesMeta介面用於根據多種條件檢索時間軸、UpdateTimeseriesMeta介面用於更新時間軸中繼資料以及DeleteTimeseriesMeta介面用於刪除時間軸中繼資料。檢索到時間軸後,您可以根據需要刪除時間軸中繼資料、更新時間軸中繼資料等。

功能概述

寫入時序資料前,您可以預先定義時間軸。如果未預先建立時間軸中繼資料,當寫入時序資料時,系統會自動提取該時間軸的中繼資料資訊並自動構建索引。

時間軸中繼資料產生後,您可以根據所需情境行政時間線中繼資料。

功能

描述

檢索時間軸

調用QueryTimeseriesMeta介面根據度量名稱條件、資料來源條件、標籤條件、更新時間條件、屬性條件或者多條件組合條件檢索時間軸。

更新時間軸中繼資料

調用UpdateTimeseriesMeta介面更新時間軸中繼資料,例如時間軸中繼資料屬性。

時間軸中繼資料中有一個時間軸中繼資料屬性列(_attributes)支援進行更新,但目前僅在時間軸中繼資料生命週期為-1(資料永不到期)時支援該屬性的更新。

說明

關於時間軸中繼資料生命週期的更多資訊,請參見時序資料生命週期

刪除時間軸中繼資料

調用DeleteTimeseriesMeta介面大量刪除時間軸中繼資料。

重要

刪除時間中繼資料時並不會刪除時間軸對應的時序表資料,當通過GetTimeseriesData介面指定時間軸標識進行查詢時仍可查詢到時序表資料。

使用方式

您可以使用控制台、命令列工具或者SDK進行時間軸中繼資料管理操作。

說明

通過不同使用方式進行操作時支援的功能存在差異,請以實際為準。

行政時間線中繼資料前,您需要完成如下準備工作。

使用控制台

您可以使用控制台檢索時間軸或者更新時間軸中繼資料。

檢索時間軸

  1. 進入執行個體管理頁面。

    1. 登入Table Store控制台

    2. 在頁面上方,選擇資源群組和地區。

    3. 概覽頁面,單擊執行個體名稱或者單擊執行個體操作執行個體管理

  2. 執行個體詳情頁簽,單擊時序表列表頁簽。

  3. 時序表列表頁簽,單擊時序表名稱後選擇資料管理頁簽或在時序表操作列單擊資料管理

  4. 資料管理頁簽,單擊右上方的查詢資料

  5. 查詢資料對話方塊,輸入時間軸的度量名稱,根據實際需要輸入資料來源以及單擊對應地區的添加設定標籤、屬性或者更新時間的匹配條件。

    下圖中條件用於查詢度量名稱為cpu,標籤中含有os=Ubuntu16.10的所有時間軸。fig_querytimeseries

  6. 單擊確定

    符合查詢條件的資料會顯示在資料管理頁簽。

更新時間軸中繼資料

  1. 進入執行個體管理頁面。

    1. 登入Table Store控制台

    2. 在頁面上方,選擇資源群組和地區。

    3. 概覽頁面,單擊執行個體名稱或者單擊執行個體操作執行個體管理

  2. 執行個體詳情頁簽,單擊時序表列表頁簽。

  3. 時序表列表頁簽,單擊時序表名稱後選擇資料管理頁簽或在時序表操作列單擊資料管理

  4. 資料管理頁簽,單擊時間軸操作列的更新

  5. 更新時間軸對話方塊,根據需要添加、刪除或者修改時間軸中繼資料屬性。

  6. 單擊確定

使用命令列工具

您可以使用命令列工具檢索時間軸或者更新時間軸中繼資料。

檢索時間軸

執行query_ts_meta(簡寫為qtm)命令根據條件檢索時間軸以及返回全部或者指定個數的時間軸。更多資訊,請參見檢索時間軸掃描時間軸

  • 根據條件檢索時間軸

    以下樣本用於檢索度量名稱為cpu且資料來源標識為localhost的時間軸。

    query_ts_meta --measurement cpu --datasource localhost --limit 10

  • 掃描指定個數時間軸

    以下樣本用於返回表中10個時間軸。

    query_ts_meta --limit 10

更新時間軸中繼資料

執行update_ts_meta(簡寫為utm)命令更新時間軸中繼資料屬性。

以下樣本用於更新指定時間軸的屬性為"city=nanjing""region=jiangning"

update_ts_meta --k '["cpu","localhost",["city=hangzhou","region=xihu"]]' --attrs '["city=nanjing","region=jiangning"]' 

使用SDK

您可以使用Java SDKGo SDK檢索時間軸、更新時間軸中繼資料或者刪除時間軸中繼資料。此處以Java SDK為例介紹資料寫入的使用。

檢索時間軸

以下樣本用於查詢指定時序表中度量名稱為cpu,標籤中含有os標籤且標籤首碼為Ubuntu的所有時間軸。

private static void queryTimeseriesMeta(TimeseriesClient client) {
    // 填寫時序表名稱。
    String tableName = "<TIME_SERIES_TABLE>";
    QueryTimeseriesMetaRequest queryTimeseriesMetaRequest = new QueryTimeseriesMetaRequest(tableName);
    // 查詢度量名稱為cpu,標籤中含有os標籤且首碼為"Ubuntu"的所有時間軸。即measurement_name="cpu" and have_prefix(os, "Ubuntu")。
    CompositeMetaQueryCondition compositeMetaQueryCondition = new CompositeMetaQueryCondition(MetaQueryCompositeOperator.OP_AND);
    compositeMetaQueryCondition.addSubCondition(new MeasurementMetaQueryCondition(MetaQuerySingleOperator.OP_EQUAL, "cpu"));
    compositeMetaQueryCondition.addSubCondition(new TagMetaQueryCondition(MetaQuerySingleOperator.OP_PREFIX, "os", "Ubuntu"));
    queryTimeseriesMetaRequest.setCondition(compositeMetaQueryCondition);
    queryTimeseriesMetaRequest.setGetTotalHits(true);
    // 限制單次請求返回的時間軸中繼資料條數。
    queryTimeseriesMetaRequest.setLimit(100);
    // 發起查詢。
    QueryTimeseriesMetaResponse queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
    // 列印合格時間軸的總條數。
    System.out.println(queryTimeseriesMetaResponse.getTotalHits());

    // 儲存請求結果。
    List<TimeseriesMeta> timeseriesMetas = new ArrayList<TimeseriesMeta>();
    timeseriesMetas.addAll(queryTimeseriesMetaResponse.getTimeseriesMetas());

    // 如果有NextToken,可以繼續發起請求擷取。
    while (queryTimeseriesMetaResponse.getNextToken() != null) {
        queryTimeseriesMetaRequest.setNextToken(queryTimeseriesMetaResponse.getNextToken());
        queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
        timeseriesMetas.addAll(queryTimeseriesMetaResponse.getTimeseriesMetas());
        // 限制總共擷取的條數。
        if (timeseriesMetas.size() >= 1000) {
            break;
        }
    }

    System.out.println(timeseriesMetas.size());
    for (TimeseriesMeta timeseriesMeta : timeseriesMetas) {
        System.out.println(timeseriesMeta.getTimeseriesKey().getMeasurementName());
        System.out.println(timeseriesMeta.getTimeseriesKey().getDataSource());
        System.out.println(timeseriesMeta.getTimeseriesKey().getTags());
        System.out.println(timeseriesMeta.getAttributes());
        System.out.println(timeseriesMeta.getUpdateTimeInUs());
    }
}

更新時間軸中繼資料

以下樣本用於更新指定時序表中時間軸的屬性資訊。

private static void updateTimeseriesMeta(TimeseriesClient client) {
    List<TimeseriesMeta> timeseriesMetaList = new ArrayList<TimeseriesMeta>();
    for (int i = 0; i < 10; i++) {
        Map<String, String> tags = new HashMap<String, String>();
        tags.put("region", "hangzhou");
        tags.put("os", "Ubuntu16.04");
        // 構造TimeseriesKey。
        TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_" + i, tags);
        TimeseriesMeta meta = new TimeseriesMeta(timeseriesKey);
        // 設定時間軸的屬性值(attributes)。
        Map<String, String> attrs = new HashMap<String, String>();
        attrs.put("status", "online");
        meta.setAttributes(attrs);
        timeseriesMetaList.add(meta);
    }
    // 填寫時序表名稱。
    String tableName = "<TIME_SERIES_TABLE>";
    UpdateTimeseriesMetaRequest updateTimeseriesMetaRequest = new UpdateTimeseriesMetaRequest(tableName);
    updateTimeseriesMetaRequest.setMetas(timeseriesMetaList);
    UpdateTimeseriesMetaResponse updateTimeseriesMetaResponse = client.updateTimeseriesMeta(updateTimeseriesMetaRequest);
    // 檢查是否全部成功。
    if (!updateTimeseriesMetaResponse.isAllSuccess()) {
        for (UpdateTimeseriesMetaResponse.FailedRowResult failedRowResult : updateTimeseriesMetaResponse.getFailedRows()) {
            System.out.println(failedRowResult.getIndex());
            System.out.println(failedRowResult.getError());
        }
    }
}

刪除時間軸中繼資料

以下樣本用於刪除指定時序表中的部分時間軸。

private static void deleteTimeseriesMeta(TimeseriesClient client) {
    List<TimeseriesKey> timeseriesKeyList = new ArrayList<TimeseriesKey>();
    for (int i = 0; i < 10; i++) {
        Map<String, String> tags = new HashMap<String, String>();
        tags.put("region", "hangzhou");
        tags.put("os", "Ubuntu16.04");
        // 構造TimeseriesKey。
        TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_" + i, tags);
        timeseriesKeyList.add(timeseriesKey);
    }
    // 填寫時序表名稱。
    String tableName = "<TIME_SERIES_TABLE>";
    DeleteTimeseriesMetaRequest deleteTimeseriesMetaRequest = new DeleteTimeseriesMetaRequest(tableName);
    deleteTimeseriesMetaRequest.setTimeseriesKeys(timeseriesKeyList);
    DeleteTimeseriesMetaResponse deleteTimeseriesMetaResponse = client.deleteTimeseriesMeta(deleteTimeseriesMetaRequest);
    // 檢查是否全部成功。
    if (!deleteTimeseriesMetaResponse.isAllSuccess()) {
        for (DeleteTimeseriesMetaResponse.FailedRowResult failedRowResult : deleteTimeseriesMetaResponse.getFailedRows()) {
            System.out.println(failedRowResult.getIndex());
            System.out.println(failedRowResult.getError());
        }
    }
}

常見問題

如何刪除時序資料

相關文檔

  • 檢索到時間軸後,您可以根據時間軸查詢時間軸中滿足指定條件的時序資料。更多資訊,請參見查詢時序資料

  • 如果要自動清理不需要的時間軸中繼資料或者延長時間軸中繼資料的儲存時間,您可以通過配置時間軸中繼資料生命週期實現。更多資訊,請參見時序資料生命週期