OneLake에서 빙산 테이블 사용

OneLake에서는 Delta Lake 및 Apache Iceberg 형식의 테이블로 원활하게 작업할 수 있습니다.

이러한 유연성은 메타데이터 가상화를 통해 사용하도록 설정되며, 이는 Iceberg 테이블을 Delta Lake 테이블로 해석할 수 있게 하는 기능이며 그 반대의 경우도 마찬가지입니다. Iceberg 테이블을 직접 작성하거나 바로 가기를 만들어 다양한 패브릭 워크로드에서 이러한 테이블에 액세스할 수 있도록 할 수 있습니다. 마찬가지로 Delta Lake 형식으로 작성된 패브릭 테이블은 Iceberg 판독기를 사용하여 읽을 수 있습니다.

Iceberg 테이블 폴더에 대한 바로 가기를 작성하거나 만들 때 OneLake는 테이블에 대한 가상 Delta Lake 메타데이터(델타 로그)를 자동으로 생성하여 패브릭 워크로드에서 사용할 수 있도록 합니다. 반대로 Delta Lake 테이블에는 이제 가상 Iceberg 메타데이터가 포함되어 Iceberg 판독기와의 호환성을 허용합니다.

Iceberg에서 Delta Lake로의 테이블 가상화를 보여 주는 다이어그램

이 문서에는 Snowflake와 함께 Iceberg 테이블을 사용하기 위한 지침이 포함되어 있지만, 이 기능은 스토리지에 Parquet 형식의 데이터 파일이 있는 모든 Iceberg 테이블을 사용하기 위한 것입니다.

Delta Lake 테이블을 빙산으로 가상화

Delta Lake 형식에서 Iceberg 형식으로 테이블의 자동 변환 및 가상화를 설정하려면 다음 단계를 수행합니다.

  1. 델타 레이크 테이블이나 그 단축키가 데이터 항목의 섹션에 Tables 있는지 확인하세요. 데이터 항목은 lakehouse나 다른 Fabric 데이터 항목일 수 있습니다.

    팁 (조언)

    Lakehouse가 스키마를 사용하는 경우 테이블 디렉터리가 스키마(예: dbo스키마) 내에 직접 배치됩니다. 레이크하우스가 스키마를 사용하지 않도록 설정된 경우, 테이블 디렉터리가 Tables 디렉터리 내에 직접 위치하게 됩니다.

  2. Delta Lake 테이블이 가상 Iceberg 형식으로 성공적으로 변환되었는지 확인합니다. 테이블 뒤에 있는 디렉터리를 검사하여 이 작업을 수행할 수 있습니다.

    테이블이 레이크하우스에 있는 경우 디렉터리를 보려면 패브릭 UI에서 테이블을 마우스 오른쪽 단추로 클릭하고 파일 보기를 선택할 수 있습니다.

    테이블이 웨어하우스, 데이터베이스 또는 미러된 데이터베이스와 같은 다른 데이터 항목 형식에 있는 경우 패브릭 UI가 아닌 Azure Storage Explorer 또는 OneLake 파일 탐색기 같은 클라이언트를 사용하여 테이블 뒤에 있는 파일을 확인해야 합니다.

  3. 테이블 폴더 내에 이름이 지정된 metadata 디렉터리가 표시되어야 하며 변환 로그 파일을 포함하여 여러 파일이 포함되어야 합니다. 가장 최근 변환의 타임스탬프 및 오류 세부 정보를 포함하여 Delta Lake에서 Iceberg로의 변환에 대한 자세한 정보를 보려면 변환 로그 파일을 엽니다.

  4. 변환 로그 파일에 테이블이 성공적으로 변환되었음을 표시하는 경우 선택한 서비스, 앱 또는 라이브러리를 사용하여 Iceberg 테이블을 읽습니다.

    사용하는 Iceberg 판독기 항목에 따라 테이블 디렉터리의 경로 또는 디렉터리에 표시된 .metadata.json 가장 최근 metadata 파일에 대한 경로를 알아야 합니다.

    버전 번호가 가장 높은 파일에 대한 속성 보기를 열어 테이블의 최신 메타데이터 파일에 대한 *.metadata.json HTTP 경로를 볼 수 있습니다. 이 경로를 기록해 둡다.

    데이터 항목 Tables 폴더로 가는 경로는 다음과 같을 수 있습니다:

    https://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828/Tables/
    

    그 폴더 내에서 최신 메타데이터 파일로 가는 상대 경로는 다음과 같 dbo/MyTable/metadata/321.metadata.json을 수 있습니다.

    Snowflake를 사용하여 가상 Iceberg 테이블을 읽으려면 이 가이드의 단계를 따르세요.

