형식 확장

Important

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

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

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

지원되는 형식 변경

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

소스 형식 지원되는 더 넓은 형식
byte short, int, long, decimaldouble
short int, long, decimaldouble
int long, , decimaldouble
long decimal
float double
decimal decimal 정밀도 및 배율 향상
date timestampNTZ

정수 값이 소수로 실수로 승격되는 것을 방지하려면 형식 변경 내용을 bytedoubleshortintlong decimal 수동으로 커밋해야 합니다.

참고 항목

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

shortint 형식의 byte최소 대상은 .입니다decimal(10,0). 최소 대상 long 은 .입니다 decimal(20,0).

10진수 위치에 두 개의 소수 자릿수를 decimal(10,1)추가하려는 경우 최소 대상은 다음과 같습니다 decimal(12,3).

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

형식 확장 사용

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

  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]

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