MURMUR3_32_ HASH - Amazon Redshift

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

MURMUR3_32_ HASH

HASHFungsi MURMUR3 _32_ menghitung hash non-kriptografi Murmur3A 32-bit untuk semua tipe data umum termasuk tipe numerik dan string.

Sintaks

MURMUR3_32_HASH(value [, seed])

Argumen

nilai

Nilai input untuk hash. Amazon Redshift melakukan hash representasi biner dari nilai input. Perilaku ini mirip denganFNV_ HASH fungsi, tetapi nilainya dikonversi ke representasi biner yang ditentukan oleh spesifikasi hash Murmur3 32-bit Apache Iceberg.

benih

INTBenih dari fungsi hash. Argumen ini opsional. Jika tidak diberikan, Amazon Redshift menggunakan seed default 0. Ini memungkinkan menggabungkan hash dari beberapa kolom tanpa konversi atau penggabungan apa pun.

Jenis pengembalian

Fungsi mengembalikan sebuahINT.

Contoh

Contoh berikut mengembalikan hash Murmur3 dari sebuah angka, string 'Amazon Redshift', dan rangkaian keduanya.

select MURMUR3_32_HASH(1); MURMUR3_32_HASH ---------------------- 1392991556 (1 row)
select MURMUR3_32_HASH('Amazon Redshift'); MURMUR3_32_HASH ---------------------- -1563580564 (1 row)
select MURMUR3_32_HASH('Amazon Redshift', MURMUR3_32_HASH(1)); MURMUR3_32_HASH ---------------------- -1346554171 (1 row)

Catatan penggunaan

Untuk menghitung hash tabel dengan beberapa kolom, Anda dapat menghitung hash Murmur3 dari kolom pertama dan meneruskannya sebagai benih ke hash kolom kedua. Kemudian, ia melewati hash Murmur3 dari kolom kedua sebagai benih ke hash kolom ketiga.

Contoh berikut menciptakan benih untuk hash tabel dengan beberapa kolom.

select MURMUR3_32_HASH(column_3, MURMUR3_32_HASH(column_2, MURMUR3_32_HASH(column_1))) from sample_table;

Properti yang sama dapat digunakan untuk menghitung hash dari rangkaian string.

select MURMUR3_32_HASH('abcd'); MURMUR3_32_HASH --------------------- 1139631978 (1 row)
select MURMUR3_32_HASH('cd', MURMUR3_32_HASH('ab')); MURMUR3_32_HASH --------------------- 1711522338 (1 row)

Fungsi hash menggunakan jenis input untuk menentukan jumlah byte untuk hash. Gunakan casting untuk menegakkan jenis tertentu, jika perlu.

Contoh berikut menggunakan jenis input yang berbeda untuk menghasilkan hasil yang berbeda.

select MURMUR3_32_HASH(1, MURMUR3_32_HASH(1)); MURMUR3_32_HASH -------------------- -1193428387 (1 row)
select MURMUR3_32_HASH(1); MURMUR3_32_HASH ---------------------- 1392991556 (1 row)
select MURMUR3_32_HASH(1, MURMUR3_32_HASH(2)); MURMUR3_32_HASH ---------------------- 1179621905 (1 row)