Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
MURMUR3_32_HASH
La función MURMUR3_32_HASH calcula el hash no criptográfico Murmur3A de 32 bits para todos los tipos de datos comunes, incluidos los tipos numéricos y de cadena.
Sintaxis
MURMUR3_32_HASH(value [, seed])
Argumentos
- value
-
El valor de entrada al que se aplica el hash. AWS Clean Rooms realiza el hash de la representación binaria del valor de entrada. Este comportamiento es similar al de FNV_HASH, pero el valor se convierte a la representación binaria indicada por la especificación hash Murmur3 de 32 bits de Apache Iceberg
. - valor de inicialización
-
El valor de inicialización INT de la función hash. Este argumento es opcional. Si no se da, AWS Clean Rooms utiliza el valor de inicio predeterminado 0. Esto permite combinar el hash de varias columnas sin conversiones ni concatenaciones.
Tipo de retorno
La función devuelve un valor INT.
Ejemplo
En los siguientes ejemplos se devuelve el hash Murmur3 de un número, la cadena "AWS Clean Rooms" y la concatenación de los dos.
select MURMUR3_32_HASH(1); MURMUR3_32_HASH ---------------------- -5968735742475085980 (1 row)
select MURMUR3_32_HASH('AWS Clean Rooms'); MURMUR3_32_HASH ---------------------- 7783490368944507294 (1 row)
select MURMUR3_32_HASH('AWS Clean Rooms', MURMUR3_32_HASH(1)); MURMUR3_32_HASH ---------------------- -2202602717770968555 (1 row)
Notas de uso
Para calcular el hash de una tabla con varias columnas, puede calcular el hash Murmur3 de la primera columna y pasarlo como valor de inicialización al hash de la segunda columna. A continuación, pasa el hash Murmur3 de la segunda columna como valor de inicialización al hash de la tercera columna.
En el siguiente ejemplo, se crean valores de inicialización para aplicar un algoritmo hash a una tabla con varias columnas.
select MURMUR3_32_HASH(column_3, MURMUR3_32_HASH(column_2, MURMUR3_32_HASH(column_1))) from sample_table;
La misma propiedad se puede utilizar para calcular el hash de una concatenación de cadenas.
select MURMUR3_32_HASH('abcd'); MURMUR3_32_HASH --------------------- -281581062704388899 (1 row)
select MURMUR3_32_HASH('cd', MURMUR3_32_HASH('ab')); MURMUR3_32_HASH --------------------- -281581062704388899 (1 row)
La función hash utiliza el tipo de entrada para determinar el número de bytes para aplicar un algoritmo hash. Utilice la conversión para aplicar un tipo específico, si es necesario.
En los ejemplos siguientes se utilizan diferentes tipos de entrada para producir resultados diferentes.
select MURMUR3_32_HASH(1::smallint); MURMUR3_32_HASH -------------------- 589727492704079044 (1 row)
select MURMUR3_32_HASH(1); MURMUR3_32_HASH ---------------------- -5968735742475085980 (1 row)
select MURMUR3_32_HASH(1::bigint); MURMUR3_32_HASH ---------------------- -8517097267634966620 (1 row)