MATERIALIZED_VIEWS 뷰
INFORMATION_SCHEMA.MATERIALIZED_VIEWS
뷰에는 구체화된 뷰에 대한 상태가 포함되어 있습니다.
필수 권한
INFORMATION_SCHEMA.MATERIALIZED_VIEWS
뷰를 쿼리하는 권한을 얻으려면 관리자에게 프로젝트 또는 데이터 세트에 대한 BigQuery 메타데이터 뷰어(roles/bigquery.metadataViewer
) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 INFORMATION_SCHEMA.MATERIALIZED_VIEWS
뷰를 쿼리하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 확장하세요.
필수 권한
INFORMATION_SCHEMA.MATERIALIZED_VIEWS
뷰를 쿼리하려면 다음 권한이 필요합니다.
-
bigquery.tables.get
-
bigquery.tables.list
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
BigQuery 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.스키마
INFORMATION_SCHEMA.MATERIALIZED_VIEWS
뷰를 쿼리하면 데이터 세트에 있는 각 구체화된 뷰마다 행이 하나씩 쿼리 결과에 포함됩니다.
INFORMATION_SCHEMA.MATERIALIZED_VIEWS
뷰에는 다음과 같은 스키마가 있습니다.
열 이름 | 데이터 유형 | 값 |
---|---|---|
TABLE_CATALOG |
STRING |
데이터 세트가 포함된 프로젝트의 이름입니다. projectId 라고도 합니다. |
TABLE_SCHEMA |
STRING |
구체화된 뷰가 포함된 데이터 세트의 이름입니다. datasetId 라고도 합니다. |
TABLE_NAME |
STRING |
구체화된 뷰의 이름입니다. tableId 라고도 합니다. |
LAST_REFRESH_TIME |
TIMESTAMP |
이 구체화된 뷰가 마지막으로 새로고침된 시간입니다. |
REFRESH_WATERMARK |
TIMESTAMP |
구체화된 뷰의 새로고침 워터마크입니다. 이때까지 구체화된 뷰 기본 테이블에 포함된 데이터가 구체화된 뷰 캐시에 포함됩니다. |
LAST_REFRESH_STATUS |
RECORD |
마지막 자동 새로고침 작업의 오류 결과를 ErrorProto 객체로 표시합니다. 이 속성이 있는 경우 마지막 자동 새로고침에 실패했음을 나타냅니다. |
범위 및 구문
이 뷰에 대한 쿼리에는 데이터 세트나 리전 한정자가 포함되어야 합니다. 데이터 세트 한정자가 있는 쿼리에는 데이터 세트에 대한 권한이 있어야 합니다. 리전 한정자가 있는 쿼리에는 프로젝트에 대한 권한이 있어야 합니다. 자세한 내용은 구문을 참조하세요. 다음 표에서는 이 뷰의 리전 범위와 리소스 범위를 설명합니다.
뷰 이름 | 리소스 범위 | 리전 범위 |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS |
프로젝트 수준 | REGION |
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.MATERIALIZED_VIEWS |
데이터 세트 수준 | 데이터 세트 위치 |
(선택사항) PROJECT_ID
: Google Cloud 프로젝트의 ID입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.
REGION
: 모든 데이터 세트 리전 이름입니다. 예를 들면`region-us`
입니다.DATASET_ID
: 데이터 세트의 ID입니다. 자세한 내용은 데이터 세트 한정자를 참조하세요.
예를 들면 다음과 같습니다.
-- Returns metadata for views in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;
-- Returns metadata for all views in a region.
SELECT * FROM region-us.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;
예
예 1:
다음 예에서는 INFORMATION_SCHEMA.MATERIALIZED_VIEWS
뷰에서 비정상적인 구체화된 뷰를 모두 검색합니다. 기본 프로젝트 myproject
의 mydataset
에 NULL
last_refresh_status
가 아닌 값이 있는 구체화된 뷰를 반환합니다.
기본 프로젝트가 아닌 프로젝트에 쿼리를 실행하려면 프로젝트 ID를 `project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS
형식으로 데이터세트에 추가합니다(예: `myproject`.mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS
).
SELECT table_name, last_refresh_status FROM mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS WHERE last_refresh_status IS NOT NULL;
결과는 다음과 비슷합니다.
+---------------+---------------------------------------------------------------------+ | table_name | last_refresh_status | +---------------------------------------------------------------------+---------------+ | myview | {"reason":"invalidQuery","location":"query","message":"..."} | +---------------------------------------------------------------------+---------------+
예 2:
다음 예시에서는 기본 프로젝트인 myproject
의 mydataset
에 있는 구체화된 뷰 myview
의 last_refresh_time
및 refresh_watermark
를 검색합니다. 결과는 구체화된 뷰가 마지막으로 새로고침된 시점과 기본 테이블의 데이터가 구체화된 뷰 캐시로 수집될 때까지를 보여줍니다.
기본 프로젝트가 아닌 프로젝트에 쿼리를 실행하려면 프로젝트 ID를 `project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS
형식으로 데이터세트에 추가합니다(예: `myproject`.mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS
).
SELECT table_name, last_refresh_time, refresh_watermark FROM mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS WHERE table_name = 'myview';
결과는 다음과 비슷합니다.
+---------------+------------------------------------------------+ | table_name | last_refresh_time | refresh_watermark | +---------------+------------------------------------------------+ | myview | 2023-02-22 19:37:17 | 2023-03-08 16:52:57 | +---------------+------------------------------------------------+