Iceberg 테이블에 대한 테이블 바로 가기 만들기

OneLake 바로 가기에서 지원하는 스토리지 위치에 Iceberg 테이블이 이미 있는 경우 다음 단계에 따라 바로 가기를 만들어 Iceberg 테이블을 Delta Lake 형식으로 나타나게 합니다.

  1. 빙산 테이블을 찾으세요. Azure Data Lake Storage, OneLake, Amazon S3, Google Cloud Storage 또는 S3 호환 스토리지 서비스에 있을 수 있는 Iceberg 테이블이 저장되는 위치를 찾습니다.

    참고

    Snowflake를 사용하고 있으며 Iceberg 테이블이 저장되는 위치를 잘 모르는 경우 다음 문을 실행하여 Iceberg 테이블의 스토리지 위치를 확인할 수 있습니다.

    SELECT SYSTEM$GET_ICEBERG_TABLE_INFORMATION('<table_name>');

    이 문을 실행하면 Iceberg 테이블에 대한 메타데이터 파일의 경로가 반환됩니다. 이 경로는 Iceberg 테이블을 포함하는 스토리지 계정을 알려줍니다. 예를 들어 Azure Data Lake Storage에 저장된 Iceberg 테이블의 경로를 찾는 관련 정보는 다음과 같습니다.

    {"metadataLocation":"azure://<storage_account_path>/<path_within_storage>/<table_name>/metadata/00001-389700a2-977f-47a2-9f5f-7fd80a0d41b2.metadata.json","status":"success"}

    Iceberg 테이블 폴더에는 metadata라는 폴더가 포함되어야 하며, 이 폴더 안에는 .metadata.json로 끝나는 파일이 최소 하나 이상 있어야 합니다.

  2. 패브릭 레이크하우스에서 레이크하우스의 테이블 영역에 새 테이블 바로 가기를 만듭니다.

    팁 (조언)

    레이크하우스의 Tables 폴더 아래에 dbo와 같은 스키마가 표시되면 lakehouse는 스키마를 사용할 수 있습니다. 이 경우 스키마를 마우스 오른쪽 단추로 클릭하고 스키마 아래에 표 바로 가기를 만듭니다.

    새 바로 가기 작업을 보여 주는 스크린샷.

  3. 바로 가기의 대상 경로에 대해 Iceberg 테이블 폴더를 선택합니다. Iceberg 테이블 폴더에는 metadata 및 data 폴더가 포함되어 있습니다.

  4. 사용자 바로 가기가 만들어지면 이 테이블은 자동으로 Lakehouse에 Delta Lake 테이블로 반영되어 Fabric 전체에서 사용될 준비가 됩니다.

    만든 바로 가기를 보여 주는 스크린샷.

    새 Iceberg 테이블 바로 가기가 사용 가능한 테이블로 표시되지 않는 경우 문제 해결 섹션을 확인합니다.

문제 해결

다음 팁은 Iceberg 테이블이 이 기능과 호환되는지 확인하는 데 도움이 될 수 있습니다.

Iceberg 테이블의 폴더 구조 확인

원하는 스토리지 탐색기 도구에서 Iceberg 폴더를 열고 원래 위치에서 Iceberg 폴더의 디렉터리 목록을 확인합니다. 다음 예제와 같은 폴더 구조가 표시됩니다.

