Direct Lake

Direct Lake 모드는 Power BI에서 매우 큰 데이터 볼륨을 분석하기 위한 의미 체계 모델 기능입니다. Direct Lake는 레이크하우스 또는 웨어하우스 엔드포인트를 쿼리하지 않고도 Power BI 모델로 데이터를 가져오거나 복제할 필요 없이 데이터 레이크에서 직접 parquet 형식의 파일을 로드하는 것을 기반으로 합니다. Direct Lake는 레이크에서 데이터를 분석할 준비가 된 Power BI 엔진으로 바로 로드하는 빠른 경로입니다. 다음 다이어그램은 클래식 가져오기 및 DirectQuery 모드를 Direct Lake 모드와 비교하는 방법을 보여줍니다.

Direct Lake 기능 다이어그램

DirectQuery 모드에서 Power BI 엔진은 원본에서 데이터를 쿼리하므로 속도가 느릴 수 있지만 가져오기 모드와 같이 데이터를 복사할 필요가 없습니다. 데이터 원본의 모든 변경 내용은 쿼리 결과에 즉시 반영됩니다.

반면에 가져오기 모드에서는 SQL 또는 다른 유형의 쿼리를 데이터 원본으로 변환하고 전달할 필요 없이 데이터가 캐시되고 DAX 및 MDX 보고서 쿼리에 최적화되므로 성능이 향상될 수 있습니다. 그러나 Power BI 엔진은 새로 고치는 동안 새 데이터를 먼저 모델에 복사해야 합니다. 원본의 모든 변경 사항은 다음 모델 새로 고침 시에만 선택됩니다.

Direct Lake 모드는 OneLake에서 직접 데이터를 로드하여 가져오기 요구 사항을 제거합니다. DirectQuery와 달리 DAX 또는 MDX에서 다른 쿼리 언어로 변환하거나 다른 데이터베이스 시스템에서 쿼리를 실행하여 가져오기 모드와 유사한 성능을 얻을 수 없습니다. 명시적 가져오기 프로세스가 없으므로 데이터 원본에서 발생하는 모든 변경 내용을 선택하여 DirectQuery 및 가져오기 모드의 장점을 결합하면서 단점을 방지할 수 있습니다. Direct Lake 모드는 매우 큰 모델과 데이터 원본에서 자주 업데이트되는 모델을 분석하는 데 이상적인 선택이 될 수 있습니다.

또한 Direct Lake는 사용자가 볼 수 있는 권한이 있는 데이터만 볼 수 있도록 행 수준 보안개체 수준 보안을 지원합니다.

필수 조건

Direct Lake는 Microsoft Fabric F SKU에서만 지원됩니다.

레이크하우스

Direct Lake를 사용하기 전에 지원되는 Microsoft Fabric 용량에서 호스트되는 작업 영역에서 하나 이상의 델타 테이블이 있는 Lakehouse(또는 웨어하우스)를 프로비전해야 합니다. Lakehouse는 OneLake에서 parquet 형식 파일의 스토리지 위치를 제공하기 때문에 필요합니다. 레이크하우스는 또한 Direct Lake 모델을 만들기 위해 웹 모델링 기능을 시작하는 액세스 지점을 제공합니다.

레이크하우스를 프로비전하고, 레이크하우스에 델타 테이블을 만들고, 레이크하우스에 대한 기본 모델을 만드는 방법을 알아보려면 Direct Lake에 대한 레이크하우스 만들기를 참조하세요.

SQL 엔드포인트

Lakehouse 프로비전의 일환으로 SQL 쿼리를 위한 SQL 엔드포인트와 보고에 대한 기본 모델이 만들어지고 Lakehouse에 추가된 테이블로 업데이트됩니다. Direct Lake 모드는 OneLake에서 직접 데이터를 로드할 때 SQL 엔드포인트를 쿼리하지 않지만, 데이터 원본이 Direct Lake를 통해 읽을 수 없는 고급 보안 또는 뷰와 같은 특정 기능을 사용하는 경우와 같이 Direct Lake 모델이 DirectQuery 모드로 원활하게 대체되어야 하는 경우 필요합니다. 또한 Direct Lake 모드는 스키마 및 보안 관련 정보에 대한 SQL 엔드포인트를 쿼리합니다.

