Anda dapat melakukan operasi agregasi untuk mendapatkan nilai minimum, maksimum, jumlah, rata-rata, jumlah baris, dan jumlah unik baris. Operasi ini juga memungkinkan pengelompokan hasil berdasarkan nilai bidang, rentang, lokasi geografis, atau filter, serta mendukung kueri bersarang untuk kebutuhan yang lebih kompleks.
Prosedur
Gambar berikut mengilustrasikan prosedur lengkap untuk melakukan agregasi.

Server memeriksa data yang sesuai dengan kondisi kueri dan menjalankan agregasi sesuai permintaan. Permintaan yang melibatkan agregasi umumnya lebih kompleks untuk diproses dibandingkan dengan permintaan tanpa agregasi.
Informasi latar belakang
Tabel berikut menjelaskan metode-metode agregasi yang tersedia.
Metode | Deskripsi |
Nilai minimum | Metode agregasi yang dapat digunakan untuk mengembalikan nilai minimum dari suatu bidang. Metode ini dapat digunakan dengan cara yang mirip dengan fungsi MIN SQL. |
Nilai maksimum | Metode agregasi yang dapat digunakan untuk mengembalikan nilai maksimum dari suatu bidang. Metode ini dapat digunakan dengan cara yang mirip dengan fungsi MAX SQL. |
Jumlah | Metode agregasi yang dapat digunakan untuk mengembalikan jumlah semua nilai untuk bidang numerik. Metode ini dapat digunakan dengan cara yang mirip dengan fungsi SUM SQL. |
Nilai rata-rata | Metode agregasi yang dapat digunakan untuk mengembalikan rata-rata semua nilai untuk bidang numerik. Metode ini dapat digunakan dengan cara yang mirip dengan fungsi AVG SQL. |
Jumlah | Metode agregasi yang dapat digunakan untuk mengembalikan jumlah total nilai untuk bidang tertentu atau jumlah total baris dalam indeks pencarian. Metode ini dapat digunakan dengan cara yang mirip dengan fungsi COUNT SQL. |
Jumlah unik | Metode agregasi yang dapat digunakan untuk mengembalikan jumlah nilai unik untuk suatu bidang. Metode ini dapat digunakan dengan cara yang mirip dengan fungsi COUNT(DISTINCT) SQL. |
Statistik persentil | Nilai persentil menunjukkan posisi relatif suatu nilai dalam dataset. Misalnya, ketika Anda mengumpulkan statistik tentang waktu respons setiap permintaan selama pemeliharaan rutin sistem Anda, Anda harus menganalisis distribusi waktu respons menggunakan persentil seperti p25, p50, p90, dan p99. |
Pengelompokan berdasarkan nilai bidang | Metode agregasi yang dapat digunakan untuk mengelompokkan hasil kueri berdasarkan nilai bidang. Nilai yang sama dikelompokkan bersama. Nilai identik dari setiap kelompok dan jumlah nilai identik di setiap kelompok dikembalikan. Catatan Jumlah yang dihitung mungkin berbeda dari jumlah sebenarnya jika jumlah nilai dalam kelompok sangat besar. |
Pengelompokan berdasarkan rentang | Metode agregasi yang dapat digunakan untuk mengelompokkan hasil kueri berdasarkan rentang nilai suatu bidang. Nilai bidang yang berada dalam rentang tertentu dikelompokkan bersama. Jumlah nilai dalam setiap rentang dikembalikan. |
Pengelompokan berdasarkan lokasi geografis | Metode agregasi yang dapat digunakan untuk mengelompokkan hasil kueri berdasarkan jarak dari lokasi geografis ke titik pusat. Hasil kueri dalam jarak yang berada dalam rentang tertentu dikelompokkan bersama. Jumlah nilai dalam setiap rentang dikembalikan. |
Pengelompokan berdasarkan filter | Metode agregasi yang dapat digunakan untuk menyaring hasil kueri dan mengelompokkannya bersama untuk mendapatkan jumlah hasil yang sesuai dengan setiap filter. Hasil dikembalikan dalam urutan filter yang ditentukan. |
Kueri berdasarkan histogram | Metode agregasi yang dapat digunakan untuk mengelompokkan hasil kueri berdasarkan interval data tertentu. Nilai bidang yang berada dalam rentang yang sama dikelompokkan bersama. Rentang nilai setiap kelompok dan jumlah nilai dalam setiap kelompok dikembalikan. |
Kueri baris yang diperoleh dari hasil operasi agregasi di setiap kelompok | Setelah Anda mengelompokkan hasil kueri, Anda dapat menanyakan baris dalam setiap kelompok. Metode ini dapat digunakan dengan cara yang mirip dengan fungsi ANY_VALUE(field) di MySQL. |
Prasyarat
Instansi OTSClient harus diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi instansi OTSClient.
Tabel data harus dibuat dan data telah ditulis ke dalam tabel tersebut. Untuk detail lebih lanjut, lihat Buat tabel data dan Tulis data.
Indeks pencarian harus dibuat untuk tabel data. Untuk informasi lebih lanjut, lihat Buat indeks pencarian.
Nilai Minimum
Metode agregasi ini digunakan untuk mengembalikan nilai minimum dari suatu bidang dan bekerja mirip dengan fungsi MIN SQL.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
fieldName
Nama bidang yang digunakan untuk melakukan operasi agregasi. Hanya tipe LONG, DOUBLE, dan DATE yang didukung.
missing
Nilai default untuk bidang yang digunakan untuk melakukan operasi agregasi pada baris ketika nilai bidang kosong.
Jika Anda tidak menentukan nilai untuk missing, baris akan diabaikan.
Jika Anda menentukan nilai untuk missing, nilai parameter ini digunakan sebagai nilai bidang baris tersebut.
Contoh
let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: false, aggs: { aggs: [ { name: "min_test", type: TableStore.AggregationType.AGG_MIN, body: { fieldName: "col_long", missing: 333, }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });
Nilai Maksimum
Metode agregasi ini digunakan untuk mengembalikan nilai maksimum dari suatu bidang dan bekerja mirip dengan fungsi MAX SQL.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
fieldName
Nama bidang yang digunakan untuk melakukan operasi agregasi. Hanya tipe LONG, DOUBLE, dan DATE yang didukung.
missing
Nilai default untuk bidang yang digunakan untuk melakukan operasi agregasi pada baris ketika nilai bidang kosong.
Jika Anda tidak menentukan nilai untuk missing, baris akan diabaikan.
Jika Anda menentukan nilai untuk missing, nilai parameter ini digunakan sebagai nilai bidang baris tersebut.
Contoh
let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: false, aggs: { aggs: [ { name: "max_test", type: TableStore.AggregationType.AGG_MAX, body: { fieldName: "col_long", missing: 333, }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });
Jumlah
Metode agregasi ini digunakan untuk menghitung total nilai dari bidang numerik dan bekerja mirip dengan fungsi SUM SQL.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
fieldName
Nama bidang yang digunakan untuk melakukan operasi agregasi. Hanya tipe data LONG dan DOUBLE yang didukung.
missing
Nilai default untuk bidang yang digunakan untuk melakukan operasi agregasi pada baris ketika nilai bidang kosong.
Jika Anda tidak menentukan nilai untuk missing, baris akan diabaikan.
Jika Anda menentukan nilai untuk missing, nilai parameter ini digunakan sebagai nilai bidang baris tersebut.
Contoh
let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: false, aggs: { aggs: [ { name: "sum_test", type: TableStore.AggregationType.AGG_SUM, body: { fieldName: "col_long", missing: 444, }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });
Nilai Rata-rata
Metode agregasi ini digunakan untuk menghitung rata-rata nilai dari bidang numerik dan bekerja mirip dengan fungsi AVG SQL.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
fieldName
Nama bidang yang digunakan untuk melakukan operasi agregasi. Hanya tipe LONG, DOUBLE, dan DATE yang didukung.
missing
Nilai default untuk bidang yang digunakan untuk melakukan operasi agregasi pada baris ketika nilai bidang kosong.
Jika Anda tidak menentukan nilai untuk missing, baris akan diabaikan.
Jika Anda menentukan nilai untuk missing, nilai parameter ini digunakan sebagai nilai bidang baris tersebut.
Contoh
let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: false, aggs: { aggs: [ { name: "avg_test", type: TableStore.AggregationType.AGG_AVG, body: { fieldName: "col_long", missing: 111, }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });
Jumlah
Metode agregasi ini digunakan untuk menghitung jumlah total nilai pada bidang tertentu atau jumlah total baris dalam indeks pencarian, mirip dengan fungsi COUNT SQL.
Berikut adalah cara untuk menanyakan jumlah total baris dalam indeks pencarian atau jumlah baris yang memenuhi kondisi kueri:
Gunakan fitur count dari agregasi dan tentukan count(*) dalam permintaan.
Gunakan fitur kueri untuk mendapatkan jumlah baris yang memenuhi kondisi kueri. Atur setGetTotalCount ke true dalam kueri. Gunakan MatchAllQuery untuk mendapatkan jumlah total baris dalam indeks pencarian.
Nama kolom dapat digunakan sebagai nilai ekspresi count untuk menanyakan jumlah baris yang berisi kolom dalam indeks pencarian. Metode ini cocok untuk skenario yang melibatkan kolom jarang.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
fieldName
Nama bidang yang digunakan untuk melakukan operasi agregasi. Hanya tipe LONG, DOUBLE, BOOLEAN, KEYWORD, GEO_POINT, dan DATE yang didukung.
Contoh
let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: false, aggs: { aggs: [ { name: "count_test", type: TableStore.AggregationType.AGG_COUNT, body: { fieldName: "col_long", }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });
Jumlah Unik
Metode agregasi ini digunakan untuk menghitung jumlah nilai unik pada suatu bidang dan bekerja mirip dengan fungsi COUNT(DISTINCT) SQL.
Jumlah nilai unik merupakan angka perkiraan.
Jika jumlah total baris sebelum menggunakan fitur distinct count kurang dari 10.000, hasil perhitungan mendekati nilai eksak.
Jika jumlah total baris sebelum menggunakan fitur distinct count lebih besar dari atau sama dengan 100 juta, tingkat kesalahan sekitar 2%.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
fieldName
Nama bidang yang digunakan untuk melakukan operasi agregasi. Hanya tipe LONG, DOUBLE, BOOLEAN, KEYWORD, GEO_POINT, dan DATE yang didukung.
missing
Nilai default untuk bidang yang digunakan untuk melakukan operasi agregasi pada baris ketika nilai bidang kosong.
Jika Anda tidak menentukan nilai untuk missing, baris akan diabaikan.
Jika Anda menentukan nilai untuk missing, nilai parameter ini digunakan sebagai nilai bidang baris tersebut.
Contoh
let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: false, aggs: { aggs: [ { name: "AGG_DISTINCT_COUNT_test", type: TableStore.AggregationType.AGG_DISTINCT_COUNT, body: { fieldName: "col_long", missing: 666, }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });
Statistik Persentil
Nilai persentil menunjukkan posisi relatif suatu nilai dalam dataset. Misalnya, saat menganalisis waktu respons selama pemeliharaan sistem, Anda dapat menggunakan persentil seperti p25, p50, p90, dan p99 untuk memahami distribusi waktu respons.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
fieldName
Nama bidang yang digunakan untuk melakukan operasi agregasi. Hanya tipe LONG, DOUBLE, dan DATE yang didukung.
percentiles
Persentil seperti p50, p90, dan p99. Anda dapat menentukan satu atau lebih persentil.
missing
Nilai default untuk bidang yang digunakan untuk melakukan operasi agregasi pada baris ketika nilai bidang kosong.
Jika Anda tidak menentukan nilai untuk missing, baris akan diabaikan.
Jika Anda menentukan nilai untuk missing, nilai parameter ini digunakan sebagai nilai bidang baris tersebut.
Contoh
let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: false, aggs: { aggs: [ { name: "AGG_PERCENTILES_test", type: TableStore.AggregationType.AGG_PERCENTILES, body: { fieldName: "col_long", percentiles: [20, 50, 90, 100], missing: 888, }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });
Pengelompokan Berdasarkan Nilai Bidang
Metode agregasi ini digunakan untuk mengelompokkan hasil kueri berdasarkan nilai bidang. Nilai identik dikelompokkan bersama, dan jumlah nilai dalam setiap kelompok dikembalikan.
Jumlah yang dihitung mungkin berbeda dari jumlah sebenarnya jika jumlah nilai dalam kelompok sangat besar.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
fieldName
Nama bidang yang digunakan untuk melakukan operasi agregasi. Hanya tipe LONG, DOUBLE, BOOLEAN, KEYWORD, dan DATE yang didukung.
sort
Aturan pengurutan untuk kelompok. Secara default, kelompok diurutkan berdasarkan jumlah item dalam kelompok secara menurun. Jika Anda mengonfigurasi beberapa aturan pengurutan, kelompok diurutkan berdasarkan urutan konfigurasi aturan tersebut. Aturan pengurutan yang didukung:
Urutkan berdasarkan nilai secara alfabetis.
Urutkan berdasarkan nilai secara alfabetis terbalik.
Urutkan berdasarkan jumlah baris secara menaik.
Urutkan berdasarkan jumlah baris secara menurun.
Urutkan berdasarkan nilai yang diperoleh dari hasil sub-agregasi secara menaik.
Urutkan berdasarkan nilai yang diperoleh dari hasil sub-agregasi secara menurun.
size
Jumlah kelompok yang ingin Anda kembalikan. Nilai default: 10. Nilai maksimum: 2000. Jika jumlah kelompok melebihi 2.000, hanya 2.000 kelompok pertama yang dikembalikan.
subAggs dan subGroupBys
Operasi sub-agregasi. Anda dapat melakukan operasi sub-agregasi berdasarkan hasil pengelompokan.
Skenario
Tanyakan jumlah produk dalam setiap kategori, serta harga produk maksimum dan minimum dalam setiap kategori.
Metode
Kelompokkan hasil kueri berdasarkan kategori produk untuk mendapatkan jumlah produk dalam setiap kategori. Kemudian, lakukan dua operasi sub-agregasi untuk mendapatkan harga produk maksimum dan minimum dalam setiap kategori.
Contoh:
Buah-buahan: 5. Harga maksimum adalah CNY 15. Harga minimum adalah CNY 3.
Perlengkapan mandi: 10. Harga maksimum adalah CNY 98. Harga minimum adalah CNY 1.
Perangkat elektronik: 3. Harga maksimum adalah CNY 8.699. Harga minimum adalah CNY 2.300.
Produk lainnya: 15. Harga maksimum adalah CNY 1.000. Harga minimum adalah CNY 80.
Contoh
let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: false, groupBys: { groupBys: [ { name: "group_by_GROUP_BY_FIELD", type: TableStore.GroupByType.GROUP_BY_FIELD, body: { fieldName: "city", size: 111, sort: { sorters: [ { groupKeySort: { order: TableStore.SortOrder.SORT_ORDER_ASC, }, }, { rowCountSort: { order: TableStore.SortOrder.SORT_ORDER_DESC, }, }, ], }, subGroupBys: { // SubGroupBys bersarang. groupBys: [ { name: "group_by_GROUP_BY_RANGE", type: TableStore.GroupByType.GROUP_BY_RANGE, body: { fieldName: "age", ranges: [ { from: 4, to: 5, }, { from: 6, to: 7, }, ], subAggs: { // Sub-agregasi bersarang. aggs: [ { name: "AGG_COUNT_test", type: TableStore.AggregationType.AGG_COUNT, body: { fieldName: "*", missing: 8, }, }, ], }, }, }, ], }, }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });
Pengelompokan Berdasarkan Rentang
Metode agregasi ini digunakan untuk mengelompokkan hasil kueri berdasarkan rentang nilai suatu bidang. Nilai dalam rentang tertentu dikelompokkan bersama, dan jumlah nilai dalam setiap rentang dikembalikan.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
fieldName
Nama bidang yang digunakan untuk melakukan operasi agregasi. Hanya tipe LONG dan DOUBLE yang didukung.
ranges[from, to)
Rentang nilai yang digunakan untuk pengelompokan.
Rentang nilai dapat dimulai dari Double.MIN_VALUE dan berakhir dengan Double.MAX_VALUE.
subAggs dan subGroupBys
Operasi sub-agregasi. Anda dapat melakukan operasi sub-agregasi berdasarkan hasil pengelompokan.
Sebagai contoh, setelah Anda mengelompokkan hasil kueri berdasarkan volume penjualan dan berdasarkan provinsi, Anda dapat memperoleh provinsi yang memiliki proporsi volume penjualan terbesar dalam rentang tertentu. Anda harus menentukan nilai untuk GroupByField dalam GroupByRange untuk melakukan kueri ini.
Contoh
let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: false, groupBys: { groupBys: [ { name: "group_by_GROUP_BY_RANGE", type: TableStore.GroupByType.GROUP_BY_RANGE, body: { fieldName: "col_long", ranges: [ { from: 1, to: 5, }, { from: 3, to: 20, }, ], }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });
Pengelompokan Berdasarkan Lokasi Geografis
Metode agregasi ini digunakan untuk mengelompokkan hasil kueri berdasarkan jarak dari lokasi geografis ke titik pusat. Hasil dalam rentang tertentu dikelompokkan bersama, dan jumlah nilai dalam setiap rentang dikembalikan.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
fieldName
Nama bidang yang digunakan untuk operasi agregasi. Hanya tipe GEOPOINT yang didukung.
origin(lat, lon)
Garis bujur dan lintang titik pusat.
lat menentukan lintang titik pusat. lon menentukan bujur titik pusat.
ranges[from, to)
Rentang jarak yang digunakan untuk pengelompokan. Satuan: meter.
Rentang nilai dapat dimulai dari Double.MIN_VALUE dan berakhir dengan Double.MAX_VALUE.
subAggs dan subGroupBys
Operasi sub-agregasi. Anda dapat melakukan operasi sub-agregasi berdasarkan hasil pengelompokan.
Contoh
let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: false, groupBys: { groupBys: [ { name: "group_by_GROUP_BY_GEO_DISTANCE", type: TableStore.GroupByType.GROUP_BY_GEO_DISTANCE, body: { fieldName: "col_geo", origin: { lat: 50, lon: 60, }, ranges: [ { from: 1, to: 2, }, { from: 3, }, ], }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });
Pengelompokan Berdasarkan Filter
Metode agregasi ini digunakan untuk menyaring hasil kueri dan mengelompokkannya berdasarkan filter. Jumlah hasil yang sesuai dengan setiap filter dikembalikan dalam urutan filter yang ditentukan.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
filters
Filter yang dapat digunakan untuk kueri. Hasil dikembalikan dalam urutan filter yang ditentukan.
subAggs dan subGroupBys
Operasi sub-agregasi. Anda dapat melakukan operasi sub-agregasi berdasarkan hasil pengelompokan.
Contoh
let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: false, groupBys: { groupBys: [ { name: "group_by_GROUP_BY_FILTER", type: TableStore.GroupByType.GROUP_BY_FILTER, body: { filters: [ { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, { queryType: TableStore.QueryType.WILDCARD_QUERY, query: { fieldName: "col_keyword", value: "1*" }, }, ], }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });
Kueri Berdasarkan Histogram
Metode agregasi ini digunakan untuk mengelompokkan hasil kueri berdasarkan interval data tertentu. Nilai dalam rentang yang sama dikelompokkan bersama, dan rentang serta jumlah nilai dalam setiap kelompok dikembalikan.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
fieldName
Nama bidang yang digunakan untuk melakukan operasi agregasi. Hanya tipe LONG dan DOUBLE yang didukung.
interval
Interval data yang digunakan untuk mendapatkan hasil agregasi.
fieldRange[min,max]
Rentang yang digunakan bersama dengan parameter interval untuk membatasi jumlah kelompok.
Nilai yang dihitung menggunakan rumus tidak boleh melebihi 2.000.minDocCount
Jumlah baris minimum. Jika jumlah baris dalam kelompok kurang dari jumlah baris minimum, hasil agregasi untuk kelompok tersebut tidak dikembalikan.
missing
Nilai default untuk bidang yang digunakan untuk melakukan operasi agregasi pada baris ketika nilai bidang kosong.
Jika Anda tidak menentukan nilai untuk missing, baris akan diabaikan.
Jika Anda menentukan nilai untuk missing, nilai parameter ini digunakan sebagai nilai bidang baris tersebut.
Contoh
let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: false, groupBys: { groupBys: [ { name: "group_by_GROUP_BY_HISTOGRAM", type: TableStore.GroupByType.GROUP_BY_HISTOGRAM, body: { fieldName: "col_long", interval: Long.fromNumber(3), missing: Long.fromNumber(123), minDocCount: 5, fieldRange: { min: Long.fromNumber(1), max: Long.fromNumber(999), }, sort: { sorters: [ { groupKeySort: { order: TableStore.SortOrder.SORT_ORDER_ASC, }, }, { rowCountSort: { order: TableStore.SortOrder.SORT_ORDER_ASC, }, }, ], }, }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });
Kueri Baris yang Diperoleh dari Hasil Operasi Agregasi di Setiap Kelompok
Setelah mengelompokkan hasil kueri, Anda dapat menanyakan baris dalam setiap kelompok. Metode ini bekerja mirip dengan fungsi ANY_VALUE(field) di MySQL.
Saat menanyakan baris yang diperoleh dari hasil agregasi di setiap kelompok, hasil yang dikembalikan hanya mencakup informasi kunci utama jika indeks pencarian berisi bidang Nested, Geopoint, atau Array. Untuk mendapatkan bidang yang diperlukan, Anda harus menanyakan tabel data.
Parameter
Parameter
Deskripsi
nama
Nama unik operasi agregasi. Anda dapat menanyakan hasil operasi agregasi tertentu berdasarkan nama ini.
limit
Jumlah maksimum baris yang dapat dikembalikan untuk setiap kelompok. Secara default, hanya satu baris data yang dikembalikan.
sort
Metode pengurutan yang digunakan untuk mengurutkan data dalam kelompok.
columnsToGet
Bidang yang ingin Anda kembalikan. Hanya bidang dalam indeks pencarian yang didukung. Bidang ARRAY, DATE, GEOPOINT, dan NESTED tidak didukung.
Nilai parameter ini sama dengan nilai columnsToGet dalam SearchRequest. Anda hanya perlu menentukan columnsToGet dalam SearchRequest.
Contoh
Formulir aplikasi aktivitas sekolah berisi bidang tempat informasi seperti nama siswa, kelas, guru kelas, dan ketua kelas dapat ditentukan. Anda dapat mengelompokkan siswa berdasarkan kelas untuk melihat statistik aplikasi dan informasi properti setiap kelas. Pernyataan SQL yang setara adalah
select className, ANY_VALUE(teacher), ANY_VALUE(monitor), COUNT(*) as number from table GROUP BY className.let searchQuery = { offset: 0, limit: 0, query: { queryType: TableStore.QueryType.MATCH_ALL_QUERY, }, getTotalCount: true, groupBys: { groupBys: [ { name: "group_by_name_xxx", type: TableStore.GroupByType.GROUP_BY_FIELD, body: { fieldName: "className", size: 200, subAggs: { aggs: [ { name: "top_row_name_xxx", type: TableStore.AggregationType.AGG_TOP_ROWS, body: { limit: 1, sort: { sorters: [ { fieldSort: { fieldName: "teacher", order: TableStore.SortOrder.SORT_ORDER_DESC, }, }, ], }, }, }, ], }, }, }, ], }, }; let params = { tableName: tableName, indexName: indexName, searchQuery: searchQuery, columnToGet: { // Tentukan kolom yang ingin Anda kembalikan. Anda dapat mengatur RETURN_SPECIFIED untuk mengembalikan kolom tertentu, RETURN_ALL untuk mengembalikan semua kolom, RETURN_ALL_FROM_INDEX untuk mengembalikan semua kolom dalam indeks pencarian, atau RETURN_NONE untuk hanya mengembalikan kolom kunci utama. returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX }, timeoutMs: 30000, } client.search(params, function (err, data) { if (err) { console.log('search error:', err.toString()); } else { console.log('search success:', data); } });