Fabric 창고 개발을 위한 Git 통합

적용 대상: ✅ Microsoft Fabric의 웨어하우스

이 글에서는 Fabric의 내장 Git 통합을 통해 Fabric Data Warehouse을 개발하고 배포하는 장점을 설명합니다.

Important

이 기능은 프리뷰 상태입니다.

Fabric에서 Git 통합을 사용하면 팀은 현대적인 소스 관리 방식을 웨어하우스 개발에 적용할 수 있습니다. 개발자는 브랜치 변경 사항을 분리하고, 커밋을 통해 스키마 진화를 추적하며, 풀 리퀘스트를 통해 협업하고, Git 저장소와 Fabric 작업 공간 간 업데이트를 동기화할 수 있습니다.

일반적인 시나리오는 다음과 같습니다.

  • 브랜치 및 워크스페이스에서 안전하게 스키마 변경 개발
  • Git에서 웨어하우스 객체의 버전 관리
  • 여러 지점과 작업 공간에 걸친 협업
  • 분기 간 검증된 변경 촉진
  • 작업 공간 항목들(창고 및 기타 등)을 Git 진실의 출처와 정렬시키는 방법

창고 개발 수명 주기 전반에 걸쳐 일관성, 추적성, 신뢰성을 유지하려면 이러한 워크플로우를 이해해야 합니다.

Fabric Warehouse Git 통합 개발 수명주기 다이어그램입니다.

Fabric Data Warehouse 작업 공간을 Git에 연결할 때, 웨어하우스 정의를 데이터베이스 프로젝트로 커밋합니다. 이 프로젝트는 소스 컨트롤에서 웨어하우스 스키마의 권위 있는 표현이 되며, 지속적인 개발 활동의 기초가 됩니다. 소스 컨트롤 탐색기에서는 스키마가 개별 .sql 파일로 나타납니다.

소스 컨트롤 탐색기에서 창고 스키마 스크린샷입니다.

Fabric Git 통합과 Fabric Data Warehouse을 사용하면 다음과 같은 기능이 가능합니다:

Comparison

이 동기화 과정에서 Fabric은 DacFx 기반 점진적 스키마 배포를 사용하여 변경 사항을 적용합니다. 이 방법은 전체 창고 정의를 업데이트하지 않고 관련 스키마 차이만 창고에 적용합니다.

점진적 추출은 소스 컨트롤에서 불필요한 이탈을 줄이고, 브랜치 간 스키마 차이를 더 깔끔하게 유지하며, 효율적인 브랜치 및 머징 워크플로우를 지원합니다. 추출 과정이 스키마 인식 기능이기 때문에, 작업 공간 상태와 Git 추적 정의 간의 신뢰성 있는 비교 및 검증도 가능하게 합니다.

웨어하우스 스키마를 추출하고 저장하는 방식을 표준화하면 개발 환경 간 일관성이 향상됩니다. 스키마 정의는 브랜치 간 안정적으로 유지되고, 차이점은 의도적인 개발 변경을 더 정확하게 반영하며, 소스 관리는 배포, 협업, 수명 주기 관리를 위한 신뢰할 수 있는 기준선이 됩니다.

XMLA.json 이 파일 자체는 Git 통합 워크플로우에서 제외됩니다. Fabric은 이 파일을 커밋과 업데이트에서 제외하여 기본 의미 model 메타데이터가 의도치 않게 Git에 저장되는 것을 방지합니다. Git XMLA.json 에서 작업 공간을 동기화할 때는 무시되어, 분기 전환이나 Git 업데이트 시 충돌, 의도치 않은 덮어쓰기, 잡음을 방지할 수 있습니다.

소스 제어의 제한 사항

권한과 같은 SQL 보안 기능은 별도의 내보내기와 마이그레이션 방식을 필요로 합니다.

  • 웨어하우스와 SQL 분석 엔드포인트 간의 크로스아이템 의존성은 현재 개발 워크플로우에서 지원되지 않습니다. 그 결과, 이들 항목 간의 조정된 변화에 의존하는 시나리오는 신뢰성 있게 작동하지 않을 수 있습니다.

  • 창고 수준에서의 선택적 커밋 은 현재 지원되지 않습니다. 변경 사항은 세밀한 객체 수준이 아니라 창고 아이템 수준에서 이루어집니다.

  • SQL 분석 엔드포인트에 대한 버전 관리 지원 은 현재 제공되지 않습니다. 이러한 한계는 웨어하우스와 SQL 분석 엔드포인트 모두에 걸쳐 솔루션이 운영될 때 엔드 투 엔드 라이프사이클 관리를 제한할 수 있습니다.

