Lakehouse는 사용자 지정 스키마 만들기를 지원합니다. 스키마를 사용하면 더 나은 데이터 검색, 액세스 제어 등을 위해 테이블을 그룹화할 수 있습니다.
Lakehouse를 위한 스키마 생성하기
Lakehouse에 대한 스키마 지원을 사용하도록 설정하려면 만들 때 Lakehouse 스키마 옆에 있는 확인란을 선택하십시오.
비고
스키마 지원 없이 Lakehouse를 만들려는 경우 확인란의 선택을 취소할 수 있습니다.
Lakehouse를 만든 후에는 테이블 아래에서 dbo라는 기본 스키마를 찾을 수 있습니다. 이 스키마는 항상 존재하며 변경하거나 제거할 수 없습니다. 새 스키마를 만들려면 테이블을 마우스로 가리키고 ...를 선택하고 새 스키마를 선택합니다. 스키마 이름을 입력하고 만들기를 선택합니다. 표 아래에 스키마가 사전순으로 나열됩니다.
Lakehouse 스키마에 테이블 저장
스키마에 테이블을 저장하려면 스키마 이름이 필요합니다. 그렇지 않으면 기본 dbo 스키마로 이동합니다.
df.write.mode("Overwrite").saveAsTable("contoso.sales")
Lakehouse Explorer를 사용하여 테이블을 정렬하고 테이블 이름을 다른 스키마로 끌어서 놓을 수 있습니다.
주의
테이블을 수정하는 경우 Notebook 코드 또는 데이터 흐름과 같은 관련 항목도 업데이트하여 올바른 스키마와 정렬되도록 해야 합니다.
스키마 바로 가기를 사용하여 여러 테이블 가져오기
다른 Fabric Lakehouse 또는 외부 스토리지에서 여러 델타 테이블을 참조하려면 선택한 스키마 또는 폴더 아래에 모든 테이블을 표시하는 스키마 바로 가기를 사용합니다. 원본 위치의 테이블에 대한 변경 내용도 스키마에 표시됩니다. 스키마 바로 가기를 만들려면 테이블을 마우스로 가리키고 ...를 선택하고 새 스키마 바로 가기를 선택합니다. 그런 다음, 다른 Lakehouse의 스키마를 선택하거나 외부 스토리지인 ADLS(Azure Data Lake Storage) Gen2와 같은 장소에 있는 Delta 테이블 폴더를 선택합니다. 그러면 참조된 테이블이 있는 새 스키마가 만들어집니다.
Power BI 보고를 위한 레이크하우스 스키마에 액세스하기
의미 체계 모델을 만들려면 사용하려는 테이블을 선택하기만 하면 됩니다. 테이블은 서로 다른 스키마에 있을 수 있습니다. 다른 스키마의 테이블이 동일한 이름을 공유하는 경우 모델 보기에서 테이블 이름 옆에 숫자가 표시됩니다.
노트북의 레이크하우스 스키마
Notebook 개체 탐색기에서 스키마가 적용된 Lakehouse를 보면 테이블이 각각의 스키마에 속해 있는 것을 볼 수 있습니다. 테이블을 코드 셀로 끌어서 놓고 테이블이 있는 스키마를 참조하는 코드 조각을 가져올 수 있습니다. 코드의 테이블을 참조하려면 이 네임스페이스를 사용합니다. "workspace.lakehouse.schema.table". 요소를 제외하면 실행기에서 기본 설정을 사용합니다. 예를 들어 테이블 이름만 지정하는 경우 Notebook에 대한 기본 Lakehouse의 기본 스키마(dbo)를 사용합니다.
중요함
코드에서 스키마를 사용하려면 노트북의 기본 레이크하우스가 스키마를 사용하도록 설정되어 있는지 또는 기본 레이크하우스가 선택되어 있지 않은지 확인합니다.
작업 영역 간 Spark SQL 쿼리
네임스페이스 "workspace.lakehouse.schema.table"을 사용하여 코드의 테이블을 참조합니다. 이렇게 하면 코드를 실행하는 사용자에게 테이블에 액세스할 수 있는 권한이 있는 경우 다른 작업 영역의 테이블을 조인할 수 있습니다.
SELECT *
FROM operations.hr.hrm.employees as employees
INNER JOIN global.corporate.company.departments as departments
ON employees.deptno = departments.deptno;
비스키마 레이크하우스 참조
스키마가 활성화된 레이크하우스 또는 레이크하우스 없이 Notebook의 기본값으로 설정하면 Spark 코드는 테이블에 대해 스키마가 활성화된 참조 방식을 사용합니다. 그러나 "lakehouse.table"으로 참조하여 동일한 코드 내에서 사용하도록 설정된 스키마 없이도 Lakehouse에 액세스할 수 있습니다.
또한 다양한 유형의 레이크하우스에서 테이블을 조인할 수 있습니다.
SELECT *
FROM workspace.schemalh.schema.table as schematable
INNER JOIN workspace.nonschemalh.table as nonschematable
ON schematable.id = nonschematable.id;
기존 코드를 스키마 사용 레이크하우스로 전환하고 리팩터링할 수 있도록 스키마가 없는 레이크하우스에는 네 부분으로 구성된 명명이 지원됩니다. 테이블을 "workspace.lakehouse.dbo.table"로 참조할 수 있습니다. 여기서 "dbo"는 스키마 이름으로 사용됩니다. 스키마를 사용할 수 없는 레이크하우스에는 아직 존재하지 않습니다. 이 방법을 사용하면 레이크하우스에서 스키마 지원을 사용하도록 설정하기 전에 가동 중지 시간 없이 코드를 업데이트할 수 있습니다.
Lakehouse 스키마에 대한 API
스키마가 있는 Lakehouse를 만들려면 Create Lakehouse - REST API 를 사용하고 creationPayload 요청에서 "enableSchemas": true를 지정합니다. 테이블, 스키마 또는 테이블 세부 정보를 나열하려면 Delta용 OneLake 테이블 API를 사용합니다.
기존 레이크하우스에 스키마 활성화
우리는 비 스키마 레이크 하우스를 계속 지원하고 두 유형 간의 완전한 기능 패리티를 위해 노력하고 있습니다. Spark의 전체 상호 운용성도 지원되므로 다양한 유형의 레이크하우스를 쿼리하고 조인할 수 있습니다. 곧 고객이 레이크하우스를 비스케마에서 스키마 사용 버전으로 전환하는 데 도움이 되는 도구를 도입하여 데이터를 이동하거나 가동 중지 시간을 경험하지 않고도 향상된 기능을 활용할 수 있습니다.
현재 제한 사항
Spark의 스키마 사용 레이크하우스에는 몇 가지 제한 사항이 있으며, 현재 향후 몇 개월 내에 출시될 예정입니다.
| 지원되지 않는 특징/기능 | 해결 방법 |
|---|---|
| 스파크 보기 | Materizlized Lake Views를 사용합니다. |
| 공유 레이크하우스 | 레이크하우스에서 작업 영역 역할을 통해 공유된 레이크하우스 테이블의 바로 가기를 생성하고, 이를 통해 테이블에 접근합니다. |
| 외부 ADLS 테이블 | OneLake 바로 가기를 사용하세요. |
| 아웃바운드 액세스 보호 | Spark SQL 상태 분석을 사용하여 여러 작업 영역에서 레이크하우스에 액세스하는 시나리오의 경우 비스키마 레이크하우스를 사용하세요. |