VIEWS 뷰

INFORMATION_SCHEMA.VIEWS 뷰에는 뷰에 대한 메타데이터가 포함되어 있습니다.

필수 권한

뷰 메타데이터를 가져오려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.

  • bigquery.tables.get
  • bigquery.tables.list

다음과 같이 사전 정의된 각 IAM 역할에는 뷰 메타데이터를 가져오는 데 필요한 권한이 포함되어 있습니다.

  • roles/bigquery.admin
  • roles/bigquery.dataEditor
  • roles/bigquery.metadataViewer
  • roles/bigquery.dataViewer

BigQuery 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.

스키마

INFORMATION_SCHEMA.VIEWS 뷰를 쿼리하면 데이터세트에 있는 각 뷰마다 행이 하나씩 쿼리 결과에 포함됩니다.

INFORMATION_SCHEMA.VIEWS 뷰에는 다음과 같은 스키마가 있습니다.

열 이름 데이터 유형
TABLE_CATALOG STRING 데이터 세트가 포함된 프로젝트 이름
TABLE_SCHEMA STRING 뷰가 포함된 데이터 세트 이름(또는 데이터 세트 id라고 함)
TABLE_NAME STRING 뷰 이름(또는 테이블 id라고 함)
VIEW_DEFINITION STRING 뷰를 정의하는 SQL 쿼리
CHECK_OPTION STRING 반환되는 값은 항상 NULL
USE_STANDARD_SQL STRING 뷰가 GoogleSQL 쿼리를 사용하여 생성된 경우 YES, useLegacySqltrue로 설정된 경우 NO

범위 및 구문

이 뷰에 대한 쿼리에는 데이터 세트나 리전 한정자가 포함되어야 합니다. 데이터 세트 한정자가 있는 쿼리에는 데이터 세트에 대한 권한이 있어야 합니다. 리전 한정자가 있는 쿼리에는 프로젝트에 대한 권한이 있어야 합니다. 자세한 내용은 구문을 참조하세요. 다음 표에서는 이 뷰의 리전 범위와 리소스 범위를 설명합니다.

뷰 이름 리소스 범위 리전 범위
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.VIEWS 프로젝트 수준 REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.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.VIEWS;

-- Returns metadata for all views in a region.
SELECT * FROM region-us.INFORMATION_SCHEMA.VIEWS;

예시 1:

다음 예시는 나중에 사용할 수 있도록 예약된 check_option를 제외하고 INFORMATION_SCHEMA.VIEWS 뷰에서 모든 열을 검색합니다. 반환되는 메타데이터는 기본 프로젝트인 myprojectmydataset에 있는 모든 뷰의 메타데이터입니다.

기본 프로젝트가 아닌 프로젝트에 쿼리를 실행하려면 프로젝트 ID를 `project_id`.dataset.INFORMATION_SCHEMA.view 형식으로 데이터세트에 추가합니다(예: `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS).

SELECT
  * EXCEPT (check_option)
FROM
  mydataset.INFORMATION_SCHEMA.VIEWS;

결과는 다음과 비슷합니다.

  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | table_catalog  | table_schema  |  table_name   |                        view_definition                              | use_standard_sql |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | myproject      | mydataset     | myview        | SELECT column1, column2 FROM [myproject:mydataset.mytable] LIMIT 10 | NO               |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  

결과는 이 뷰가 legacy SQL 쿼리를 사용하여 생성되었음을 보여줍니다.

예시 2:

다음 예시에서는 기본 프로젝트인 myprojectmydataset에 있는 myview를 정의하는 데 사용되는 SQL 쿼리와 쿼리 구문을 검색합니다.

기본 프로젝트가 아닌 프로젝트에 쿼리를 실행하려면 프로젝트 ID를 `project_id`.dataset.INFORMATION_SCHEMA.view 형식으로 데이터세트에 추가합니다(예: `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS).

SELECT
  table_name, view_definition, use_standard_sql
FROM
  mydataset.INFORMATION_SCHEMA.VIEWS
WHERE
  table_name = 'myview';

결과는 다음과 비슷합니다.

  +---------------+---------------------------------------------------------------+------------------+
  |  table_name   |                        view_definition                        | use_standard_sql |
  +---------------+---------------------------------------------------------------+------------------+
  | myview        | SELECT column1, column2, column3 FROM mydataset.mytable       | YES              |
  +---------------+---------------------------------------------------------------+------------------+
  

결과는 이 뷰가 GoogleSQL 쿼리를 사용하여 생성되었음을 보여줍니다.