Jenis VARBYTE - AWS Clean Rooms

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 VARY VARY untuk menyimpan nilai biner panjang variabel dengan batas tetap.

varbyte [ (n) ]

Jumlah maksimum byte (n) dapat berkisar antara 1 — 1.024.000. 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. Penyegaran inkremental 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, AWS Clean Rooms gunakan format hex untuk mencetak nilai VARBYTE. Misalnya, SQL berikut mengubah string heksadesimal menjadi nilai biner. 6162 Meskipun nilai yang dikembalikan adalah nilai biner, hasilnya dicetak sebagai heksadesimal6162.

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

AWS Clean Rooms mendukung casting antara VARBYTE dan tipe data berikut:

  • CHAR

  • VARCHAR

  • SMALLINT

  • INTEGER

  • 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 melapisi 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, yang merupakan dua byte atau empat karakter heksadesimal.

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

Pernyataan SQL berikut melemparkan 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 melemparkan 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

Keterbatasan saat menggunakan tipe data VARBYTE dengan AWS Clean Rooms

Berikut ini adalah batasan saat menggunakan tipe data VARBYTE dengan AWS Clean Rooms:

  • AWS Clean Rooms mendukung tipe data VARBYTE hanya untuk file Parket dan ORC.

  • AWS Clean Rooms editor kueri 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 bawah 64 KB dan kontennya 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 Python atau Lambda yang ditentukan pengguna (UDF).

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