全部产品
Search
文档中心

Tablestore:Kolom Virtual dari Indeks Pencarian

更新时间:Jul 02, 2025

Saat memodifikasi skema indeks pencarian atau membuat indeks pencarian, Anda dapat mengonfigurasi kolom virtual untuk menambahkan bidang baru atau tipe data baru. Dengan cara ini, Anda dapat melakukan query terhadap bidang baru atau tipe data baru tanpa perlu memodifikasi skema atau data tabel asli yang disimpan di Tablestore.

Catatan

Untuk informasi lebih lanjut tentang kolom virtual dari indeks pencarian, lihat Kolom Virtual.

Catatan Penggunaan

  • Anda tidak dapat menjalankan query terhadap data bidang GEOPOINT dalam indeks pencarian menggunakan pernyataan SQL.

  • Anda tidak dapat menjalankan query terhadap kolom virtual bertipe ARRAY menggunakan pernyataan SQL.

Pemetaan Tipe Data

Tipe Data dalam Tabel

Tipe Data Kolom Virtual dalam Indeks Pencarian

Tipe Data dalam SQL

Kolom virtual dari indeks pencarian sebenarnya tidak ada dalam tabel. Kolom virtual memiliki kolom sumber yang sesuai dalam tabel. Untuk informasi lebih lanjut tentang pemetaan antara tipe data dalam indeks pencarian dan tabel data, lihat Tipe Data.

KEYWORD

MEDIUMTEXT

TEXT

MEDIUMTEXT

LONG

BIGINT

DOUBLE

DOUBLE

Buat Tabel Pemetaan untuk Indeks Pencarian

Untuk menjalankan query terhadap kolom virtual dari indeks pencarian menggunakan pernyataan SQL, Anda harus membuat tabel pemetaan untuk indeks pencarian tersebut. Untuk informasi lebih lanjut, lihat Buat Tabel Pemetaan untuk Indeks Pencarian.

Dalam pernyataan CREATE TABLE, Anda harus menentukan nama dan tipe data yang valid untuk kolom virtual.

Contoh pernyataan SQL:

CREATE TABLE `test_table__test_table_index`(
    `id` MEDIUMTEXT,
    `col_keyword` MEDIUMTEXT,
    `col_keyword_virtual_long` BIGINT
)
ENGINE='searchindex',
ENGINE_ATTRIBUTE='{"index_name":"test_table_index","table_name":"test_table"}';

Query Data dengan Menjalankan Pernyataan SQL

Saat menjalankan pernyataan SQL untuk query data, Anda dapat menggunakan kolom virtual sebagai berikut:

  • Anda dapat menggunakan kolom virtual bersama dengan klausa WHERE dalam pernyataan SELECT untuk query data yang memenuhi kondisi tertentu.

    Jika ingin menggunakan kolom virtual dalam kondisi query, kolom virtual tersebut harus memiliki tipe data yang sama dengan parameter dalam kondisi query.

  • Anda dapat menggunakan fungsi agregat bersama dengan kolom virtual untuk menganalisis data. Tipe data kolom sumber kolom virtual harus memenuhi persyaratan operasi agregat pada indeks pencarian. Sebagai contoh, jika ingin mendapatkan jumlah nilai untuk suatu kolom dalam indeks pencarian, kolom tersebut harus bertipe LONG atau DOUBLE. Jika kolom sumber dari kolom virtual dalam indeks pencarian bertipe KEYWORD, Anda tidak dapat mendapatkan jumlah nilai untuk kolom virtual tersebut.

  • Anda dapat mengelompokkan hasil berdasarkan kolom virtual. Tipe data kolom sumber kolom virtual harus memenuhi persyaratan operasi pengelompokan pada indeks pencarian. Sebagai contoh, Anda tidak dapat mengelompokkan data bertipe TEXT dalam indeks pencarian. Oleh karena itu, nilai dari kolom virtual bertipe TEXT tidak dapat dikelompokkan.

  • Anda dapat menjalankan pernyataan SQL untuk mengembalikan n hasil query teratas berdasarkan kolom virtual.

  • Anda dapat mengurutkan data berdasarkan kolom virtual. Namun, Anda harus menggunakan klausa LIMIT jika ingin mengurutkan data berdasarkan kolom virtual. Anda tidak dapat mengurutkan data berdasarkan kolom virtual tanpa klausa LIMIT.

