通过Go SDK调用GetRange接口,读取Lastpoint索引中的全部数据。
注意事项
Lastpoint索引功能要求表格存储Go SDK v1.7.15及以上版本,请在使用前确认SDK版本。
前提条件
已在时序表上创建Lastpoint索引。具体操作,请参见创建Lastpoint索引。
查询Lastpoint索引数据
Lastpoint索引为每个时间序列保存最新的数据点,无需扫描整张时序表即可获取各时间序列的最新状态。使用GetRange接口可全量扫描Lastpoint索引,一次性读取所有时间序列的最新值。
以下示例读取Lastpoint索引中的全部行。MaxVersion固定设置为1:Lastpoint索引采用最新点语义,每个主键只保留最近一次写入,因此每行只存在一个版本。
func GetRange(client *tablestore.TableStoreClient, lastpointName string) {
getRangeRequest := &tablestore.GetRangeRequest{}
rangeRowQueryCriteria := &tablestore.RangeRowQueryCriteria{}
rangeRowQueryCriteria.TableName = lastpointName
startPK := new(tablestore.PrimaryKey)
startPK.AddPrimaryKeyColumnWithMinValue("_#h")
startPK.AddPrimaryKeyColumnWithMinValue("_m_name")
startPK.AddPrimaryKeyColumnWithMinValue("_data_source")
startPK.AddPrimaryKeyColumnWithMinValue("_tags")
endPK := new(tablestore.PrimaryKey)
endPK.AddPrimaryKeyColumnWithMaxValue("_#h")
endPK.AddPrimaryKeyColumnWithMaxValue("_m_name")
endPK.AddPrimaryKeyColumnWithMaxValue("_data_source")
endPK.AddPrimaryKeyColumnWithMaxValue("_tags")
rangeRowQueryCriteria.StartPrimaryKey = startPK
rangeRowQueryCriteria.EndPrimaryKey = endPK
rangeRowQueryCriteria.Direction = tablestore.FORWARD
// MaxVersion固定为1:Lastpoint索引采用最新点语义,每个主键只保留最近一次写入。
rangeRowQueryCriteria.MaxVersion = 1
getRangeRequest.RangeRowQueryCriteria = rangeRowQueryCriteria
getRangeResp, err := client.GetRange(getRangeRequest)
fmt.Println("get range result is ", getRangeResp)
for {
if err != nil {
fmt.Println("get range failed with error:", err)
}
for _, row := range getRangeResp.Rows {
fmt.Println("range get row with key", row.PrimaryKey.PrimaryKeys[0].Value, row.PrimaryKey.PrimaryKeys[1].Value, row.PrimaryKey.PrimaryKeys[2].Value)
}
if getRangeResp.NextStartPrimaryKey == nil {
break
} else {
fmt.Println("next pk is :", getRangeResp.NextStartPrimaryKey.PrimaryKeys[0].Value, getRangeResp.NextStartPrimaryKey.PrimaryKeys[1].Value, getRangeResp.NextStartPrimaryKey.PrimaryKeys[2].Value)
getRangeRequest.RangeRowQueryCriteria.StartPrimaryKey = getRangeResp.NextStartPrimaryKey
getRangeResp, err = client.GetRange(getRangeRequest)
}
fmt.Println("continue to query rows")
}
fmt.Println("range get row finished")
}
相关文档
如需了解更多通过Go SDK读取数据的方式,请参见读取数据。
如需对Lastpoint索引执行多条件组合查询、全文检索、前缀查询、模糊查询等更灵活的加速查询,可在Lastpoint索引上创建多元索引。更多信息,请参见检索Lastpoint索引。
该文章对您有帮助吗?