다음을 통해 공유


형식 확대

Important

이 기능은 Databricks Runtime 15.2 이상에서 공개 미리 보기로 제공됩니다.

형식 확장이 활성화된 테이블을 사용하면 기본 데이터 파일을 다시 작성하지 않고 열 데이터 형식을 더 넓은 형식으로 변경할 수 있습니다. 열 형식을 수동으로 변경하거나 스키마 진화를 사용하여 열 형식을 발전할 수 있습니다.

형식 확장에는 Delta Lake가 필요합니다. 모든 Unity 카탈로그 관리 테이블은 기본적으로 Delta Lake를 사용합니다.

지원되는 형식 변경

다음 규칙에 따라 형식을 확장할 수 있습니다.

원본 유형 지원되는 광범위한 형식
byte short, int, long, decimal, double
short int, long, decimal, double
int long, , decimaldouble
long decimal
float double
decimal 더 높은 정밀도와 더 큰 규모로 decimal
date timestampNTZ

실수로 정수 값이 10진수로 승격되는 것을 방지하려면 byte, short, int, long에서 decimal 또는 double로 형식 변경을 수동으로 커밋해야 합니다.

참고 항목

숫자 형식을 decimal으로 변경할 때, 전체 정밀도는 시작 정밀도보다 크거나 같아야 합니다. 또한 배율을 늘리면 전체 정확도가 해당 크기만큼 증가해야 합니다.

byte, shortint 유형의 최소 요구 사항은 decimal(10,0)입니다. long의 최소 목표는 decimal(20,0)입니다.

decimal(10,1)있는 필드에 소수 자릿수를 두 개 추가하려는 경우 최소 대상은 decimal(12,3).

형식 변경은 구조체, 맵 및 배열 내에 중첩된 최상위 열 및 필드에 대해 지원됩니다.

형식 확장 사용

테이블 속성을 delta.enableTypeWidening다음으로 설정하여 기존 테이블에서 형식 확대를 true 사용하도록 설정할 수 있습니다.

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'true')

테이블을 만드는 동안 형식 확대를 사용하도록 설정할 수도 있습니다.

  CREATE TABLE T(c1 INT) TBLPROPERTIES('delta.enableTypeWidening' = 'true')

Important

형식 확대를 사용하도록 설정하면 판독기 및 기록기 프로토콜을 업그레이드하는 테이블 기능이 typeWidening-preview설정됩니다. 형식 확대를 사용하도록 설정된 테이블과 상호 작용하려면 Databricks Runtime 15.2 이상을 사용해야 합니다. 외부 클라이언트도 테이블과 상호 작용하는 경우 이 테이블 기능을 지원하는지 확인합니다. Azure Databricks에서 Delta Lake 기능 호환성을 관리하는 방법을 참조하세요.

수동으로 형식 변경 적용

명령을 ALTER COLUMN 사용하여 수동으로 형식을 변경합니다.

ALTER TABLE <table_name> ALTER COLUMN <col_name> TYPE <new_type>

이 작업은 기본 데이터 파일을 다시 작성하지 않고 테이블 스키마를 업데이트합니다.

자동 스키마 진화를 사용하여 형식 확장

스키마 진화는 들어오는 데이터의 형식과 일치하도록 대상 테이블의 데이터 형식을 업데이트하기 위해 형식 확장과 함께 작동합니다.

참고 항목

형식 확대를 사용하도록 설정하지 않으면 스키마 진화는 항상 대상 테이블의 열 형식과 일치하도록 데이터를 안전하게 다운캐스트하려고 시도합니다. 대상 테이블에서 데이터 형식을 자동으로 확장하지 않으려면 스키마 진화를 사용하도록 설정된 워크로드를 실행하기 전에 형식 확대를 사용하지 않도록 설정합니다.

스키마 진화를 사용하여 열의 데이터 형식을 넓히려면 다음 조건을 충족해야 합니다.

  • 명령에서 사용 INSERT 하거나 MERGE INTO.
  • 명령은 자동 스키마 진화를 사용하도록 설정하여 실행됩니다.
  • 대상 테이블에는 형식 확장이 활성화되어 있습니다.
  • 원본 열 형식이 대상 열 형식보다 넓습니다.
  • 형식 확장은 형식 변경을 지원합니다.

이러한 모든 조건을 충족하지 않는 형식 불일치는 일반적인 스키마 적용 규칙을 따릅니다. 스키마 적용을 참조하세요.

형식 확대 테이블 기능 사용 안 함

속성을 다음으로 설정하여 사용 가능한 테이블에서 실수로 형식이 확대되는 것을 방지할 false수 있습니다.

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'false')

이 설정은 테이블의 이후 형식 변경을 방지하지만 형식 확장 테이블 기능을 제거하거나 변경된 형식을 실행 취소하지는 않습니다.

형식 확장 테이블 기능을 완전히 제거해야 하는 경우 다음 예제와 같이 명령을 사용할 DROP FEATURE 수 있습니다.

 ALTER TABLE <table-name> DROP FEATURE 'typeWidening-preview' [TRUNCATE HISTORY]

형식 확대를 삭제할 때 현재 테이블 스키마를 준수하지 않는 모든 데이터 파일을 다시 작성합니다. 델타 테이블 기능 삭제를 참조하세요.