VARBYTE 형식 - Amazon Redshift

VARBYTE 형식

VARBYTE, VARBINARY 또는 BINARY VARYING 열을 사용하여 고정 제한이 있는 가변 길이 이진 값을 저장합니다.

varbyte [ (n) ]

최대 바이트 수(n)의 범위는 1~16,777,216입니다. 기본값은 64,000입니다.

VARBYTE 데이터 유형을 사용할 수 있는 몇 가지 예는 다음과 같습니다.

  • VARBYTE 열의 테이블 조인.

  • VARBYTE 열을 포함하는 구체화된 보기 생성. VARBYTE 열을 포함하는 구체화된 보기의 증분 새로 고침이 지원됩니다. 그러나 VARBYTE 열의 COUNT, MIN, MAX 및 GROUP BY 이외의 집계 함수는 증분 새로 고침을 지원하지 않습니다.

모든 바이트가 인쇄 가능한 문자인지 확인하기 위해 Amazon Redshift는 16진수 형식을 사용하여 VARBYTE 값을 인쇄합니다. 예를 들어 다음 SQL은 16진수 문자열 6162를 이진 값으로 변환합니다. 반환된 값이 이진 값이더라도 결과는 16진수 6162로 출력됩니다.

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

Amazon Redshift는 VARBYTE와 다음 데이터 유형 간의 캐스팅을 지원합니다.

  • CHAR

  • VARCHAR

  • SMALLINT

  • INTEGER

  • BIGINT

CHAR 및 VARCHAR로 캐스팅할 때 UTF-8 형식이 사용됩니다. UTF-8 형식에 대한 자세한 내용은 TO_VARBYTE 섹션을 참조하세요. SMALLINT, INTEGER 및 BIGINT에서 캐스팅할 때 원래 데이터 유형의 바이트 수가 유지됩니다. SMALLINT의 경우 2바이트, INTEGER의 경우 4바이트, BIGINT의 경우 8바이트입니다.

다음 SQL 문은 VARCHAR 문자열을 VARBYTE로 캐스팅합니다. 반환된 값이 이진 값이더라도 결과는 16진수 616263로 출력됩니다.

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

다음 SQL 문은 열의 CHAR 값을 VARBYTE로 캐스팅합니다. 이 예에서는 CHAR(10) 열(c)이 있는 테이블을 생성하고 길이가 10보다 짧은 문자 값을 삽입합니다. 결과 캐스트는 결과를 정의된 열 크기로 공백 문자(hex'20')로 채웁니다. 반환된 값이 이진 값이더라도 결과는 16진수로 출력됩니다.

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

다음 SQL 문은 SMALLINT 문자열을 VARBYTE로 캐스팅합니다. 반환된 값이 이진 값이더라도 결과는 2바이트 또는 4개의 16진수 문자인 16진수 0005로 인쇄됩니다.

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

다음 SQL 문은 INTEGER를 VARBYTE로 캐스팅합니다. 반환된 값이 이진 값이더라도 결과는 4바이트 또는 8개의 16진수 문자인 16진수 00000005로 인쇄됩니다.

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

다음 SQL 문은 BIGINT를 VARBYTE로 캐스팅합니다. 반환된 값이 이진 값이더라도 결과는 8바이트 또는 16개의 16진수 문자인 16진수 0000000000000005로 인쇄됩니다.

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

VARBYTE 데이터 유형을 지원하는 Amazon Redshift 특성은 다음과 같습니다.

Amazon Redshift와 함께 VARBYTE 데이터 유형을 사용할 때의 제한 사항

다음은 Amazon Redshift와 함께 VARBYTE 데이터 유형을 사용할 때의 제한 사항입니다.

  • Amazon Redshift Spectrum은 Parquet 및 ORC 파일에 대해서만 VARBYTE 데이터 형식을 지원합니다.

  • Amazon Redshift 쿼리 편집기와 Amazon Redshift 쿼리 편집기 v2는 아직 VARBYTE 데이터 유형을 완전히 지원하지 않습니다. 따라서 VARBYTE 표현식으로 작업할 때는 다른 SQL 클라이언트를 사용합니다.

    쿼리 편집기를 사용하기 위한 해결 방법으로 데이터 길이가 64KB 미만이고 콘텐츠가 유효한 UTF-8인 경우 VARBYTE 값을 VARCHAR로 캐스팅할 수 있습니다. 예를 들면 다음과 같습니다.

    select to_varbyte('6162', 'hex')::varchar;
  • Python 또는 Lambda 사용자 정의 함수(UDF)에는 VARBYTE 데이터 유형을 사용할 수 없습니다.

  • VARBYTE 열에서 HLLSKETCH 열을 생성하거나 VARBYTE 열에서 APPROXIMATE COUNT DISTINCT를 사용할 수 없습니다.

  • 1MB보다 큰 VARBYTE 값은 다음 파일 형식에서만 수집할 수 있습니다.

    • PARQUET

    • 텍스트

    • CSV(쉼표로 분리된 값)