创建时序表

当使用表格存储时序模型时,您需要使用CreateTimeseriesTable接口创建时序表用于存储时序数据。创建时序表时支持配置数据生命周期、时序时间线表的配置信息、自定义时间线标识和作为主键的数据字段、创建Lastpoint索引以及创建分析存储分析存储可用于快速分析时序数据。Lastpoint索引可用于快速检索各时间线的最新时间点的数据。

前提条件

  • 已通过控制台创建实例。具体操作,请参见创建时序模型实例

    重要

    如果要使用分析存储或Lastpoint索引,请在支持分析存储或Lastpoint索引的地域创建时序模型实例。具体操作,请参见创建时序模型实例

  • 已初始化TimeseriesClient。具体操作,请参见初始化OTSClient

注意事项

  • 时序表的名称不能与当前已存在的数据表名称相同。

    说明

    您可以使用ListTimeseriesTable接口列出指定实例下已有的时序表名称。具体操作,请参见列出时序表名称

  • 一个时序表只能创建一个分析存储。

  • 一个时序表最多只能创建10Lastpoint索引。

  • 一个时序表最多只能添加4个作为主键的数据字段。

  • 为一个时序表自定义时间线标识时,最多只能添加6个字段。

参数

参数

说明

TimeseriesTableMeta

时序表的结构信息,包含如下内容:

  • timeseriesTableName:时序表名。

  • timeseriesMetaOptions:时序时间线表的配置信息,包括如下内容:

    • metaTimeToLive:配置时序时间线表的时间线数据存活时间,单位为秒。取值必须大于等于604800秒(即7天)或者必须为-1(数据永不过期)。

    • allowUpdateAttributes:是否允许更新时间线属性列。

    您可以通过UpdateTimeseriesTable接口修改相应配置。

  • timeseriesTableOptions:时序表的配置信息,包括如下内容:

    timeToLive:配置时序表的数据存活时间,单位为秒。如果希望数据永不过期,可以设置为-1。您可以通过UpdateTimeseriesTable接口修改。

  • timeseriesKeys:自定义时间线标识信息,默认使用度量名称、数据源和标签构成时间线标识。更多信息,请参见自定义时间线标识和作为主键的数据字段。只有当要自定义时间线标识时,才需要设置此参数。

  • fieldPrimaryKeys:作为主键的数据字段,可用于实现在时序表中存储多行时间线标识和时间点相同的数据。更多信息,请参见自定义时间线标识和作为主键的数据字段。只有当要同时保存时间线标识相同的多行数据时,才需要设置此参数。

  • lastpointIndexes:Lastpoint索引名称。关于Lastpoint索引的更多信息,请参见Lastpoint索引

enableAnalyticalStore

是否创建默认分析存储。默认值为true,表示创建默认分析存储。

创建分析存储后,您可以使用分析存储低成本存储时序数据以及查询与分析时序数据。更多信息,请参见时序分析存储概述

如果不需要创建分析存储,请将此参数设置为false。

analyticalStores

重要

当前支持使用分析存储功能的地域有华东1(杭州)、华东2(上海)、华北2(北京)和华北3(张家口)地域。更多信息,请参见时序分析存储概述

分析存储配置,包括如下内容:

  • analyticalStoreName:分析存储名称。

  • timeToLive:分析存储的数据生命周期。单位为秒。取值范围为-1(数据永不过期)或者大于等于2592000秒(即30天)的int32的正整数。

    如果希望数据永不过期,可以设置为-1。

  • syncOption:数据同步配置。固定取值为SYNC_TYPE_FULL。

示例

创建不带分析存储的时序表

以下示例用于创建一个时序表。

/**
 * CreateTimeseriesTableSample用于创建一个时序表,时序表名为timeseriesTableName,TTL为timeTolive。
 */
func CreateTimeseriesTableSample(client *tablestore.TimeseriesClient, timeseriesTableName string , timeToLive int64) {
    fmt.Println("[Info]: Begin to create timeseries table: " , timeseriesTableName)

    // 构造时序表配置信息。
    timeseriesTableOptions := tablestore.NewTimeseriesTableOptions(timeToLive) 

    // 构造表元数据信息。
    // 设置时序表名。
    timeseriesTableMeta := tablestore.NewTimeseriesTableMeta(timeseriesTableName) 
    // 设置时序表配置信息。
    timeseriesTableMeta.SetTimeseriesTableOptions(timeseriesTableOptions)    

    // 构造创建时序表请求。
    createTimeseriesTableRequest := tablestore.NewCreateTimeseriesTableRequest()   
    createTimeseriesTableRequest.SetTimeseriesTableMeta(timeseriesTableMeta)
    // 不创建默认分析存储。
    createTimeseriesTableRequest.SetEnableAnalyticalStore(false)  

    // 调用client创建时序表。
    createTimeseriesTableResponse , err := client.CreateTimeseriesTable(createTimeseriesTableRequest) 
    if err != nil {
        fmt.Println("[Error]: Failed to create timeseries table with error: " , err)
        return
    }
    fmt.Println("[Info]: CreateTimeseriesTable finished! RequestId: " , createTimeseriesTableResponse.RequestId)
}

