MURMUR3_32_HASH - AWS Clean Rooms

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)