Git 통합의 제한 사항

  • 두 개 이상의 창고 품목이 서로 참조할 때, 이들은 순환적 의존성을 형성합니다. 시스템은 분기나 Git-workspace 동기화 작업 중에 이 순환 참조를 감지하여 이 작업이 실패하게 만듭니다. 항목 간 순환적 의존성을 피하세요.
  • 현재 웨어하우스에 대한 출력 대상이 있는 Dataflow Gen2를 만들지 마세요. 명명된 DataflowsStagingWarehouse 새 항목이 리포지토리에 표시되고 Git에서 커밋 및 업데이트가 차단됩니다.
  • SQL 분석 엔드포인트와 웨어하우스 간의 항목 간 종속성, 항목 시퀀싱 및 동기화 격차는 개발 및 연속 통합 중에 "새 작업 영역 또는 기존 작업 영역으로 분기"와 "다른 분기로 전환" 워크플로에 영향을 줍니다.
  • 만약 객체가 같은 웨어하우스 내 다른 객체를 3부분 명명(database.schema.object, )으로 참조하면, Git에서 커밋이나 업데이트가 실패할 수 있습니다. 자세한 정보와 우회 방법은 '세 부분 이름을 사용한 창고 자체 객체에 대한 참조'를 참조하세요.
  • 정의된 IDENTITY 열을 변경하면, 테이블이 활성화될 때까지 IDENTITY_INSERT Git에서 커밋하거나 업데이트하는 것이 실패할 수 있습니다.
  • 저장소에 .sqlproj 이전 Microsoft.Build.Sql SDK 버전을 고정하는 파일이 포함되어 있다면, Git에서 커밋하거나 업데이트하는 것이 실패할 수 있습니다. 이전 SDK가 열과 같은 최신 웨어하우스 문법 IDENTITY 을 인식하지 못하기 때문입니다.CLUSTER BY 자세한 정보와 우회 방법은 Git 저장소의 'Out-of-date .sqlproj'를 참고하세요.
  • 객체가 다른 웨어하우스의 두 개 이상의 테이블을 참조하면서 모든 열을 별칭 자격화하지 않은 경우, Git에서 커밋하거나 업데이트하는 것이 실패할 수 있습니다. 자세한 정보와 우회 방법은 다른 웨어하우스의 두 개 이상의 테이블을 참조하는 객체의 자격 없는 열을 참조하세요.
  • 스크립트가 다른 웨어하우스의 같은 스키마 내 두 개 이상의 다른 객체를 참조하고, 스키마 이름을 일관되지 않은 대문자로 철자하면 Git에서 커밋이나 업데이트가 실패할 수 있습니다. 더 많은 정보와 우회 방법은 스키마 이름의 일관성 없는 대문자 작성을 참조하세요.
  • 후보 목록에 구분자가 포함된 :: 모호한 열 오류가 실제로 모호함이 없더라도 git에서 커밋하거나 업데이트할 때 발생할 수 있습니다. 더 많은 정보와 우회 방법은 중복 후보 객체가 있는 모호한 열 오류를 참조하세요.

지원되지 않는 시나리오

다른 작업 영역의 웨어하우스에 서로 다른 데이터 정렬이 있는 경우 다음 CI/CD 워크플로는 공식적으로 지원되지 않습니다. 이러한 작업은 오류 없이 성공할 수 있지만 메타데이터 오류가 발생할 수 있습니다.

이러한 모든 시나리오에서 데이터 정렬 불일치가 발생하는 경우 Fabric 도구 상자 GitHub 리포지토리에서 Python 스크립트 scripts/dw-collation-error-update-tmsl/pbi_interactive.py 사용하여 웨어하우스 데이터 정렬과 일치하도록 데이터 세트(TMSL) 데이터 정렬을 업데이트합니다.

시나리오 Description 위험
배포 파이프라인 원본과 다른 데이터 정렬을 사용하여 대상 웨어하우스를 만든 파이프라인 단계(예: Dev → Test → Prod)를 통해 웨어하우스 콘텐츠를 승격하는 것은 지원되지 않습니다. 배포는 성공할 수 있지만 데이터 세트 데이터 정렬은 대상 웨어하우스 데이터 정렬과 일치하도록 업데이트되지 않습니다.
새 작업 영역 또는 기존 작업 영역으로 분기 Git 통합을 사용하여 기존 작업 영역에서 웨어하우스에 다른 데이터 정렬이 있는 새 작업 영역 또는 기존 작업 영역으로 분기할 수 없습니다. 웨어하우스 콘텐츠는 동기화되지만 데이터 정렬 메타데이터는 조정되지 않습니다.
작업 영역에서 분기 변경 Git 연결 작업 영역에서 다른 데이터 정렬의 웨어하우스와 연결된 분기로 전환하는 것은 지원되지 않습니다. 동기화된 콘텐츠는 현재 웨어하우스와 일치하지 않는 데이터 정렬 가정을 전달할 수 있습니다.
작업 영역 간의 변경 사항을 브랜치를 통해 병합하기 웨어하우스에 서로 다른 정렬 방식이 있는 워크스페이스에서 Git 브랜치 병합은 지원되지 않습니다. 병합은 Git 수준에서 성공할 수 있지만 결과 데이터 세트 데이터 정렬은 대상 웨어하우스의 데이터 정렬을 반영하지 않습니다.

다음 단계: