Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Die Funktion MURMUR3 _32_HASH berechnet den nicht-kryptografischen 32-Bit-Murmur3A-Hash für alle gängigen Datentypen, einschließlich numerischer Datentypen und Zeichenketten.
Syntax
MURMUR3_32_HASH(value [, seed])
Argumente
- Wert
-
Der Eingabewert, der gehasht werden soll. Amazon Redshift hasht die binäre Darstellung des Eingabewerts. Dieses Verhalten ähnelt FNV_HASH-Funktion, der Wert wird jedoch in die binäre Darstellung umgewandelt, die in der 32-Bit-Murmur3-Hash-Spezifikation von Apache Iceberg
angegeben ist. - Seed
-
Der INT-Seed der Hash-Funktion. Dieses Argument ist optional. Wenn er nicht angegeben wird, verwendet Amazon Redshift den Standard-Seed 0. Dies ermöglicht eine Kombination des Hashs mehrerer Spalten ohne Konvertierungen oder Verkettungen.
Rückgabetyp
Die Funktion gibt einen INT-Wert zurück.
Beispiel
Die folgenden Beispiele geben den Murmur3-Hash einer Zahl, die Zeichenfolge „Amazon Redshift“ und die Verkettung beider zurück.
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)
Nutzungshinweise
Um den Hash einer Tabelle mit mehreren Spalten zu berechnen, können Sie den Murmur3-Hash der ersten Spalte berechnen und ihn als Seed an den Hash der zweiten Spalte übergeben. Dann wird der Murmur3-Hash der zweiten Spalte als Seed an den Hash der dritten Spalte übergeben.
Im folgenden Beispiel werden Seeds erstellt, um eine Tabelle mit mehreren Spalten zu hashen.
select MURMUR3_32_HASH(column_3, MURMUR3_32_HASH(column_2, MURMUR3_32_HASH(column_1))) from sample_table;
Mit derselben Eigenschaft kann der Hash einer Verkettung von Zeichenfolgen berechnet werden.
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)
Die Hash-Funktion verwendet den Typ der Eingabe, um die Anzahl der zu hashenden Bytes zu bestimmen. Verwenden Sie Übertragen, um einen bestimmten Typ zu erzwingen, falls erforderlich.
In den folgenden Beispielen werden verschiedene Eingabetypen verwendet, um unterschiedliche Ergebnisse zu erzielen.
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)