使用 Java SDK 按主键范围读取 Lastpoint 索引中每条时间线的最新时间点数据。
前提条件
安装Tablestore Java SDK并初始化客户端。Lastpoint 索引需要使用 5.17.1 及以上版本,建议使用最新版本。
功能说明
Lastpoint 索引可以按数据表读取。调用 getRange 方法并指定主键范围,可读取范围内的最新时间点数据。对于使用默认时间线标识的时序表,Lastpoint 索引依次包含 _#h、_m_name、_data_source 和 _tags 四个主键列。
public GetRangeResponse getRange(GetRangeRequest getRangeRequest) throws TableStoreException, ClientException
以下示例将四个主键列的起始值设置为 INF_MIN,结束值设置为 INF_MAX,分页读取 example_lastpoint_index 中的全部数据。
RangeRowQueryCriteria criteria =
new RangeRowQueryCriteria("example_lastpoint_index");
PrimaryKey startPrimaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("_#h", PrimaryKeyValue.INF_MIN)
.addPrimaryKeyColumn("_m_name", PrimaryKeyValue.INF_MIN)
.addPrimaryKeyColumn("_data_source", PrimaryKeyValue.INF_MIN)
.addPrimaryKeyColumn("_tags", PrimaryKeyValue.INF_MIN)
.build();
PrimaryKey endPrimaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("_#h", PrimaryKeyValue.INF_MAX)
.addPrimaryKeyColumn("_m_name", PrimaryKeyValue.INF_MAX)
.addPrimaryKeyColumn("_data_source", PrimaryKeyValue.INF_MAX)
.addPrimaryKeyColumn("_tags", PrimaryKeyValue.INF_MAX)
.build();
criteria.setInclusiveStartPrimaryKey(startPrimaryKey);
criteria.setExclusiveEndPrimaryKey(endPrimaryKey);
criteria.setMaxVersions(1);
while (true) {
GetRangeResponse response =
client.getRange(new GetRangeRequest(criteria));
response.getRows().forEach(System.out::println);
if (response.getNextStartPrimaryKey() == null) {
break;
}
criteria.setInclusiveStartPrimaryKey(
response.getNextStartPrimaryKey());
}
参数说明
GetRangeRequest 包含以下参数。
|
名称 |
类型 |
说明 |
|
rangeRowQueryCriteria(必选) |
|
范围读取条件。 |
范围读取条件
rangeRowQueryCriteria 包含以下参数。
|
名称 |
类型 |
说明 |
|
tableName(必选) |
|
Lastpoint 索引名称。 |
|
inclusiveStartPrimaryKey(必选) |
|
读取范围的起始主键,包含该主键。必须按索引中的顺序设置全部主键列。 |
|
exclusiveEndPrimaryKey(必选) |
|
读取范围的结束主键,不包含该主键。必须按索引中的顺序设置全部主键列。 |
|
maxVersions(必选) |
|
每列最多返回的版本数。Lastpoint 索引中的每个字段只保留最新值,设置为 |
|
columnsToGet(可选) |
|
要返回的属性列名称。不设置时返回全部属性列。 |
|
direction(可选) |
|
读取方向,取值为 |
|
limit(可选) |
|
单次请求最多返回的行数,必须大于 |
返回值
GetRangeResponse 包含以下业务返回字段。
|
字段 |
类型 |
说明 |
|
|
|
通过 |
|
|
|
通过 |
Lastpoint 数据结构
对于使用默认时间线标识的时序表,每行 Lastpoint 数据包含以下字段。
|
字段 |
类型 |
说明 |
|
|
|
系统根据时间线生成的分区键。 |
|
|
|
度量名称。 |
|
|
|
数据源。 |
|
|
|
时间线标签。 |
|
|
|
最新时间点的时间戳,单位为微秒。 |
|
数据字段 |
|
最新时间点包含的数据字段及其值。 |