MURMUR3_32 HASH - Amazon Redshift

Amazon Redshift ne prendra plus en charge la création de nouveaux Python UDFs à compter du 1er novembre 2025. Si vous souhaitez utiliser Python UDFs, créez la version UDFs antérieure à cette date. Le Python existant UDFs continuera à fonctionner normalement. Pour plus d'informations, consultez le billet de blog.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

MURMUR3_32 HASH

La fonction MURMUR3 _32_HASH calcule le hachage non cryptographique Murmur3A 32 bits pour tous les types de données courants, y compris les types numériques et les chaînes de caractères.

Syntaxe

MURMUR3_32_HASH(value [, seed])

Arguments

valeur

Valeur d’entrée à hacher. Amazon Redshift hache la représentation binaire de la valeur d’entrée. Ce comportement est similaire à Fonction FNV_HASH, mais la valeur est convertie en la représentation binaire spécifiée par la spécification de hachage Murmur3 de 32 bits d’Apache Iceberg.

Seed (Noyau)

Le noyau INT de la fonction de hachage. Cet argument est facultatif. Si ce n’est pas indiqué, Amazon Redshift utilise le noyau 0 par défaut. Cela permet de combiner le hachage de plusieurs colonnes sans conversions ni concaténations.

Type de retour

La fonction renvoie un INT.

exemple

Les exemples suivants renvoient le hachage Murmur3 d’un nombre, la chaîne Amazon Redshift et la concaténation des deux.

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)

Notes d’utilisation

Pour calculer le hachage d’une table avec plusieurs colonnes, vous pouvez calculer le hachage Murmur3 de la première colonne et le transmettre en tant que noyau au hachage de la deuxième colonne. Ensuite, il passe le hachage Murmur3 de la deuxième colonne en tant que noyau au hachage de la troisième colonne.

L’exemple suivant crée des noyaux pour hacher une table comportant plusieurs colonnes.

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

La même propriété peut être utilisée pour calculer le hachage d’une concaténation de chaînes.

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)

La fonction de hachage utilise le type de l’entrée pour déterminer le nombre d’octets à hacher. Utilisez la conversion de types pour appliquer un type spécifique, si nécessaire.

Les exemples suivants utilisent différents types d’entrée pour produire des résultats différents.

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)