Tipo VARBYTE - AWS Clean Rooms

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tipo VARBYTE

Use uma coluna VARBYTE, VARBINARY ou BINARY VARYING para armazenar valores binários de tamanho variável com limite fixo.

varbyte [ (n) ]

O número máximo de bytes (n) pode variar de 1 a 1.024.000. O padrão é 64.000.

Estes são alguns exemplos em que convém usar um tipo de dados VARBYTE:

  • Unir tabelas em colunas VARBYTE.

  • Criar visualizações materializadas que contenham colunas VARBYTE. Há suporte para a atualização incremental de visualizações materializadas que contêm colunas VARBYTE. Porém, funções agregadas que não sejam COUNT, MIN e MAX e GROUP BY nas colunas VARBYTE não são compatíveis com atualização incremental.

Para garantir que todos os bytes sejam caracteres imprimíveis, AWS Clean Rooms usa o formato hexadecimal para imprimir valores VARBYTE. Por exemplo, o seguinte SQL converte a cadeia de caracteres hexadecimal 6162 em um valor binário. Mesmo que o valor retornado seja um valor binário, os resultados são impressos como hexadecimais 6162.

select from_hex('6162'); from_hex ---------- 6162

AWS Clean Rooms suporta conversão entre VARBYTE e os seguintes tipos de dados:

  • CHAR

  • VARCHAR

  • SMALLINT

  • INTEGER

  • BIGINT

A instrução SQL a seguir converte uma cadeia de caracteres VARCHAR para VARBYTE. Mesmo que o valor retornado seja um valor binário, os resultados são impressos como hexadecimais 616263.

select 'abc'::varbyte; varbyte --------- 616263

A instrução SQL a seguir converte um valor CHAR em uma coluna para VARBYTE. Este exemplo cria uma tabela com uma coluna (c) CHAR(10), insere valores de caracteres menores que o comprimento de 10. A conversão resultante insere o resultado com caracteres de espaço (hex'20') para o tamanho de coluna definido. Mesmo que o valor retornado seja um valor binário, os resultados são impressos como hexadecimais.

create table t (c char(10)); insert into t values ('aa'), ('abc'); select c::varbyte from t; c ---------------------- 61612020202020202020 61626320202020202020

A instrução SQL a seguir converte uma cadeia de caracteres SMALLINT para VARBYTE. Mesmo que o valor retornado seja um valor binário, os resultados são impressos como hexadecimais 0005, que são caracteres hexadecimais de dois ou quatro bytes.

select 5::smallint::varbyte; varbyte --------- 0005

A instrução SQL a seguir converte um INTEGER para VARBYTE. Mesmo que o valor retornado seja um valor binário, os resultados são impressos como hexadecimais 00000005, que são caracteres hexadecimais de quatro ou oito bytes.

select 5::int::varbyte; varbyte ---------- 00000005

A instrução SQL a seguir converte um BIGINT para VARBYTE. Mesmo que o valor retornado seja um valor binário, os resultados são impressos como hexadecimais 0000000000000005, que são caracteres hexadecimais de oito ou 16 bytes.

select 5::bigint::varbyte; varbyte ------------------ 0000000000000005

Limitações ao usar o tipo de dados VARBYTE com AWS Clean Rooms

A seguir estão as limitações ao usar o tipo de dados VARBYTE com: AWS Clean Rooms

  • AWS Clean Rooms suporta o tipo de dados VARBYTE somente para arquivos Parquet e ORC.

  • AWS Clean Rooms o editor de consultas ainda não oferece suporte total ao tipo de dados VARBYTE. Portanto, use um cliente SQL diferente ao trabalhar com expressões VARBYTE.

    Como uma solução alternativa para usar o editor de consultas, se o comprimento dos dados estiver abaixo de 64 KB e o conteúdo for caracteres UTF-8 válidos, você poderá converter os valores VARBYTE para VARCHAR, por exemplo:

    select to_varbyte('6162', 'hex')::varchar;
  • Não é possível usar tipos de dados VARBYTE com funções definidas pelo usuário (UDFs) em Python ou Lambda.

  • Não é possível criar uma coluna HLLSKETCH a partir de uma coluna VARBYTE ou usar APPROXIMATE COUNT DISTINCT em uma coluna VARBYTE.