데이터 웨어하우스

SQL 엔드포인트가 있는 Lakehouse 대신 SQL 문 또는 데이터 파이프라인을 사용하여 웨어하우스를 프로비전하고 테이블을 추가할 수도 있습니다. 독립 실행형 데이터 웨어하우스를 프로비전하는 절차는 Lakehouse의 프로시저와 거의 동일합니다.

XMLA 엔드포인트를 통한 모델 쓰기 지원

Direct Lake 모델은 SQL Server Management Studio(19.1 이상) 및 테이블 형식 편집기 및 DAX 스튜디오와 같은 최신 버전의 외부 BI 도구와 같은 도구를 사용하여 XMLA 엔드포인트를 통한 쓰기 작업을 지원합니다. XMLA 엔드포인트 지원을 통한 모델 쓰기 작업입니다.

  • Direct Lake 모델 메타데이터를 사용자 정의, 병합, 스크립팅, 디버깅 및 테스트합니다.

  • Azure DevOps 및 GitHub를 사용한 원본 및 버전 제어, CI/CD(지속적인 통합 및 지속적인 배포)

  • PowerShell 및 REST API를 사용하여 Direct Lake 모델에 변경 사항을 새로 고치고 적용하는 등의 자동화 작업입니다.

XMLA 애플리케이션을 사용하여 만든 Direct Lake 테이블은 애플리케이션이 새로 고침 명령을 실행하기 전까지 처리되지 않은 상태가 됩니다. 처리되지 않은 테이블은 DirectQuery 모드로 대체됩니다. 새 의미 체계 모델을 만들 때 테이블을 처리하도록 의미 체계 모델을 새로 고쳐야 합니다.

XMLA 읽기/쓰기 사용

XMLA 엔드포인트를 통해 Direct Lake 모델에서 쓰기 작업을 수행하기 전에 용량에 대해 XMLA 읽기/쓰기를 사용하도록 설정해야 합니다.

Fabric 평가판 용량의 경우 평가판 사용자는 XMLA 읽기-쓰기를 사용하도록 설정하는 데 필요한 관리자 권한을 갖습니다.

  1. 관리 포털에서 용량 설정을 선택합니다.

  2. 평가판 탭을 클릭합니다.

  3. 용량 이름에 평가판 사용자 이름을 사용하여 용량을 선택합니다.

  4. Power BI 워크로드를 확장한 다음, XMLA 엔드포인트 설정에서 읽기 쓰기를 선택합니다.

    패브릭 평가판 용량에 대한 XMLA 엔드포인트 읽기-쓰기 설정의 스크린샷

XMLA 엔드포인트 설정은 용량에 할당된 모든 작업 영역 및 모델에 적용됨을 염두에 둡니다.

Direct Lake 모델 메타데이터

XMLA 엔드포인트를 통해 독립형 Direct Lake 모델에 연결할 때 메타데이터는 다른 모델처럼 보입니다. 그러나 Direct Lake 모델은 다음과 같은 차이점을 보여 줍니다.

  • 데이터베이스 개체의 compatibilityLevel 속성은 1604 이상입니다.

  • Direct Lake 파티션의 Mode 속성이 directLake로 설정되어 있습니다.

  • Direct Lake 파티션은 공유 식을 사용하여 데이터 원본을 정의합니다. 식은 레이크하우스 또는 웨어하우스의 SQL 엔드포인트를 가리킵니다. Direct Lake는 SQL 엔드포인트를 사용하여 스키마 및 보안 정보를 검색하지만 델타 테이블에서 직접 데이터를 로드합니다(Direct Lake가 어떤 이유로든 DirectQuery 모드로 대체되지 않는 한).

