すべてのプロダクト
Search
ドキュメントセンター

Tablestore:Lastpoint インデックス内のデータのクエリ

最終更新日:Apr 30, 2026

Tablestore SDK for Go を使用して、Lastpoint インデックス内のデータをクエリします。

注意事項

Lastpoint インデックス機能には、Tablestore SDK for Go V1.7.15 以降が必要です。この機能を使用する前に、SDK をアップグレードしてください。

前提条件

作業を開始する前に、次の要件を満たしていることを確認してください。

  • 時系列テーブルに対して Lastpoint インデックスが作成済みであること。詳細については、「Lastpoint インデックスの作成」をご参照ください。

Lastpoint インデックスからのデータのクエリ

Lastpoint インデックスには、各時系列の最新のデータポイントが格納されます。GetRange 操作を使用すると、時系列テーブル全体をスキャンすることなく、すべてのエントリをスキャンして最新の値を取得できます。

以下の例では、Lastpoint インデックスからすべての行を読み取ります。Lastpoint インデックスは last-point セマンティクスを適用するため、各プライマリキーには最新の書き込みのみが保持され、各行につき 1 つのバージョンしか存在しません。そのため、MaxVersion1 に設定します。

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 インデックスは last-point セマンティクスを使用するため、
	// 各プライマリキーには最新の書き込みのみが保持されます。
	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")
}

次のステップ

  • Tablestore SDK for Go の他のメソッドを使用して時系列テーブルからデータを読み取る方法については、「データの読み取り」をご参照ください。

  • Lastpoint インデックスに対してブール値クエリ、全文検索、プレフィックスクエリ、あいまい検索などの高速クエリを実行するには、Lastpoint インデックス上に多次元インデックスを作成します。詳細については、「Lastpoint インデックスの取得」をご参照ください。