Saat menjalankan pernyataan SQL untuk query data berdasarkan kolom virtual, perhatikan batasan berikut:

  • Untuk menggunakan kolom virtual dalam indeks pencarian, Anda harus membuat tabel pemetaan untuk indeks pencarian tersebut.

  • Kolom virtual hanya dapat digunakan dalam pernyataan query SQL. Namun, pernyataan SELECT tidak dapat langsung mengembalikan nilai kolom virtual. Jika ingin mengembalikan nilai kolom virtual, tentukan kolom sumber dari kolom virtual dalam pernyataan SELECT. Sebagai contoh, Anda dapat menjalankan pernyataan SELECT * untuk query data berdasarkan tabel pemetaan dari indeks pencarian yang berisi kolom virtual column_virtual seperti yang diharapkan. Namun, kolom virtual secara otomatis diabaikan dalam hasil query. Anda tidak dapat menjalankan pernyataan SELECT column_virtual pada tabel pemetaan.

  • Anda tidak dapat melakukan perbandingan, perhitungan, atau operasi join antara kolom virtual.

  • Anda tidak dapat melakukan perhitungan yang melibatkan pengecoran tipe pada kolom virtual. Selain itu, Anda tidak dapat menggunakan kolom virtual dalam fungsi yang tidak didukung oleh indeks pencarian. Indeks pencarian hanya mendukung fungsi agregat dalam query SQL.

Contoh

Dalam contoh ini, tabel data bernama test_table. Tabel tersebut berisi kolom id bertipe LONG dan kolom col_keyword bertipe STRING.

Untuk menjalankan pernyataan SQL guna query data dalam tabel data berdasarkan kolom virtual, Anda harus membuat indeks pencarian untuk tabel data tersebut, lalu buat tabel pemetaan untuk indeks pencarian. Untuk menggunakan kolom virtual, ikuti langkah-langkah berikut:

  1. Buat indeks pencarian untuk tabel dan tentukan kolom virtual saat membuat indeks pencarian. Untuk informasi lebih lanjut, lihat Metode atau Kolom Virtual.

    Catatan

    Jika kolom virtual tidak ditentukan dalam indeks pencarian yang akan digunakan, Anda dapat memodifikasi skema indeks pencarian untuk menambahkan kolom virtual. Untuk informasi lebih lanjut, lihat Modifikasi Dinamis Skema Indeks Pencarian.

    Dalam contoh ini, indeks pencarian bernama test_table_index. Indeks pencarian berisi kolom id bertipe String, kolom col_keyword bertipe KEYWORD, dan kolom virtual col_keyword_virtual_long bertipe LONG. Kolom sumber dari kolom virtual adalah kolom col_keyword.

    Gambar berikut menunjukkan cara mengonfigurasi indeks pencarian di konsol Tablestore.

    image.png

    Gambar berikut menunjukkan skema dari indeks pencarian.

    image.png

  2. Buat tabel pemetaan untuk indeks pencarian. Untuk informasi lebih lanjut, lihat Gunakan Konsol Tablestore atau Gunakan SDK Tablestore.

    Dalam contoh ini, tabel pemetaan dari indeks pencarian bernama test_table__test_table_index. Tipe data SQL dari kolom virtual col_keyword_virtual_long bertipe LONG dalam tabel pemetaan adalah BIGINT. Untuk informasi lebih lanjut, lihat Buat Tabel Pemetaan untuk Indeks Pencarian.

    Contoh pernyataan SQL:

    CREATE TABLE `test_table__test_table_index`(
        `id` MEDIUMTEXT,
        `col_keyword` MEDIUMTEXT,
        `col_keyword_virtual_long` BIGINT
    )
    ENGINE='searchindex',
    ENGINE_ATTRIBUTE='{"index_name":"test_table_index","table_name":"test_table"}';

    Setelah tabel pemetaan dibuat untuk indeks pencarian, jalankan pernyataan berikut untuk query data dari tabel pemetaan:

    SELECT * FROM `test_table__test_table_index`;

    Gambar berikut menunjukkan hasil query. Dalam contoh ini, tabel pemetaan test_table__test_table_index berisi 10 rekaman data.

    image.png

  3. Jalankan pernyataan SELECT untuk query data. Untuk informasi lebih lanjut, lihat Query Data.

    • Contoh berikut menunjukkan cara mendapatkan nilai rata-rata dari semua nilai yang kurang dari 50 dalam kolom virtual col_keyword_virtual_long.

      SELECT AVG(col_keyword_virtual_long) FROM `test_table__test_table_index` WHERE col_keyword_virtual_long < 50;

      Kolom virtual col_keyword_virtual_long memiliki empat rekaman data berikut yang nilainya kurang dari 50: 10, 20, 30, dan 40. Nilai rata-rata yang dihitung adalah 25.0000. Gambar berikut menunjukkan hasil query.

      image.png

    • Contoh berikut menunjukkan cara mengurutkan kolom lainnya secara menurun berdasarkan kolom virtual col_keyword_virtual_long dan mengembalikan lima rekaman data teratas.

      SELECT * FROM `test_table__test_table_index` ORDER BY col_keyword_virtual_long DESC LIMIT 5;

      Gambar berikut menunjukkan hasil query.

      image.png