../
|-- MyIcebergTable123/
    |-- data/
        |-- A5WYPKGO_2o_APgwTeNOAxg_0_1_002.parquet
        |-- A5WYPKGO_2o_AAIBON_h9Rc_0_1_003.parquet
    |-- metadata/
        |-- 00000-1bdf7d4c-dc90-488e-9dd9-2e44de30a465.metadata.json
        |-- 00001-08bf3227-b5d2-40e2-a8c7-2934ea97e6da.metadata.json
        |-- 00002-0f6303de-382e-4ebc-b9ed-6195bd0fb0e7.metadata.json
        |-- 1730313479898000000-Kws8nlgCX2QxoDHYHm4uMQ.avro
        |-- 1730313479898000000-OdsKRrRogW_PVK9njHIqAA.avro
        |-- snap-1730313479898000000-9029d7a2-b3cc-46af-96c1-ac92356e93e9.avro
        |-- snap-1730313479898000000-913546ba-bb04-4c8e-81be-342b0cbc5b50.avro

메타데이터 폴더가 표시되지 않거나 이 예제에 표시된 확장명이 있는 파일이 표시되지 않으면 제대로 생성된 Iceberg 테이블이 없을 수 있습니다.

변환 로그 확인

Iceberg 테이블이 Delta Lake 테이블로 가상화되면 바로 가기 폴더 내에서 명명된 _delta_log/ 폴더를 찾을 수 있습니다. 이 폴더에는 성공적으로 변환된 후 Delta Lake 형식의 메타데이터(델타 로그)가 포함됩니다.

이 폴더에는 최근 시도된 변환의 성공 또는 실패 세부 정보가 포함된 파일도 포함되어 latest_conversion_log.txt 있습니다.

바로 가기를 만든 후 이 파일의 내용을 보려면 레이크하우스의 테이블 영역에서 Iceberg 테이블 바로 가기 메뉴를 열고 파일 보기를 선택합니다.

스크린샷 파일 보기 메뉴 항목.

다음 예제와 같은 구조체가 표시됩니다.

Tables/
|-- MyIcebergTable123/
    |-- data/
        |-- <data files>
    |-- metadata/
        |-- <metadata files>
    |-- _delta_log/   <-- Virtual folder. This folder doesn't exist in the original location.
        |-- 00000000000000000000.json
        |-- latest_conversion_log.txt   <-- Conversion log with latest success/failure details.

변환 로그 파일을 열어 최신 변환 시간 또는 실패 세부 정보를 확인합니다. 변환 로그 파일이 표시되지 않으면 변환이 시도되지 않았습니다.

전환 로그와 오류 카테고리를 이해하세요

이 파일에는 latest_conversion_log.txt 최신 변환 시도가 기록되어 있습니다. Iceberg 테이블을 Delta Lake로 가상화하면, 테이블 _delta_log/ 폴더에서 이 파일을 찾을 수 있습니다. Delta Lake 테이블을 Iceberg로 가상화하면, 테이블의 metadata/ 폴더에 저장됩니다. 파일은 평범한 텍스트입니다. 변환이 실패할 경우, 는 latest_conversion_log.txt 다음과 유사한 구조화된 블록을 포함합니다:

Status:             Failed
Timestamp (UTC):    2025-07-29T19:04:11Z
Latest Metadata:    00000000000000000012.metadata.json
Invocation Id:      6f1c...e2
Root Activity Id:   9a3d...b7
Error Code:         <code>
Error Category:     USER | SYSTEM
Error Details:      <message>

오류 카테고리를 사용해 다음에 무엇을 할지 결정하세요:

  • USER 소스 테이블에 이 기능이 변환할 수 없는 무언가가 포함되어 있다는 뜻입니다. 오류 세부 사항은 수정해야 할 내용을 설명합니다. 소스 테이블을 조정한 후(제한 사항 및 고려사항 참조), 소스 테이블에 변경을 커밋하세요. 변환은 다음 커밋 후 자동으로 재시도됩니다.

  • SYSTEM 내부 또는 일시적 오류가 발생했고, 소스 테이블에 고칠 것이 없다는 뜻입니다. 또 다른 변환 시도를 트리거하려면 소스 테이블에 변경을 커밋하세요. 실패가 계속된다면 지원팀에 연락해 전체 latest_conversion_log.txt 파일을 제출하세요.