다음은 SSMS의 XMLA 쿼리 예제입니다.

SSMS의 XMLA 쿼리 스크린샷

XMLA 엔드포인트를 통한 도구 지원에 대해 자세히 알아보려면 XMLA 엔드포인트와 의미 체계 모델 연결을 참조하세요.

대체

Direct Lake 모드의 Power BI 의미 체계 모델은 OneLake에서 직접 델타 테이블을 읽습니다. 그러나 Direct Lake 모델의 DAX 쿼리가 SKU에 대한 제한을 초과하거나 웨어하우스의 SQL 뷰와 같이 Direct Lake 모드를 지원하지 않는 기능을 사용하는 경우 쿼리는 DirectQuery 모드로 대체됩니다. DirectQuery 모드에서 쿼리는 SQL을 사용하여 레이크하우스 또는 웨어하우스의 SQL 엔드포인트에서 결과를 검색하여 쿼리 성능에 영향을 미칠 수 있습니다. 순수 Direct Lake 모드에서만 DAX 쿼리를 처리하려는 경우 DirectQuery 모드로 대체를 사용하지 않도록 설정할 수 있습니다. DirectQuery로 대체하지 않아도 되는 경우 대체를 사용하지 않도록 설정하는 것이 좋습니다. 또한 Direct Lake 모델에 대한 쿼리 처리를 분석할 때 대체가 발생하는지와 그 빈도를 식별하는 데 도움이 될 수 있습니다. DirectQuery 모드에 대한 자세한 내용은 Power BI의 의미 체계 모델 모드를 참조하세요.

가드 레일은 DAX 쿼리를 처리하기 위해 DirectQuery 모드로 대체해야 하는 Direct Lake 모드에 대한 리소스 제한을 정의합니다. 델타 테이블의 parquet 파일 및 행 그룹 수를 확인하는 방법에 대한 자세한 내용은 델타 테이블 속성 참조참조하세요.

Direct Lake 의미 체계 모델의 경우 최대 메모리는 페이징할 수 있는 데이터 양에 대한 메모리 리소스 상한을 나타냅니다. 실제로 이를 초과해도 DirectQuery로 대체되지 않으므로 가드레일이 아닙니다. 그러나 데이터 양이 충분히 커서 OneLake 데이터의 모델 데이터 내/외부 페이징이 발생할 수 있는 경우 성능에 영향을 줄 수 있습니다.

다음 표에서는 리소스 가드레일과 최대 메모리를 모두 나열합니다.

패브릭 SKU 테이블당 Parquet 파일 테이블당 행 그룹 테이블당 행 수(수백만) 디스크/OneLake1 (GB)의 최대 모델 크기 최대 메모리(GB)
F2 1,000 1,000 300 10 3
F4 1,000 1,000 300 10 3
F8 1,000 1,000 300 10 3
F16 1,000 1,000 300 20 5
F32 1,000 1,000 300 40 10
F64/FT1/P1 5,000 5,000 1,500 제한 없음 25
F128/P2 5,000 5,000 3,000 제한 없음 50
F256/P3 5,000 5,000 6,000 제한 없음 100
F512/P4 10,000 10,000 12,000 제한 없음 200
F1024/P5 10,000 10,000 24,000 제한 없음 400
F2048 10,000 10,000 24,000 제한 없음 400

1 - 디스크/Onelake의 최대 모델 크기를 초과하면 쿼리당 평가되는 다른 가드레일과 달리 모델에 대한 모든 쿼리가 DirectQuery로 대체됩니다.

패브릭 SKU에 따라 쿼리당 추가 용량 단위최대 메모리 제한도 Direct Lake 모델에 적용 됩니다. 자세한 내용은 용량 및 SKU를 참조하세요.

대체 동작

Direct Lake 모델에는 세 가지 옵션이 있는 DirectLakeBehavior 속성이 포함됩니다.

Automatic - (기본값) 데이터를 메모리에 효율적으로 로드할 수 없는 경우 쿼리가 DirectQuery 모드로 대체되도록 지정합니다.