创建时序表时创建分析存储

创建时序表时支持创建默认分析存储或者创建自定义分析存储。

创建时序表时创建默认分析存储

以下示例用于创建时序表的同时创建一个默认分析存储。其中默认分析存储的名称固定为default_analytical_store,且默认分析存储内的数据永不过期。

/**
 * CreateTimeseriesTableSample用于创建一个时序表,时序表名为timeseriesTableName,TTL为timeTolive。
 */
func CreateTimeseriesTableSample(client *tablestore.TimeseriesClient, timeseriesTableName string , timeToLive int64) {
    fmt.Println("[Info]: Begin to create timeseries table: " , timeseriesTableName)

    // 构造时序表配置信息。
    timeseriesTableOptions := tablestore.NewTimeseriesTableOptions(timeToLive)        

    // 构造表元数据信息。
    // 设置时序表名。
    timeseriesTableMeta := tablestore.NewTimeseriesTableMeta(timeseriesTableName)  
    // 设置时序表配置信息。
    timeseriesTableMeta.SetTimeseriesTableOptions(timeseriesTableOptions)      

    // 构造创建时序表请求。
    createTimeseriesTableRequest := tablestore.NewCreateTimeseriesTableRequest()    
    createTimeseriesTableRequest.SetTimeseriesTableMeta(timeseriesTableMeta)

    // 调用client创建时序表。
    createTimeseriesTableResponse , err := client.CreateTimeseriesTable(createTimeseriesTableRequest)    
    if err != nil {
        fmt.Println("[Error]: Failed to create timeseries table with error: " , err)
        return
    }
    fmt.Println("[Info]: CreateTimeseriesTable finished! RequestId: " , createTimeseriesTableResponse.RequestId)
}

创建时序表时创建自定义分析存储

以下示例用于创建时序表的同时创建一个自定义分析存储。该自定义分析存储的名称为test_analytical_store,且自定义分析存储内的数据永不过期。

/**
 * CreateTimeseriesTableSample用于创建一个时序表,时序表名为timeseriesTableName,TTL为timeTolive,并且创建一个分析存储test_analytical_store。
 */
func CreateTimeseriesTableSample(client *tablestore.TimeseriesClient, timeseriesTableName string , timeToLive int64) {
    fmt.Println("[Info]: Begin to create timeseries table: " , timeseriesTableName)

    // 构造时序表配置信息。
    timeseriesTableOptions := tablestore.NewTimeseriesTableOptions(timeToLive)    

    // 构造表元数据信息。
    // 设置时序表名。
    timeseriesTableMeta := tablestore.NewTimeseriesTableMeta(timeseriesTableName)  
    // 设置时序表配置信息。
    timeseriesTableMeta.SetTimeseriesTableOptions(timeseriesTableOptions)  

    // 构造创建时序表请求。
    createTimeseriesTableRequest := tablestore.NewCreateTimeseriesTableRequest() 
    createTimeseriesTableRequest.SetTimeseriesTableMeta(timeseriesTableMeta)

    // 构造分析存储配置信息。
    createTimeseriesTableRequest.SetAnalyticalStores([]*tablestore.TimeseriesAnalyticalStore{
        tablestore.NewTimeseriesAnalyticalStore("test_analytical_store"),
    })

    // 调用client创建时序表。
    createTimeseriesTableResponse , err := client.CreateTimeseriesTable(createTimeseriesTableRequest) 
    if err != nil {
        fmt.Println("[Error]: Failed to create timeseries table with error: " , err)
        return
    }
    fmt.Println("[Info]: CreateTimeseriesTable finished! RequestId: " , createTimeseriesTableResponse.RequestId)
}

创建时序表时自定义时间线标识和作为主键的数据字段

重要

表格存储Go SDK最新版本支持自定义时间线标识和作为主键的数据字段功能。使用该功能时,请确保获取了正确的Go SDK版本。

