이 문서에서는 결과에 대한 액세스 제어를 포함하여 Databricks SQL에서 구체화된 뷰를 구성하는 방법을 설명합니다. 대부분의 구성은 CREATE OR REPLACE MATERIALIZED VIEW 명령문을 사용하여 구체화된 뷰를 만들 때, 또는 ALTER TABLE 명령문을 사용하여 생성한 후에 수행할 수 있습니다.
구체화된 뷰 설명
구체화된 뷰의 열 및 데이터 형식을 검색하려면 DESCRIBE 문을 사용합니다. 구체화된 뷰의 소유자, 위치, 생성 시간 및 새로 고침 상태와 같은 열, 데이터 형식 및 메타데이터를 검색하려면 다음을 사용합니다 DESCRIBE EXTENDED. SQL 문을 제출하려면 Azure Databricks UI의 SQL 편집기, DESCRIBE, 또는 Databricks SQL API를 사용합니다.
카탈로그 탐색기를 사용하여 구체화된 뷰에 대한 자세한 정보 가져오기
카탈로그 탐색기를 사용하여 구체화된 뷰에 대한 세부 정보를 볼 수도 있습니다.
-
을 클릭합니다.사이드바의 카탈로그입니다.
- 왼쪽의 카탈로그 탐색기 트리에서 카탈로그를 열고 구체화된 뷰가 있는 스키마를 선택합니다.
- 선택한 스키마 아래에서 테이블 항목을 열고 구체화된 보기를 클릭합니다.
여기에서 구체화된 뷰 이름 아래의 탭을 사용하여 다음을 포함하여 구체화된 뷰에 대한 정보를 보고 편집할 수 있습니다.
- 새로 고침 상태 및 일정
- 파이프라인 세부 정보를 참조하여 새로 고침 기록과 각 새로 고침에 대한 자세한 로그를 확인합니다. 개요 탭에서 새로 고침 세부 정보 보기를 클릭하여 파이프라인 세부 정보를 확인합니다.
- 테이블 스키마
- 샘플 데이터(활성 컴퓨팅 필요)
- Permissions
- 이 구체화된 뷰가 의존하는 테이블 및 파이프라인을 포함한 계보
- 사용 현황에 대한 인사이트
- 구체화된 뷰에 대해 생성한 모니터
카탈로그 탐색기에서 사용할 수 없는 테이블의 몇 가지 속성이 있습니다. 이러한 속성의 경우 또는 프로그래밍 방식으로 정보를 얻으려면 DESCRIBE EXTENDED 명령을 사용할 수 있습니다.
구체화된 뷰의 정의 업데이트
구체화된 뷰를 지정하는 쿼리는 해당 정의입니다. 구체화된 뷰의 정의를 변경하려면 쿼리를 편집하거나 동일한 뷰 이름으로 새 CREATE OR REPLACE MATERIALIZED VIEW 쿼리를 만든 다음 실행합니다. 전체 새로 고침을 수행하여 구체화된 뷰를 업데이트하고 추가 새로 고침은 새 정의를 사용합니다.
구체화된 뷰에 대한 액세스 제어
구체화된 뷰는 잠재적으로 프라이빗 데이터가 노출되지 않도록 하면서 데이터 공유를 지원하기 위해 다양한 액세스 제어를 지원합니다. 구체화된 뷰 소유자 또는 MANAGE 권한이 있는 사용자는 다른 사용자에게 SELECT 권한을 부여할 수 있습니다. 구체화된 뷰에 액세스할 수 있는 SELECT 사용자는 구체화된 뷰에서 참조하는 테이블에 액세스할 필요가 SELECT 없습니다. 이 액세스 제어를 사용하면 기본 데이터에 대한 액세스를 제어하면서 데이터 공유를 사용할 수 있습니다.
구체화된 뷰의 소유자를 수정할 수도 있습니다.
구체화된 뷰에 권한 부여
구체화된 뷰에 대한 액세스 권한을 부여하려면 다음 문을 사용합니다GRANT.
GRANT <privilege_type> ON <mv_name> TO <principal>;
privilege_type는 다음과 같습니다:
-
SELECT- 사용자가 구체화된 뷰를 사용할 수 있습니다SELECT. -
REFRESH- 사용자가 구체화된 뷰를 사용할 수 있습니다REFRESH. 새로 고침은 소유자의 권한을 사용하여 실행됩니다.
다음 예제에서는 구체화된 뷰를 만들고 사용자에게 선택 및 새로 고침 권한을 부여합니다.
CREATE MATERIALIZED VIEW mv_name AS SELECT * FROM source_table;
-- Grant read-only access:
GRANT SELECT ON mv_name TO read_only_user;
-- Grand read and refresh access:
GRANT SELECT ON mv_name TO refresh_user;
GRANT REFRESH ON mv_name TO refresh_user;
구체화된 뷰에서 권한을 취소
구체화된 뷰에서 액세스를 취소하려면 다음 문을 사용합니다REVOKE.
REVOKE privilege_type ON <mv_name> FROM principal;
원본 테이블에 대한 SELECT 권한이 구체화된 뷰 소유자 또는 구체화된 뷰에 대한 MANAGE 또는 SELECT 권한이 부여된 다른 사용자로부터 제거되거나, 원본 테이블이 삭제된 경우에도 구체화된 뷰 소유자나 해당 권한이 부여된 사용자는 여전히 구체화된 뷰를 쿼리할 수 있습니다. 그러나 다음과 같은 동작이 발생합니다.
- 구체화된 뷰 소유자 또는 구체화된 뷰에 대한 액세스 권한이 손실된 다른 사용자는 더 이상
REFRESH구체화된 뷰를 사용할 수 없으며 구체화된 뷰는 부실하게 됩니다. - 일정으로 자동화된 경우 다음 예약된
REFRESH는 실패하거나 실행되지 않습니다.
다음 예는 SELECT로부터 read_only_user 권한을 취소하는 예입니다:
REVOKE SELECT ON mv_name FROM read_only_user;
구체화된 뷰의 소유자 변경
Databricks SQL에 정의된 구체화된 뷰에 대한 권한이 있는 사용자는 MANAGE 카탈로그 탐색기를 통해 새 소유자를 설정할 수 있습니다. 새 소유자는 본인일 수도 있고 또는 서비스 주체 사용자 역할이 있는 서비스 주체 일 수도 있습니다.
Azure Databricks 작업 영역에서
을 클릭한 후 카탈로그 탐색기를 엽니다.
업데이트하려는 구체화된 보기를 선택합니다.
오른쪽 사이드바의 구체화된 뷰에서 소유자를 찾고
을 클릭하여 편집합니다.
비고
파이프라인 설정에서 Run as 사용자를 변경하여 소유자를 업데이트하라는 메시지를 받으면, 구체화된 뷰는 Databricks SQL이 아니라 Lakeflow Spark 선언적 파이프라인에 정의됩니다. 메시지에는 특정 사용자로 실행을 설정할 수 있는 파이프라인 설정에 대한 링크가 포함되어 있습니다.
구체화된 뷰에 대한 새 소유자를 선택합니다.
소유자는 그들이 소유하는 구체화된 뷰에 대한
MANAGE및SELECT권한을 자동으로 가집니다. 사용자가 소유한 구체화된 뷰의 소유자로 서비스 주체를 설정하는 경우, 그리고 구체화된 뷰에 대한 명시적인 권한 또는SELECT또는MANAGE권한이 없는 경우, 이 변경으로 인해 구체화된 뷰에 대한 모든 액세스 권한이 손실됩니다. 이 경우 해당 권한을 명시적으로 제공하라는 메시지가 표시됩니다.MANAGE 권한 부여 및 권한 부여 SELECT 권한을 모두 선택하여 저장에 부여합니다.
저장을 클릭하여 소유자를 변경합니다.
구체화된 뷰의 소유자가 업데이트됩니다. 이후의 모든 새로 고침은 새 소유자의 ID를 사용하여 실행됩니다.
소유자가 원본 테이블에 대한 권한을 상실하는 경우
소유자를 변경하고 새 소유자가 원본 테이블에 액세스할 수 없는 경우(또는 SELECT 기본 원본 테이블에서 권한이 취소됨) 사용자는 구체화된 뷰를 쿼리할 수 있습니다. 단,
- 구체화된 뷰를 생성할 수 없습니다
REFRESH. - 구체화된 뷰의 다음 예약된 새로 고침은 실패할 것입니다.
원본 데이터에 대한 액세스 권한을 상실하면 업데이트가 방지되지만 기존의 구체화된 뷰가 즉시 읽히는 것을 무효화하지는 않습니다.
런타임 채널 설정
SQL 웨어하우스를 사용하여 만든 구체화된 뷰는 파이프라인을 사용하여 자동으로 새로 고쳐집니다. 파이프라인은 기본적으로 current 채널에서 런타임을 사용합니다. 릴리스 프로세스에 대한 자세한 내용은 Lakeflow Spark 선언적 파이프라인 릴리스 정보 및 릴리스 업그레이드 프로세스를 참조하세요.
Databricks는 프로덕션 워크로드에 current 채널을 사용하는 것이 좋습니다. 새로운 기능은 preview 채널에 먼저 발표됩니다. 테이블 속성으로 지정하여 새 기능을 테스트하도록 파이프라인을 preview 미리 보기 채널로 설정할 수 있습니다. 테이블을 만들 때 또는 ALTER 문을 사용하여 테이블을 만든 후에 이 속성을 지정할 수 있습니다.
다음 코드 예제에서는 CREATE 문에서 채널을 미리 보기로 설정하는 방법을 보여 줍니다.
CREATE OR REPLACE MATERIALIZED VIEW sales
TBLPROPERTIES ('pipelines.channel' = 'preview')
AS ...
만든 후 채널을 변경하려면 다음 ALTER TABLE 문을 사용합니다.
ALTER TABLE <table-name> SET TBLPROPERTIES ('pipelines.channel' = 'preview');