CREATE MATERIALIZED VIEW
적용 대상: Databricks SQL
Important
이 기능은 공개 미리 보기 상태입니다.
구체화된 뷰는 미리 계산된 결과를 쿼리에 사용할 수 있고 입력의 변경 내용을 반영하도록 업데이트할 수 있는 뷰입니다. 구체화된 뷰를 새로 고칠 때마다 쿼리 결과가 다시 계산되어 업스트림 데이터 세트의 변경 내용을 반영합니다. 구체화된 모든 뷰는 DLT 파이프라인에서 지원됩니다. 구체화된 뷰를 수동으로 새로 고치거나, 일정에 따라 또는 포함된 DLT 파이프라인을 예약하여 새로 고칠 수 있습니다.
구문
CREATE MATERIALIZED VIEW [IF NOT EXISTS]
view_name
[ column_list ]
[ table_constraints ]
[ view_clauses ]
AS query
column_list
( { column_alias [ COMMENT column_comment | column_constraint ] [...] } [, ...] [ , table_constraint ] [...])
table_constraints
( table_constraint [, ...] )
view_clauses
{ PARTITIONED BY (col [, ...]) |
COMMENT view_comment |
TBLPROPERTIES clause |
SCHEDULE [ REFRESH ] CRON cron_string [ AT TIME ZONE timezone_id ] } [...]
매개 변수
IF NOT EXISTS
뷰가 없는 경우 뷰를 만듭니다. 이 이름의 뷰가
CREATE VIEW
이미 있는 경우 문은 무시됩니다.IF NOT EXISTS
또는OR REFRESH
중 최대 하나를 지정할 수 있습니다.-
새로 만들어진 뷰의 이름입니다. 정규화된 뷰 이름은 고유해야 합니다.
column_list
선택적으로 뷰의 쿼리 결과에서 열에 레이블을 지정합니다. 열 목록을 제공하는 경우 열 별칭의 수는 쿼리의 식 수와 일치해야 합니다. 열 목록을 지정하지 않으면 별칭이 뷰 본문에서 파생됩니다.
-
열 별칭은 고유해야 합니다.
column_comment
열 별칭을 설명하는 선택적
STRING
리터럴입니다.-
Important
이 기능은 공개 미리 보기 상태입니다.
구체화된 뷰의 열에 정보 기본 키 또는 정보 외래 키 제약 조건을 추가합니다. 카탈로그의 구체화된 뷰에는
hive_metastore
제약 조건이 지원되지 않습니다.
-
-
Important
이 기능은 공개 미리 보기 상태입니다.
구체화된 뷰에 정보 기본 키 또는 정보 외래 키 제약 조건을 추가합니다. 카탈로그의 구체화된 뷰에는
hive-metastore
제약 조건이 지원되지 않습니다. view_clauses
필요에 따라 분할, 주석, 사용자 정의 속성 및 새 구체화된 뷰에 대한 새로 고침 일정을 지정합니다. 각 하위 절은 한 번만 지정할 수 있습니다.
-
테이블을 분할할 테이블 열의 선택적 목록입니다.
주석 view_comment
STRING
테이블을 설명하는 리터럴입니다.-
선택적으로 하나 이상의 사용자 정의 속성을 설정합니다.
일정 [ 새로 고침 ] CRON cron_string [ 표준 시간대 timezone_id ]
제공된 경우 스트리밍 테이블 또는 구체화된 뷰를 예약하여 지정된 석영 cron 일정으로 데이터를 새로 고칩니다. time_zone_values만 허용됩니다.
AT TIME ZONE LOCAL
은 지원되지 않습니다. 없는 경우AT TIME ZONE
세션 표준 시간대가 사용됩니다.AT TIME ZONE
세션 표준 시간대가 설정되어 있지 않으면 오류가 throw됩니다.SCHEDULE
의미 체계는 .에 해당합니다SCHEDULE REFRESH
.Delta Live Tables 파이프라인 정의에는 구문을 사용할
SCHEDULE
수 없습니다.
-
AS query
기본 테이블 또는 다른 뷰에서 뷰를 생성하는 쿼리입니다.
필요한 사용 권한
MV(구체화된 뷰)를 만드는 사용자는 MV 소유자이며 다음 권한이 있어야 합니다.
SELECT
MV에서 참조하는 기본 테이블에 대한 권한입니다.USE CATALOG
부모 카탈로그에 대한 권한 및USE SCHEMA
부모 스키마에 대한 권한입니다.CREATE
MV에 대한 스키마에 대한 권한입니다.
소유자만 MV를 사용할 수 있습니다 REFRESH
.
사용자가 MV를 쿼리할 수 있도록 하려면 다음이 필요합니다.
USE CATALOG
부모 카탈로그에 대한 권한 및USE SCHEMA
부모 스키마에 대한 권한입니다.SELECT
구체화된 뷰에 대한 권한입니다.
제한 사항
- NULL 가능 열에 대한 집계가 있는
sum
구체화된 뷰에 해당 열에서 NULL이 아닌 마지막 값이 제거되어 해당 열의 값만NULL
다시 기본 경우 구체화된 뷰의 결과 집계 값은 대신 0NULL
을 반환합니다. - 열 참조에는 별칭이 필요하지 않습니다. 다음 예제와 같이 열이 아닌 참조 식에는 별칭이 필요합니다.
- 허용:
SELECT col1, SUM(col2) AS sum_col2 FROM t GROUP BY col1
- 허용되지 않음:
SELECT col1, SUM(col2) FROM t GROUP BY col1
- 허용:
- 구체화된 뷰는 ID 열 또는 서로게이트 키를 지원하지 않습니다.
- 구체화된 뷰는 임시
OPTIMIZE
및VACUUM
명령을 지원하지 않습니다. 유지 관리는 자동으로 수행됩니다.
예제
-- Create a materialized view if it doesn't exist
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;
-- Create and schedule a materialized view to be refreshed daily at midnight.
-- Note: All columns in a GROUP BY need to be explicitly aliased
> CREATE MATERIALIZED VIEW daily_sales
COMMENT 'Daily sales numbers'
SCHEDULE CRON '0 0 0 * * ? *'
AS SELECT date AS date, sum(sales) AS sumOfSales
FROM table1
GROUP BY date;
-- Create a materialized view with a column constraint
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
member_id NOT NULL PRIMARY KEY,
full_name,
movie_title
)
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;
-- Create a materialized view with a table constraint
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
member_id NOT NULL,
full_name,
movie_title,
CONSTRAINT movie_pk PRIMARY KEY(member_id)
)
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;
-- Create a materialized view without column list
> CREATE MATERIALIZED VIEW IF NOT EXISTS subscribed_movies(
CONSTRAINT movie_pk PRIMARY KEY(member_id)
)
AS SELECT mo.member_id, mb.full_name, mo.movie_title
FROM movies AS mo INNER JOIN members AS mb ON mo.member_id = mb.id;
관련된 문서
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기