DirectLakeOnly - 모든 쿼리가 Direct Lake 모드만 사용하도록 지정합니다. DirectQuery 모드로 대체를 사용할 수 없습니다. 데이터를 메모리에 로드할 수 없는 경우 오류가 반환됩니다. 이 설정을 사용하여 DAX 쿼리가 메모리에 데이터를 로드하지 못하여 오류를 강제로 반환할지 확인합니다.

DirectQueryOnly - 모든 쿼리에서 DirectQuery 모드만 사용하도록 지정합니다. 이 설정을 사용하여 대체 성능을 테스트합니다.

DirectLakeBehavior 속성은 TOM(테이블 형식 개체 모델) 또는 TMSL(테이블 형식 모델 스크립팅 언어)을 사용하여 구성할 수 있습니다.

다음 예제에서는 모든 쿼리가 Direct Lake 모드만 사용하도록 지정합니다.

// Disable fallback to DirectQuery mode.
//
database.Model.DirectLakeBehavior = DirectLakeBehavior.DirectLakeOnly = 1;
database.Model.SaveChanges();

쿼리 처리 분석

보고서 시각적 개체의 데이터 원본에 대한 DAX 쿼리가 Direct Lake 모드를 사용하거나 DirectQuery 모드로 대체하여 최상의 성능을 제공하는지 확인하려면 Power BI Desktop, SQL Server Profiler 또는 기타 타사 도구에서 성능 분석기를 사용하여 쿼리를 분석할 수 있습니다. 자세한 내용은 Direct Lake 모델에 대한 쿼리 처리 분석을 참조하세요.

보충

기본적으로 OneLake의 데이터 변경 내용은 Direct Lake 모델에 자동으로 반영됩니다. 모델 설정에서 Direct Lake 데이터를 최신 상태로 유지를 사용하지 않도록 설정하여 이 동작을 변경할 수 있습니다.

모델 설정의 Direct Lake 새로 고침 옵션 스크린샷

예를 들어 모델 소비자에게 새 데이터를 노출하기 전에 데이터 준비 작업의 완료를 허용해야 하는 경우 사용하지 않도록 설정할 수 있습니다. 사용하지 않도록 설정하면 새로 고침을 수동으로 호출하거나 새로 고침 API를 사용하여 새로 고침을 호출할 수 있습니다. Direct Lake 모델에 대한 새로 고침을 호출하는 것은 모델이 최신 버전의 Delta Lake 테이블 메타데이터를 분석하고 OneLake의 최신 파일을 참조하도록 업데이트되는 저비용 작업입니다.

새로 고침 중에 복구할 수 없는 오류가 발생하는 경우 Power BI에서 Direct Lake 테이블의 자동 업데이트를 일시 중지할 수 있으므로 의미 체계 모델을 성공적으로 새로 고칠 수 있는지 확인합니다. Power BI는 후속 사용자 호출 새로 고침이 오류 없이 완료되면 자동 업데이트를 자동으로 다시 시작합니다.

계층화된 데이터 액세스 보안

레이크하우스 및 웨어하우스 위에 생성된 Direct Lake 모델은 T-SQL 엔드포인트를 통해 권한 검사 수행하여 레이크하우스 및 웨어하우스에서 지원하는 계층화된 보안 모델을 준수하여 데이터에 액세스하려는 ID에 필요한 데이터 액세스 권한이 있는지 확인합니다. 기본적으로 Direct Lake 모델은 SSO(Single Sign-On)를 사용하므로 대화형 사용자의 유효 권한은 사용자가 데이터에 대한 액세스를 허용하거나 거부할 수 있는지 여부를 결정합니다. Direct Lake 모델이 고정 ID를 사용하도록 구성된 경우 고정 ID의 유효 권한은 의미 체계 모델과 상호 작용하는 사용자가 데이터에 액세스할 수 있는지 여부를 결정합니다. T-SQL 엔드포인트는 OneLake 보안 및 SQL 권한의 조합에 따라 Direct Lake 모델에 허용 또는 거부를 반환합니다.

