MURMUR3_32_HASH - Amazon Redshift

MURMUR3_32_HASH

MURMUR3_32_HASH 함수는 숫자 및 문자열 유형을 비롯한 모든 일반 데이터 유형에 대해 32비트 Murmur3A 비암호화 해시를 계산합니다.

구문

MURMUR3_32_HASH(value [, seed])

인수

USD 상당

입력 값은 해시 처리합니다. Amazon Redshift 는 입력 값의 바이너리 표현을 해시한 예입니다. 이 동작은 FNV_HASH 함수과 비슷하지만 값이 Apache Iceberg 32비트 Murmur3 해시 사양에 지정된 바이너리 표현으로 변환됩니다.

시드

해시 함수의 INT 시드입니다. 이 인수는 선택 사항입니다. 지정하지 않으면 Amazon Redshift는 기본 0 시드를 사용합니다. 이렇게 하면 변환 또는 연결 없이 여러 열의 해시를 결합할 수 있습니다.

반환 타입

함수는 INT를 반환합니다.

다음은 숫자의 Murmur3 해시, 'Amazon Redshift' 문자열 및 이 둘의 연결을 반환하는 예입니다.

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)

사용 노트

여러 열이 있는 테이블의 해시를 계산하려면 첫 번째 열의 Murmur3 해시를 계산하여 두 번째 열의 해시에 시드로 전달하면 됩니다. 그런 다음 두 번째 열의 Murmur3 해시를 세 번째 열의 해시에 시드로 전달합니다.

다음은 여러 열이 있는 테이블을 해시 처리할 시드를 생성하는 예입니다.

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

동일한 속성을 사용하여 문자열 연결 해시를 계산할 수 있습니다.

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)

해시 함수는 입력 유형을 사용하여 해시 처리할 바이트 수를 결정합니다. 필요한 경우 캐스팅을 사용하여 특정 유형을 적용합니다.

다음은 다른 결과를 생성하기 위해 다른 입력 유형을 사용하는 예입니다.

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)