변환을 시도하지 않은 경우

변환 로그 파일이 표시되지 않으면 변환이 시도되지 않았습니다. 다음은 변환을 시도하지 않는 두 가지 일반적인 이유입니다.

  • 바로 가기가 올바른 위치에 만들어지지 않았습니다.

    Iceberg 테이블에 대한 바로 가기를 Delta Lake 형식으로 변환하려면 스키마를 사용하지 않는 레이크하우스의 Tables 폴더 바로 아래에 바로 가기를 배치해야 합니다. 테이블을 Delta Lake 테이블로 자동으로 가상화하려면 파일 섹션이나 다른 폴더 아래에 바로 가기를 배치해서는 안 됩니다.

    테이블 폴더에서 바로 가기의 올바른 배치를 보여 주는 스크린샷

  • 바로 가기의 대상 경로는 Iceberg 폴더 경로가 아닙니다.

    바로 가기를 만들 때 대상 스토리지 위치에서 선택한 폴더 경로는 Iceberg 테이블 폴더여야 합니다. 이 폴더에는metadata 및 data 폴더가 포함됩니다.

    바로 가기를 만드는 동안 바로 가기 대상 경로의 내용을 보여 주는 스크린샷

Snowflake의 "패브릭 용량 영역의 유효성을 검사할 수 없습니다." 오류 메시지

Snowflake를 사용하여 OneLake에 새 빙산 테이블을 작성하는 경우 다음 오류 메시지가 표시될 수 있습니다.

패브릭 용량 영역의 유효성을 검사할 수 없습니다. 이유: '잘못된 액세스 토큰입니다. 이는 인증 및 범위 지정 때문일 수 있습니다. 위임된 범위를 확인하세요.'

이 오류가 표시되면, Fabric 테넌트 관리자가 Snowflake를 사용하여 OneLake에 빙산 테이블 쓰기 섹션에서 언급된 두 가지 테넌트 설정을 제대로 활성화했는지 재확인하십시오.

  1. 패브릭 UI의 오른쪽 위 모서리에서 설정을 열고 관리 포털을 선택합니다.
  2. 테넌트 설정 아래의 개발자 설정 섹션에서 레이블이 지정된 서비스 주체가 패브릭 API를 사용할 수 있도록 설정합니다.
  3. 동일한 영역의 OneLake 설정 섹션에서 레이블이 지정된 설정을 사용하도록 설정 하면 사용자가 Fabric 외부의 앱을 사용하여 OneLake에 저장된 데이터에 액세스할 수 있습니다.

제한 사항 및 고려 사항

이 기능을 사용할 때 다음과 같은 제한사항을 유념하세요. 두 변환 방향 모두에 몇 가지 제한이 적용됩니다. 다른 경우는 델타 호수를 아이스버그 로 또는 아이스버그를 델타 호수로 전환하는 데 특화된 것입니다.

변환 문제가 드러나는 방식

소스 특징이 완전히 번역되지 않을 때, 두 가지 중 하나가 발생합니다. 두 결과 모두 전환 로그에 보고됩니다.

결과 어떻게 되나요?
전환 실패 새로운 타겟 메타데이터는 생성되지 않습니다. 테이블은 마지막으로 성공적으로 변환된 버전을 보관합니다.
기능 삭제 변환은 성공하지만, 지원 없는 열이나 파티션은 출력 테이블 형식에서 생략됩니다.

