

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Função FNV\$1HASH
<a name="r_FNV_HASH"></a>

Calcula a função de hash não criptográfica FNV-1a de 64 bits para todos os tipos de dados básicos.

## Sintaxe
<a name="r_FNV_HASH-synopsis"></a>

```
FNV_HASH(value [, seed])
```

## Argumentos
<a name="r_FNV_HASH-argument-arguments"></a>

 *valor*  
O valor de entrada ao qual aplicar o hash. O Amazon Redshift usa a representação binária do valor para aplicar o hash ao valor de entrada; por exemplo, é aplicado hash aos valores INTEGER usando 4 bytes e aos valores BIGINT usando 8 bytes. Além disso, a aplicação do hash a entradas CHAR e VARCHAR não ignora espaços à esquerda.

 *seed*  
A semente BIGINT da função de hash é opcional. Se não for fornecida, o Amazon Redshift usará a semente FNV padrão. Isso permite combinar o hash de várias colunas sem conversões nem concatenações.

## Tipo de retorno
<a name="r_FNV_HASH-return-type"></a>

BIGINT

## Exemplo
<a name="r_FNV_HASH-example"></a>

Os exemplos a seguir retornam o hash FNV de um número, a string "Amazon Redshift" e a concatenação dos dois.

```
select fnv_hash(1);
        fnv_hash
----------------------
 -5968735742475085980
(1 row)
```

```
select fnv_hash('Amazon Redshift');
      fnv_hash
---------------------
 7783490368944507294
(1 row)
```

```
select fnv_hash('Amazon Redshift', fnv_hash(1));
       fnv_hash
----------------------
 -2202602717770968555
(1 row)
```

## Observações de uso
<a name="r_FNV_HASH-usage-notes"></a>
+ Para calcular o hash de uma tabela com várias colunas, é possível calcular o hash FNV da primeira coluna e transmiti-lo como uma semente para o hash da segunda coluna. Depois, ele passa o hash FNV da segunda coluna como uma semente para o hash da terceira coluna.

  O exemplo a seguir cria sementes para aplicar o hash a uma tabela com várias colunas. 

  ```
  select fnv_hash(column_3, fnv_hash(column_2, fnv_hash(column_1))) from sample_table;
  ```
+ A mesma propriedade pode ser usada para calcular o hash de uma concatenação de strings. 

  ```
  select fnv_hash('abcd');
         fnv_hash
  ---------------------
   -281581062704388899
  (1 row)
  ```

  ```
  select fnv_hash('cd', fnv_hash('ab'));
        fnv_hash
  ---------------------
   -281581062704388899
  (1 row)
  ```
+ A função de hash usa o tipo de entrada para determinar o número de bytes para hash. Use a fundição para impor um tipo específico, se necessário.

  Os exemplos a seguir usam diferentes tipos de entrada para produzir resultados diferentes.

  ```
  select fnv_hash(1::smallint);
        fnv_hash
  --------------------
   589727492704079044
  (1 row)
  ```

  ```
  select fnv_hash(1);
         fnv_hash
  ----------------------
   -5968735742475085980
  (1 row)
  ```

  ```
  select fnv_hash(1::bigint);
         fnv_hash
  ----------------------
   -8517097267634966620
  (1 row)
  ```