이 문서에서는 Microsoft Fabric의 구체화된 레이크 뷰와 관련된 활동에 대한 Spark SQL 구문에 대해 알아봅니다.
구체화된 레이크 뷰 만들기
모든 테이블이나 레이크하우스 내의 다른 구체화된 호수 전망에서 구체화된 호수 전망을 정의할 수 있습니다. 다음 코드에서는 Spark SQL을 사용하여 구체화된 레이크 뷰를 선언하는 구문을 간략하게 설명합니다.
CREATE [OR REPLACE] MATERIALIZED LAKE VIEW [IF NOT EXISTS][workspace.lakehouse.schema].MLV_Identifier
[(
CONSTRAINT constraint_name1 CHECK (condition expression1)[ON MISMATCH DROP | FAIL],
CONSTRAINT constraint_name2 CHECK (condition expression2)[ON MISMATCH DROP | FAIL]
)]
[PARTITIONED BY (col1, col2, ... )]
[COMMENT "description or comment"]
[TBLPROPERTIES ("key1"="val1", "key2"="val2", ... )]
AS select_statement
Arguments
| 매개 변수 | 설명 |
|---|---|
MLV_Identifier |
구현된 호수 뷰의 이름입니다. |
CONSTRAINT |
데이터 품질 제약 조건을 정의한 다음 사용자 정의 이름을 정의하는 키워드입니다. 제약 조건은 구체화된 레이크 뷰 수준에서 적용됩니다. |
CHECK |
특정 열 값을 기반으로 조건을 적용하기 위한 매개 변수입니다. 제약 조건을 정의할 때 반드시 사용해야 합니다. |
ON MISMATCH |
제약 조건을 위반할 경우 수행할 작업을 지정하기 위한 매개 변수입니다. 가능한 작업은 다음과 같습니다 DROPFAIL. 기본적으로 이 절이 없으면 작업은 .입니다 FAIL. |
PARTITIONED BY |
지정된 열을 기반으로 파티션을 만들기 위한 매개 변수입니다. |
TBLPROPERTIES |
구체화된 레이크 뷰의 정의에 태그를 지정하기 위한 키/값 쌍 목록입니다. |
COMMENT |
구체화된 레이크 뷰를 설명하는 문입니다. |
AS select_statement |
문을 사용하여 SELECT 구체화된 레이크 뷰의 데이터를 채웁니다. |
예시
다음 예제에서는 대체 구문을 사용하여 구체화된 레이크 뷰의 정의를 보여 줍니다.
CREATE OR REPLACE MATERIALIZED LAKE VIEW silver.customer_orders AS
SELECT
c.customerID,
c.customerName,
c.region,
o.orderDate,
o.orderAmount
FROM bronze.customers c INNER JOIN bronze.orders o
ON c.customerID = o.customerID
다음 예제에서는 테이블을 테이블과 customers_enriched 조인하여 명명 customers 된 구체화된 레이크 뷰의 orders 정의를 보여 줍니다.
CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS silver.customers_enriched AS
SELECT
c.customerID,
c.customerName,
c.contact,
CASE
WHEN COUNT(o.orderID) OVER (PARTITION BY c.customerID) > 0 THEN TRUE
ELSE FALSE
END AS has_orders
FROM bronze.customers c LEFT JOIN bronze.orders o
ON c.customerID = o.customerID;
비고
- 작업 공간 이름에 공백이 포함되어 있으면 백틱(``)으로 묶으십시오.
`My Workspace`.lakehouse.schema.view_name - 구현된 레이크 뷰 이름은 대소문자를 구분하지 않으며 소문자로 변환됩니다 (예:
MyTestView는mytestview로 변환됩니다).
다음 예제에서는 열로 분할된 구체화된 customers_enriched 레이크 뷰를 city정의합니다.
CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS silver.customers_enriched
COMMENT "This is a sample materialized lake view"
PARTITIONED BY (city)
AS SELECT
c.customerID,
c.customerName,
c.contact,
CASE
WHEN COUNT(o.orderID) OVER (PARTITION BY c.customerID) > 0 THEN TRUE
ELSE FALSE
END AS has_orders
FROM bronze.customers c LEFT JOIN bronze.orders o
ON c.customerID = o.customerID;
구체화된 호수 전망 목록 가져오기
레이크하우스에서 구체화된 모든 호수 전망 목록을 가져오려면 다음 명령을 사용합니다.
SHOW MATERIALIZED LAKE VIEWS <IN/FROM> Schema_Name;
예제는 다음과 같습니다.
SHOW MATERIALIZED LAKE VIEWS IN silver;
구체화된 레이크 뷰를 만든 문을 검색합니다.
구체화된 CREATE 레이크 뷰에 대한 문을 얻으려면 다음 명령을 사용합니다.
SHOW CREATE MATERIALIZED LAKE VIEW MLV_Identifier;
예제는 다음과 같습니다.
SHOW CREATE MATERIALIZED LAKE VIEW customers_enriched;
구체화된 레이크 뷰 업데이트
구체화된 레이크 뷰의 정의를 업데이트하려면 삭제하고 다시 만들어야 합니다. 이 ALTER 문은 구체화된 레이크 뷰의 이름을 바꾸는 경우에만 지원됩니다.
ALTER MATERIALIZED LAKE VIEW MLV_Identifier RENAME TO MLV_Identifier_New;
예제는 다음과 같습니다.
ALTER MATERIALIZED LAKE VIEW customers_enriched RENAME TO customers_enriched_new;
구체화된 호수 전망 삭제
Lakehouse 개체 탐색기에서 삭제 옵션을 사용하거나 Notebook에서 다음 명령을 실행하여 구체화된 레이크 뷰를 삭제할 수 있습니다.
DROP MATERIALIZED LAKE VIEW MLV_Identifier;
예제는 다음과 같습니다.
DROP MATERIALIZED LAKE VIEW customers_enriched;
비고
구체화된 레이크 뷰를 삭제하거나 이름을 바꾸면 계보 보기 및 예약된 새로 고침에 영향을 줍니다. 모든 종속 구체화된 레이크 뷰에서 참조를 업데이트해야 합니다.
현재 제한 사항
- 모든 대문자가 있는 스키마 이름은 지원되지 않습니다. 스키마 이름의 모든 대문자를 사용하지 않고 구체화된 레이크 뷰를 계속 만들 수 있습니다.
- 세션 수준에서 설정된 Spark 속성은 예약된 계보 새로 고침 중에 적용되지 않습니다.
- 델타 시간 이동으로 구체화된 레이크 뷰를 만드는 것은 지원되지 않습니다.
- DML(데이터 조작 언어) 문은 구체화된 레이크 뷰에서 지원되지 않습니다.
- CTAS(사용자 정의 함수
CREATE TABLE AS SELECT) 문은 지원되지 않습니다. - 임시 뷰를 사용하여 구체화된 레이크 뷰를 정의할 수 없습니다.