일반적인 제한 사항

  • Apache Iceberg 버전 지원

    지원되는 Iceberg 버전은 변환 방향에 따라 다릅니다:

    전환 방향 아이스버그 버전 동작
    델타 호수에서 아이스버그까지 Iceberg V2 메타데이터를 생성합니다.
    아이스버그에서 델타 호수까지 Iceberg V2 소스 테이블을 지원합니다. Iceberg V3 소스 테이블은 부분적으로 지원되며; Iceberg V3 기능을 참조하세요.
  • Parquet 데이터 파일만

    이 기능은 메타데이터 변환을 위한 기본 데이터 파일 형식으로서 두 방향 변환 모두에서 Parquet만을 지원합니다.

  • 변환된 최신 메타데이터 버전

    테이블 형식 가상화 기능은 현재 최신 테이블 메타데이터 버전을 원래 테이블 형식으로 변환합니다. 여러 버전이 원래 테이블 형식으로 작성된 경우 최신 테이블 메타데이터 버전만 가상 테이블 형식으로 변환됩니다.

  • 최대 입력 트랜잭션 수

    소스 테이블은 테이블 형식 변환을 위해 5,000개 미만의 트랜잭션 또는 커밋을 가져야 합니다. 거래 기록이나 명세서를 압축하여 거래나 커밋 수를 줄이세요.

  • 변환 대기 시간 및 업데이트 빈도

    테이블 형식 메타데이터 생성에는 5초에서 2분 정도 걸릴 수 있습니다. 소스 테이블에 업데이트할 빈도가 2분에 한 번 이상 자주 이루어지지 않도록 하세요. 그렇지 않으면 출력 테이블 형식이 일관되지 않은 뷰를 볼 수 있습니다.

  • 스키마 진화

    두 변환 방향 모두에서 확장형 변경(예: intlong)을 지원합니다. 좁아지거나 호환되지 않는 타입 변경은 변환을 실패시킵니다.

델타 호수에서 아이스버그까지

이러한 제한은 델타 레이크 테이블을 아이스버그로 가상화할 때 적용됩니다.

팁 (조언)

Iceberg V2로 가장 완전하게 변환하려면 소스 테이블에서 삭제 벡터를 사용하지 않을 때 사용하는 IcebergCompatV2 것이 좋습니다. 테이블이 삭제 벡터를 사용하는 경우 IcebergCompatV3를 사용하세요. OneLake는 이를 Iceberg V2 위치 기반 삭제로 변환합니다. 이 기능이 Iceberg V2 메타데이터를 생성하기 때문에 Iceberg V3 전용 기능은 변환되지 않습니다.

특히 작가 기능이 없는IcebergCompat 델타 레이크 표에 다음과 같은 고려사항이 적용됩니다:

  • 중첩 map 및 array 열에는 요소, 키 및 값에 대해 안정적인 필드 ID가 필요합니다. 이들이 없으면 중첩된 컬렉션 열은 Iceberg 출력에서 제외됩니다(변환 로그에 기록됨). IcebergCompat 이 ID를 할당합니다.

  • 타임스탬프는 INT64 마이크로초 단위로 저장되어야 합니다. 타임스탬프가 물리적으로 INT96(레거시) 형식으로 저장된 테이블은 변환되지만, 해당 타임스탬프 열은 Iceberg 엔진에서는 읽을 수 없습니다. IcebergCompat INT64 타임스탬프를 강제합니다.

  • 열 이름 변경 — 델타 레이크 테이블이 열의 매핑(id 또는 name 모드)을 사용할 때 보존되며, IcebergCompat 이는 필요합니다. 열 매핑 모드 none에서는 열을 삭제했다가 추가하는 등 이름 변경이 나타납니다.

  • 열 유형 — Iceberg 호환 유형만 변환됩니다; 다른 열은 삭제됩니다(변환 로그에 기록됨). 예를 들어, void에 상응하는 항목은 Iceberg에 없습니다. IcebergCompat 스키마를 변환 타입 집합으로 제한합니다.

  • 분할 — 신원과 시간(연도, 월, 일, 시간) 파티션이 변환됩니다. Delta Lake는 테이블 전체에 적용되는 단일 파티셔닝을 지원합니다.

아이스버그에서 델타 호수까지

