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 , useLegacySql 이 true 로 설정된 경우 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
뷰에서 모든 열을 검색합니다. 반환되는 메타데이터는 기본 프로젝트인 myproject
의 mydataset
에 있는 모든 뷰의 메타데이터입니다.
기본 프로젝트가 아닌 프로젝트에 쿼리를 실행하려면 프로젝트 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:
다음 예시에서는 기본 프로젝트인 myproject
의 mydataset
에 있는 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 쿼리를 사용하여 생성되었음을 보여줍니다.