以下示例创建一张时序表,时间线标识由pk1pk2构成,同时有三个作为主键的数据字段field1、field2field3,字段类型分别为整型、字符串和二进制。

/**
 * CreateTimeseriesTableSample用于创建一个时序表,时序表名为timeseriesTableName,TTL为timeTolive。
 */
func CreateTimeseriesTableSample(client *tablestore.TimeseriesClient, timeseriesTableName string, timeToLive int64) {
	fmt.Println("[Info]: Begin to create timeseries table: ", timeseriesTableName)

	timeseriesTableOptions := tablestore.NewTimeseriesTableOptions(timeToLive)
	timeseriesTableMeta := tablestore.NewTimeseriesTableMeta(timeseriesTableName)
	timeseriesTableMeta.SetTimeseriesTableOptions(timeseriesTableOptions)
	// 添加自定义时间线标识。
	timeseriesTableMeta.AddTimeseriesKey("pk1")
	timeseriesTableMeta.AddTimeseriesKey("pk2")
	// 添加作为主键的数据字段。
	timeseriesTableMeta.AddFieldPrimaryKey("field1", tablestore.PrimaryKeyType_INTEGER)
	timeseriesTableMeta.AddFieldPrimaryKey("field1", tablestore.PrimaryKeyType_STRING)
	timeseriesTableMeta.AddFieldPrimaryKey("field3", tablestore.PrimaryKeyType_BINARY)
	// 构造创建时序表请求。
	createTimeseriesTableRequest := tablestore.NewCreateTimeseriesTableRequest()
	createTimeseriesTableRequest.SetTimeseriesTableMeta(timeseriesTableMeta)

	createTimeseriesTableResponse, err := client.CreateTimeseriesTable(createTimeseriesTableRequest)
	if err != nil {
		fmt.Println("[Error]: Failed to create timeseries table with error: ", err)
		return
	}
	fmt.Println("[Info]: CreateTimeseriesTable finished! RequestId: ", createTimeseriesTableResponse.RequestId)
}

创建时序表时配置Lastpoint索引

重要

表格存储Go SDK最新版本支持Lastpoint索引功能。使用该功能时,请确保获取了正确的Go SDK版本。

以下示例用于在创建一张时序表时同时创建名称为index1Lastpoint索引。

func createTimeseriesTable(client *tablestore.TimeseriesClient) {
	timeseriesTableMeta := tablestore.NewTimeseriesTableMeta("test_timeseries_table")
	timeseriesTableMeta.SetTimeseriesTableOptions(tablestore.NewTimeseriesTableOptions(-1))
	request := tablestore.NewCreateTimeseriesTableRequest()
	request.SetTimeseriesTableMeta(timeseriesTableMeta)
	request.SetLastpointIndexNames([]string{"index1"})
	_, err := client.CreateTimeseriesTable(request)
	if err != nil {
		log.Fatal(err)
	}
}

相关文档

  • 创建时序表后,您可以写入时序数据以及读取表中时序数据。具体操作,请参见写入时序数据查询时序数据

  • 您可以通过时序Writer将时序数据写入时序表。时序Writer支持多表写入、写入状态统计、行级别回调和自定义配置功能。具体操作,请参见使用时序Writer写入时序数据

  • 如果要低成本存储时序数据以及快速查询和分析时序数据,您可以为时序表创建分析存储。具体操作,请参见创建分析存储。关于时序分析存储的更多信息,请参见时序分析存储概述

  • 如果要修改时序表的数据生命周期,您可以通过更新时序表功能实现。具体操作,请参见更新时序表

  • 如果要查询当前实例下的所有时序表,您可以通过列出时序表名称实现。具体操作,请参见列出时序表名称

  • 如果要查看时序表的详细配置信息,您可以通过查询时序表描述信息实现。更多信息,请参见查询时序表描述信息

  • 如果不再使用时序表,您可以删除时序表。具体操作,请参见删除时序表

  • 如果要以更低成本备份表格存储中的时序数据或者以文件形式导出时序数据到本地,您可以通过DataWorks数据集成服务将表格存储中的时序数据导出到OSS后进行存储或者下载。更多信息,请参见将表格存储数据同步到OSS

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

  • 通过Flink计算与分析数据后,您可以使用Tablestore时序表存储输出结果。更多信息,请参见使用教程(时序模型)

  • 在某些场景下,如果希望将时序表中的时序数据迁移到另一个时序表中,您可以使用DataWorks数据集成服务来实现。更多信息,请参见将表格存储时序表中数据同步到另一个时序表