이러한 제한은 아이스버그 테이블을 델타 호수로 가상화할 때 적용됩니다.

  • 열 이름 변경은 지원되지 않습니다. 소스 아이스버그 테이블에서 열의 이름을 변경할 수는 없습니다. 대신 새 열 이름으로 테이블을 새로 만들어야 합니다. 테이블을 다시 만들 때는 Iceberg 테이블 목록에 설명된 대로 남은 메타데이터 파일을 제거하세요. 이 경우 메타데이터 파일 세트는 한 세트만 포함해야 합니다.

  • 분할 변환 — 동일성 변환과 시간(연도, 월, 일, 시간) 변환만 지원합니다. truncate[W], void, bucket[N] 변환은 무시됩니다. 테이블은 여전히 변환되지만 해당 분할은 적용되지 않습니다. 기본 열은 정칙 비분할 열로 보존됩니다.

  • 파티션 진화 — 소스 테이블의 라이브 데이터 파일이 여러 파티션 스펙에 걸쳐 있거나, 이전에 변환된 테이블의 파티션 열이 변경되면 변환이 거부됩니다. 델타 레이크는 단일 테이블 전체 파티션을 가지고 있으며, 혼합 사양 파일을 변환하면 오래된 파일들의 null 파티션 값이 잘못 생성됩니다. 단일 파티션 사양을 유지하세요.

  • 행 수준 삭제 — 아이스버그 V2 위치 삭제와 V3 삭제 벡터는 델타 호수 삭제 벡터로 변환됩니다. 등성 삭제는 변환 실패를 초래합니다.

  • 지원되지 않는 타입 — Delta Lake에 상응하는 타입이 없는 타입(예: time 및 Iceberg V3 확장 타입)은 삭제되며, uuid는 binary에 매핑됩니다. Iceberg V3 기능을 참고하세요.

  • 형식 너비 문제

    Snowflake를 사용해 Iceberg 테이블을 작성하고, 테이블에 열 유형 INT64, double, 또는 Decimal 정밀도 >= 10을 포함한다면, 결과적으로 생성된 가상 Delta Lake 테이블이 모든 Fabric 엔진에서 소모되지 않을 수 있습니다. 다음과 같은 오류가 표시됩니다.

    Parquet column cannot be converted in file ... Column: [ColumnA], Expected: decimal(18,4), Found: INT32.
    

    이 문제에 대한 수정 작업을 진행 중입니다.

    우회 방법: Lakehouse 테이블 미리보기 UI를 사용 중이고 이 문제가 발생한다면, SQL 분석 엔드포인트 뷰(오른쪽 상단에서 Lakehouse 뷰를 선택한 후 SQL 분석 엔드포인트로 전환)로 전환하여 테이블을 미리 검토하면 이 오류를 해결할 수 있습니다. 그런 다음, Lakehouse 보기로 다시 전환하면 테이블 미리 보기가 제대로 표시됩니다.

    Spark Notebook 또는 작업을 실행하고 이 문제가 발생하는 경우 Spark 구성spark.sql.parquet.enableVectorizedReader을 .로 설정 false 하여 이 오류를 해결할 수 있습니다. 다음은 Spark Notebook에서 실행할 PySpark 명령의 예입니다.

    spark.conf.set("spark.sql.parquet.enableVectorizedReader","false")
    
  • Iceberg 테이블 메타데이터 스토리지가 이식 가능하지 않음

    Iceberg 테이블의 메타데이터 파일은 절대 경로 참조를 사용하여 서로를 참조합니다. Iceberg 메타데이터 파일을 다시 작성하지 않고 Iceberg 테이블의 폴더 내용을 다른 위치로 복사하거나 이동하면 이 OneLake 기능을 포함하여 Iceberg 판독기에서 테이블을 읽을 수 없게 됩니다.

    해결 방법:

    이 기능을 사용하기 위해 Iceberg 테이블을 다른 위치로 이동해야 하는 경우 원래 Iceberg 테이블을 작성한 도구를 사용하여 원하는 위치에 새 빙산 테이블을 작성합니다.

  • Iceberg 테이블 폴더에는 메타데이터 파일 집합이 하나만 포함되어야 합니다.

    Snowflake에서 Iceberg 테이블을 삭제하고 다시 만들면 메타데이터 파일이 정리되지 않습니다. 이 동작은 Snowflake의 UNDROP 기능을 지원하기 위한 의도적인 설계입니다. 그러나 바로 가기는 폴더를 직접 가리키고 해당 폴더에는 여러 메타데이터 파일 집합이 있으므로 이전 테이블의 메타데이터 파일을 제거할 때까지 테이블을 변환할 수 없습니다.

    Iceberg 테이블의 메타데이터 폴더에 메타데이터 파일 집합이 두 개 이상 있으면 변환이 실패합니다.

    해결 방법:

    변환된 테이블에 올바른 버전의 테이블이 반영되도록 하려면 다음을 수행합니다.

    • 동일한 폴더에 둘 이상의 Iceberg 테이블을 저장하지 않는지 확인합니다.
    • 테이블을 삭제한 후, 다시 만들기 전에 Iceberg 테이블 폴더의 내용을 정리합니다.
  • 메타데이터 변경 내용이 즉시 반영되지 않음

    Iceberg 테이블에 열을 추가하거나, 열을 삭제하거나, 열 이름을 바꾸거나, 열 타입을 변경하는 등 메타데이터를 변경하면, 데이터 행 추가와 같은 변경이 이루어질 때까지 테이블이 다시 변환되지 않을 수 있습니다.

    최신 메타데이터 변경 내용을 포함하는 올바른 최신 메타데이터 파일을 선택하는 수정 작업을 진행 중입니다.

    해결 방법:

    Iceberg 테이블을 스키마를 변경한 후 데이터 행을 추가하거나 다른 변경 내용을 적용합니다. 변경된 후에는 Fabric에서 테이블의 최신 보기를 새로 고치고 볼 수 있습니다.