예를 들어 웨어하우스 관리자는 사용자가 OneLake 보안 권한이 없는 경우에도 해당 테이블에서 읽을 수 있도록 테이블에 대한 SELECT 권한을 사용자에게 부여할 수 있습니다. 레이크하우스/웨어하우스 수준에서 사용자에게 권한이 부여되었습니다. 반대로 웨어하우스 관리자는 테이블에 대한 사용자 읽기 액세스를 거부할 수도 있습니다. 그러면 사용자가 OneLake 보안 읽기 권한이 있더라도 해당 테이블에서 읽을 수 없습니다. DENY 문은 부여된 모든 OneLake 보안 또는 SQL 권한을 재정의합니다. 사용자가 OneLake 보안 및 SQL 권한의 조합을 부여할 수 있는 유효 권한은 다음 표를 참조하세요.

OneLake 보안 권한 SQL 사용 권한 유효 권한
허용 None 허용
None 허용 허용
허용 거부 거부
None 거부 거부

알려진 문제 및 제한 사항

  • 기본적으로 Lakehouse 또는 Warehouse의 테이블에서 파생된 의미 체계 모델의 테이블만 Direct Lake 모드를 지원합니다. 모델의 테이블은 Lakehouse 또는 Warehouse의 SQL 뷰에서 파생될 수 있지만 해당 테이블을 사용하는 쿼리는 DirectQuery 모드로 대체됩니다.

  • Direct Lake 의미 체계 모델 테이블은 단일 Lakehouse 또는 Warehouse의 테이블 및 뷰에서만 파생될 수 있습니다.

  • Direct Lake 테이블은 현재 같은 모델에서 Import, DirectQuery 또는 Dual과 같은 다른 테이블 형식과 혼합할 수 없습니다. 복합 모델은 현재 지원되지 않습니다.

  • DateTime 관계는 Direct Lake 모델에서 지원되지 않습니다.

  • 계산 열 및 계산 테이블은 지원되지 않습니다.

  • 일부 데이터 형식은 고밀도 소수점 및 돈 형식과 같이 지원되지 않을 수 있습니다.

  • Direct Lake 테이블은 복잡한 델타 테이블 열 형식을 지원하지 않습니다. 이진 및 Guid 의미 체계 형식도 지원되지 않습니다. 이런 데이터 형식을 문자열 또는 지원되는 다른 데이터 형식으로 변환해야 합니다.

  • 테이블 관계에는 키 열의 데이터 형식이 일치해야 합니다. 기본 키 열에는 고유한 값이 포함되어야 합니다. 중복된 기본 키 값이 검색되면 DAX 쿼리가 실패합니다.

  • 문자열 열 값의 길이는 32,764개의 유니코드 문자로 제한됩니다.

  • 부동 소수점 값 'NaN'(숫자가 아님)은 Direct Lake 모델에서 지원되지 않습니다.

  • 포함된 엔터티를 사용하는 포함된 시나리오는 아직 지원되지 않습니다.

  • Direct Lake 모델에 대한 유효성 검사는 제한됩니다. 사용자 선택은 올바른 것으로 간주되며 쿼리는 관계 또는 날짜 테이블의 선택한 날짜 열에 대한 카드AALITY 및 교차 필터 선택 항목의 유효성을 검사하지 않습니다.

  • 새로 고침 기록의 Direct Lake 탭에는 Direct Lake 관련 새로 고침 실패만 나열됩니다. 성공적인 새로 고침은 현재 생략되어 있습니다.

시작하기

조직에서 Direct Lake 솔루션을 시작하는 가장 좋은 방법은 Lakehouse를 만들고, 그 안에 델타 테이블을 만든 다음, Microsoft Fabric 작업 영역에서 Lakehouse에 대한 기본 의미 체계 모델을 만드는 것입니다. 자세한 내용은 Direct Lake에 대한 레이크하우스 만들기를 참조하세요.