View a markdown version of this page

Jenis VARBYTE - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Jenis VARBYTE

Gunakan kolom VARBYTE, VARBINARY, atau BINARY VARIING untuk menyimpan nilai biner panjang variabel dengan batas tetap.

varbyte [ (n) ]

Jumlah maksimum byte (n) dapat berkisar antara 1 — 16.777.216. Defaultnya adalah 64.000.

Beberapa contoh di mana Anda mungkin ingin menggunakan tipe data VARBYTE adalah sebagai berikut:

  • Menggabungkan tabel pada kolom VARBYTE.

  • Membuat tampilan terwujud yang berisi kolom VARBYTE. Refresh tambahan dari tampilan terwujud yang berisi kolom VARBYTE didukung. Namun, fungsi agregat selain COUNT, MIN, dan MAX dan GROUP BY pada kolom VARBYTE tidak mendukung penyegaran tambahan.

Untuk memastikan bahwa semua byte adalah karakter yang dapat dicetak, Amazon Redshift menggunakan format hex untuk mencetak nilai VARBYTE. Misalnya, SQL berikut mengubah string heksadesimal 6162 menjadi nilai biner. Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal6162.

select from_hex('6162'); from_hex ---------- 6162

Amazon Redshift mendukung casting antara VARBYTE dan tipe data berikut:

  • CHAR

  • VARCHAR

  • SMALLINT

  • INTEGER

  • BIGINT

Saat casting dengan CHAR dan VARCHAR UTF-8 formatnya digunakan. Untuk informasi lebih lanjut tentang UTF-8 format, lihatTO_VARBYTE. Saat casting dari SMALLINT, INTEGER, dan BIGINT jumlah byte dari tipe data asli dipertahankan. Itu adalah dua byte untuk SMALLINT, empat byte untuk INTEGER, dan delapan byte untuk BIGINT.

Pernyataan SQL berikut melemparkan string VARCHAR ke VARBYTE. Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal616263.

select 'abc'::varbyte; varbyte --------- 616263

Pernyataan SQL berikut memberikan nilai CHAR dalam kolom ke VARBYTE. Contoh ini membuat tabel dengan kolom CHAR (10) (c), menyisipkan nilai karakter yang lebih pendek dari panjang 10. Cast yang dihasilkan mempersembahkan hasil dengan karakter spasi (hex'20') ke ukuran kolom yang ditentukan. Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal.

create table t (c char(10)); insert into t values ('aa'), ('abc'); select c::varbyte from t; c ---------------------- 61612020202020202020 61626320202020202020

Pernyataan SQL berikut melemparkan string SMALLINT ke VARBYTE. Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal0005, yaitu dua byte atau empat karakter heksadesimal.

select 5::smallint::varbyte; varbyte --------- 0005

Pernyataan SQL berikut memberikan INTEGER ke VARBYTE. Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal00000005, yaitu empat byte atau delapan karakter heksadesimal.

select 5::int::varbyte; varbyte ---------- 00000005

Pernyataan SQL berikut mentransmisikan BIGINT ke VARBYTE. Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal0000000000000005, yaitu delapan byte atau 16 karakter heksadesimal.

select 5::bigint::varbyte; varbyte ------------------ 0000000000000005

Fitur Amazon Redshift yang mendukung tipe data VARBYTE meliputi:

Batasan saat menggunakan tipe data VARBYTE dengan Amazon Redshift

Berikut ini adalah batasan saat menggunakan tipe data VARBYTE dengan Amazon Redshift:

  • Amazon Redshift Spectrum mendukung tipe data VARBYTE hanya untuk file Parquet dan ORC.

  • Editor kueri Amazon Redshift dan editor kueri Amazon Redshift v2 belum sepenuhnya mendukung tipe data VARBYTE. Oleh karena itu, gunakan klien SQL yang berbeda saat bekerja dengan ekspresi VARBYTE.

    Sebagai solusi untuk menggunakan editor kueri, jika panjang data Anda di atau di bawah 16.000.000 byte dan isinya valid UTF-8, Anda dapat mentransmisikan nilai VARBYTE ke VARCHAR, misalnya:

    select to_varbyte('6162', 'hex')::varchar;
  • Anda tidak dapat menggunakan tipe data VARBYTE dengan fungsi yang ditentukan pengguna (UDF) Python atau Lambda.

  • Anda tidak dapat membuat kolom HLLSKETCH dari kolom VARBYTE atau menggunakan APPROXIMATE COUNT DISTINCT pada kolom VARBYTE.

  • Nilai VARBYTE yang lebih besar dari 1 MB hanya dapat dicerna dari format file berikut:

    • Parquet

    • Teks

    • Nilai yang dipisahkan koma (CSV)