Lakukan kueri data dalam indeks Lastpoint menggunakan Tablestore SDK for Go.
Catatan penggunaan
Fitur indeks Lastpoint memerlukan Tablestore SDK for Go versi 1.7.15 atau lebih baru. Tingkatkan SDK Anda sebelum menggunakan fitur ini.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Membuat indeks Lastpoint untuk tabel time series. Untuk informasi selengkapnya, lihat Create a Lastpoint index.
Kueri data dari indeks Lastpoint
Indeks Lastpoint menyimpan titik data terbaru untuk setiap deret waktu. Gunakan operasi GetRange untuk memindai semua entri dan mengambil nilai terbaru tanpa perlu memindai seluruh tabel time series.
Contoh berikut membaca semua baris dari indeks Lastpoint. Atur MaxVersion ke 1 karena indeks Lastpoint menerapkan semantik last-point—setiap kunci primary hanya menyimpan tulisan terbaru, sehingga hanya ada satu versi per baris.
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
// Atur MaxVersion ke 1. Indeks Lastpoint menggunakan semantik last-point,
// sehingga setiap kunci primary hanya menyimpan tulisan terbaru.
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")
}
Langkah berikutnya
Untuk membaca data dari tabel time series menggunakan metode Tablestore SDK for Go lainnya, lihat Read data.
Untuk menjalankan kueri yang lebih cepat terhadap indeks Lastpoint—seperti kueri Boolean, pencarian teks lengkap (full-text search), kueri prefix, dan kueri fuzzy—buat search index pada indeks Lastpoint. Untuk informasi selengkapnya, lihat Retrieve a Lastpoint index.