아이스버그 V3의 특징

이 기능은 Iceberg V2 메타데이터를 생성하고 읽습니다; Iceberg V3 메타데이터는 직접 쓰지 않습니다. 소스가 Iceberg V3 테이블일 경우, 그 특징들은 다음 표에 설명된 대로 변환됩니다. 삭제된 열과 기타 번역 노트는 변환 로그에 기록됩니다.

아이스버그 V3 기능 지원됨 번역 동작
삭제 벡터 예 읽어 Delta Lake 삭제 벡터로 변환됨.
로우 계보 No 행 계보 메타데이터는 Delta Lake로 변환되지 않습니다. 테이블은 여전히 변환되며, 행 데이터는 변하지 않습니다.
기본 열 값 No 리더 기본값이 있는 열은 삭제됩니다. 쓰기 기본값은 번역되지 않습니다.
새로운 데이터 타입 (variant, 지리공간, 나노초 타임스탬프, unknown) No 새로운 Iceberg V3 데이터 타입을 사용하는 열은 제외됩니다. 전체 목록은 지원 데이터 타입을 참조하세요.
다중 인수 파티션 변환 No 지원되지 않습니다.
테이블 암호화 키 No 지원되지 않습니다.

Important

변환 과정에서 새로운 Iceberg V3 데이터 타입이 포함된 열이 삭제되더라도, 일부 Fabric 엔진은 데이터 파일이 Iceberg V3 타입을 사용하면 테이블을 읽지 못합니다. 데이터 파일에는 여전히 그런 유형의 정보가 남아 있습니다.

우회 방법: Fabric 전반에 걸쳐 가장 넓은 호환성을 원하려면, 가상화 테이블에서 Iceberg V3 컬럼을 사용하지 마세요.

지원되는 데이터 형식

다음 표는 컬럼 데이터 타입이 포맷 간 매핑 방식을 보여줍니다. 별도 언급이 없는 한, 타입은 양방향 모두 변환됩니다.

Delta Lake 유형 빙산 유형 비고
string string
integer int
long long
short, byte int 델타 호수 short 와 byte 아이스버그로 확장됨 int
float float
double double
decimal(P, S) decimal(P, S) 정밀도 최대 38
boolean boolean
binary binary
date date
timestamp timestamptz UTC; INT64 마이크로초로 저장됩니다. Snowflake에서는 이 유형을 생성하려면 timestamp_ltz를 지정하세요.
timestamp_ntz timestamp 시간대도 없고요. timestamp_ntz모든 Fabric 워크로드에서 완전히 지원되는 것은 아니며, 시간대를 인식하는 타임스탬프를 선호합니다.
struct, array, map struct, list, map Delta Lake에서 Iceberg로: 중첩된 array 및 map에는 IcebergCompat가 필요함
void — Delta Lake 전용; 변환 과정에서 제거됨
— time Iceberg만 해당; Delta Lake에 대응하는 것은 없으며, 제거됨
— uuid Iceberg만; binary에 매핑됨
— variant 아이스버그만(V3); 제거됨. 아이스버그 V3 기능 참조
— geometry, geography 아이스버그 전용(V3); 제거됨. 아이스버그 V3 기능 참조
— timestamp_ns, timestamptz_ns Iceberg 전용(V3); 제거됨. 아이스버그 V3 기능 참조
— unknown 아이스버그만(V3); 제거됨. 아이스버그 V3 기능 참조

Snowflake가 작성한 Iceberg 테이블의 경우, 폭이 넓은 long, double, 또는 decimal 열도 Iceberg에서 Delta Lake로 섹션에 설명된 Type width 문제의 영향을 받을 수 있습니다.

지원되는 파티션 변환

변화시키다 아이스버그에서 델타 호수까지 델타 호수에서 아이스버그까지
identity 지원됨 지원됨
해, 월, 날, 시간 지원됨 지원됨
bucket[N] 무시됨 (분할 해제됨) 해당 없음(N/A)
truncate[W] 무시됨 (분할 해제됨) 해당 없음(N/A)
void 무시됨 (분할 해제됨) 해당 없음(N/A)

스키마와 파티션 진화

Capability 아이스버그에서 델타 호수까지 델타 호수에서 아이스버그까지 비고
열 추가 지원됨 지원됨
드롭 칼럼 지원됨 지원됨
열 이름 바꾸기 지원되지 않음 지원됨 델타 호수에서 아이스버그까지는 기둥 매핑(id 또는 name 모드)이 필요합니다
확장 유형 변경 지원됨 지원됨 예를 들어, int에서 long까지
좁아짐 또는 호환되지 않는 유형 변경 실패 실패
파티션 진화 (다중 사양) 실패 해당 없음(N/A) Delta Lake는 테이블 전체에 적용되는 단일 파티셔닝을 사용합니다

행 단위 삭제

아이스버그 테이블을 델타 레이크로 가상화하면:

유형 삭제 Behavior
아이스버그 V2 포지션 삭제 Delta Lake 삭제 벡터로 변환됨.
아이스버그 V3 삭제 벡터 읽고 Delta Lake 삭제 벡터로 변환되었습니다.
동등 삭제 변환에 실패했습니다.

델타 레이크 테이블을 아이스버그로 가상화하면:

유형 삭제 Behavior
Delta Lake 삭제 벡터 Iceberg V2 위치 삭제로 작성됨.

가용성 및 플랫폼 제한

  • 지역 가용성 제한

    이 기능은 아직 다음 지역에서 사용할 수 없습니다.

    • 카타르 중부
    • 노르웨이 서부

    해결 방법:

    다른 지역의 패브릭 용량에 연결된 작업 영역도 이 기능을 사용할 수 있습니다. Fabric 사용할 수 있는 지역의 전체 목록을 참조하세요.

  • 프라이빗 링크가 지원되지 않음

    이 기능은 현재 프라이빗 링크가 사용하도록 설정된 테넌트 또는 작업 영역에서 지원되지 않습니다.

    이 제한을 제거하기 위해 개선 작업을 진행하고 있습니다.

  • OneLake 바로 가기는 동일한 지역에 있어야 합니다.

    OneLake 위치를 가리키는 바로 가기와 함께 이 기능을 사용하는 데 일시적으로 제한이 있습니다. 바로 가기의 대상 위치는 바로 가기 자체와 동일한 지역에 있어야 합니다.

    이 요구 사항을 제거하기 위해 개선 작업을 진행하고 있습니다.

    해결 방법:

    다른 레이크하우스의 빙산 테이블에 대한 OneLake 바로 가기가 있는 경우 다른 레이크하우스가 동일한 지역의 용량과 연결되어 있는지 확인합니다.