TABLES 뷰
INFORMATION_SCHEMA.TABLES
뷰에는 데이터 세트의 각 테이블 또는 뷰당 하나의 행이 포함됩니다. TABLES
및 TABLE_OPTIONS
뷰에는 뷰에 대한 대략적인 정보도 포함되어 있습니다.
자세한 정보를 보려면 INFORMATION_SCHEMA.VIEWS
뷰를 쿼리하세요.
필수 권한
INFORMATION_SCHEMA.TABLES
뷰를 쿼리하려면 다음 Identity and Access Management(IAM) 권한이 필요합니다.
bigquery.tables.get
bigquery.tables.list
bigquery.routines.get
bigquery.routines.list
다음과 같이 사전 정의된 각 IAM 역할에는 위의 권한이 포함되어 있습니다.
roles/bigquery.admin
roles/bigquery.dataViewer
roles/bigquery.metadataViewer
BigQuery 권한에 대한 자세한 내용은 IAM으로 액세스 제어를 참조하세요.
스키마
INFORMATION_SCHEMA.TABLES
뷰를 쿼리하면 데이터 세트의 각 테이블 또는 뷰당 하나의 행이 쿼리 결과에 포함됩니다. 뷰에 대한 자세한 내용은 INFORMATION_SCHEMA.VIEWS
뷰를 대신 쿼리하세요.
INFORMATION_SCHEMA.TABLES
뷰에는 다음과 같은 스키마가 있습니다.
열 이름 | 데이터 유형 | 값 |
---|---|---|
table_catalog |
STRING |
데이터 세트가 포함된 프로젝트의 프로젝트 ID |
table_schema |
STRING |
테이블이나 뷰가 포함된 데이터 세트 이름(datasetId 라고도 함) |
table_name |
STRING |
테이블 또는 뷰의 이름(tableId 라고도 함) |
table_type |
STRING |
테이블 유형. 다음 중 하나입니다. |
is_insertable_into |
STRING |
테이블의 DML INSERT 문 지원 여부에 따라 YES 또는 NO |
is_typed |
STRING |
값이 항상 NO 임 |
is_change_history_enabled |
STRING |
변경 내역 사용 설정 여부에 따라 YES 또는 NO |
creation_time |
TIMESTAMP |
테이블 생성 시간 |
base_table_catalog |
STRING |
테이블 클론 및 테이블 스냅샷의 경우 기본 테이블의 프로젝트입니다. table_type 이 CLONE 또는 SNAPSHOT 으로 설정된 테이블에만 적용됩니다.
|
base_table_schema |
STRING |
테이블 클론 및 테이블 스냅샷의 경우 기본 테이블의 데이터 세트입니다. table_type 이 CLONE 또는 SNAPSHOT 으로 설정된 테이블에만 적용됩니다. |
base_table_name |
STRING |
테이블 클론 및 테이블 스냅샷의 경우 기본 테이블의 이름입니다. table_type 이 CLONE 또는 SNAPSHOT 으로 설정된 테이블에만 적용됩니다. |
snapshot_time_ms |
TIMESTAMP |
테이블 클론 및 테이블 스냅샷의 경우 이 테이블을 만들기 위해 기본 테이블에서 클론 또는 스냅샷 작업이 실행된 시간입니다. 시간 이동이 사용된 경우 이 필드에 시간 이동 타임스탬프가 포함됩니다. 그렇지 않으면 snapshot_time_ms 필드가 creation_time 필드와 동일합니다. table_type 이 CLONE 또는 SNAPSHOT 으로 설정된 테이블에만 적용됩니다.
|
replica_source_catalog |
STRING |
구체화된 뷰 복제본의 경우 기본 구체화된 뷰의 프로젝트입니다. |
replica_source_schema |
STRING |
구체화된 뷰 복제본의 경우 기본 구체화된 뷰의 데이터 세트입니다. |
replica_source_name |
STRING |
구체화된 뷰 복제본의 경우 기본 구체화된 뷰의 이름입니다. |
replication_status |
STRING |
구체화된 뷰 복제본의 경우 기본 구체화된 뷰에서 구체화된 뷰 복제본으로의 복제 상태로, 다음 중 하나입니다. |
replication_error |
STRING |
replication_status 가 구체화된 뷰 복제본의 복제 문제를 나타내는 경우 replication_error 에서 문제에 대한 추가 세부정보를 제공합니다. |
ddl |
STRING |
CREATE TABLE 또는 CREATE VIEW 와 같은 테이블을 다시 만드는 데 사용할 수 있는 DDL 문 |
default_collation_name |
STRING |
기본 대조 사양 이름(있는 경우)입니다. 그 외의 경우는 NULL 입니다.
|
upsert_stream_apply_watermark |
TIMESTAMP |
변경 데이터 캡처(CDC)를 사용하는 테이블의 경우 행 수정이 마지막으로 적용된 시간입니다. 자세한 내용은 테이블 upsert 작업 진행률 모니터링을 참조하세요. |
범위 및 구문
이 뷰에 대한 쿼리에는 데이터 세트나 리전 한정자가 포함되어야 합니다. 데이터 세트 한정자가 있는 쿼리에는 데이터 세트에 대한 권한이 있어야 합니다. 리전 한정자가 있는 쿼리에는 프로젝트에 대한 권한이 있어야 합니다. 자세한 내용은 구문을 참조하세요. 다음 표에서는 이 뷰의 리전 범위와 리소스 범위를 설명합니다.
뷰 이름 | 리소스 범위 | 리전 범위 |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.TABLES |
프로젝트 수준 | REGION |
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.TABLES |
데이터 세트 수준 | 데이터 세트 위치 |
(선택사항) PROJECT_ID
: Google Cloud 프로젝트의 ID입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.
REGION
: 모든 데이터 세트 리전 이름입니다. 예를 들면`region-us`
입니다.DATASET_ID
: 데이터 세트의 ID입니다. 자세한 내용은 데이터 세트 한정자를 참조하세요.
예시
-- Returns metadata for tables in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.TABLES;
예시
예시 1:
다음 예시에서는 이름이 mydataset
인 데이터 세트에 있는 모든 테이블의 테이블 메타데이터를 검색합니다. 반환되는 메타데이터는 기본 프로젝트에서 mydataset
에 있는 모든 테이블 유형에 사용됩니다.
mydataset
에는 다음 테이블이 포함되어 있습니다.
mytable1
: 표준 BigQuery 테이블myview1
: BigQuery 뷰
기본 프로젝트가 아닌 프로젝트에 쿼리를 실행하려면 프로젝트 ID를 `project_id`.dataset.INFORMATION_SCHEMA.view
형식으로 데이터 세트에 추가합니다(예: `myproject`.mydataset.INFORMATION_SCHEMA.TABLES
).
SELECT table_catalog, table_schema, table_name, table_type, is_insertable_into, creation_time, ddl FROM mydataset.INFORMATION_SCHEMA.TABLES;
결과는 다음과 비슷합니다. 가독성을 위해 일부 열은 결과에서 제외됩니다.
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+ | table_catalog | table_schema | table_name | table_type | is_insertable_into | creation_time | ddl | +----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+ | myproject | mydataset | mytable1 | BASE TABLE | YES | 2018-10-29 20:34:44 | CREATE TABLE `myproject.mydataset.mytable1` | | | | | | | | ( | | | | | | | | id INT64 | | | | | | | | ); | | myproject | mydataset | myview1 | VIEW | NO | 2018-12-29 00:19:20 | CREATE VIEW `myproject.mydataset.myview1` | | | | | | | | AS SELECT 100 as id; | +----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
예시 2:
다음 예시에서는 INFORMATION_SCHEMA.TABLES
뷰에서 CLONE
또는 SNAPSHOT
유형의 모든 테이블에 대해 테이블 메타데이터를 검색합니다. 반환되는 메타데이터는 기본 프로젝트의 mydataset
에 있는 테이블의 메타데이터입니다.
기본 프로젝트가 아닌 프로젝트에 쿼리를 실행하려면 프로젝트 ID를 `project_id`.dataset.INFORMATION_SCHEMA.view
형식으로 데이터세트에 추가합니다(예: `myproject`.mydataset.INFORMATION_SCHEMA.TABLES
).
SELECT table_name, table_type, base_table_catalog, base_table_schema, base_table_name, snapshot_time_ms FROM mydataset.INFORMATION_SCHEMA.TABLES WHERE table_type = 'CLONE' OR table_type = 'SNAPSHOT';
결과는 다음과 비슷합니다. 가독성을 위해 일부 열은 결과에서 제외됩니다.
+--------------+------------+--------------------+-------------------+-----------------+---------------------+ | table_name | table_type | base_table_catalog | base_table_schema | base_table_name | snapshot_time_ms | +--------------+------------+--------------------+-------------------+-----------------+---------------------+ | items_clone | CLONE | myproject | mydataset | items | 2018-10-31 22:40:05 | | orders_bk | SNAPSHOT | myproject | mydataset | orders | 2018-11-01 08:22:39 | +--------------+------------+--------------------+-------------------+-----------------+---------------------+
예 3:
다음 예시는 census_bureau_usa
데이터 세트에 있는 population_by_zip_2010
테이블의 INFORMATION_SCHEMA.TABLES
뷰에서 table_name
및 ddl
열을 검색합니다. 이 데이터 세트는 BigQuery 공개 데이터 세트 프로그램의 일부입니다.
쿼리하려는 테이블이 다른 프로젝트에 있으므로 프로젝트 ID를 다음 형식으로 데이터 세트에 추가합니다. `project_id`.dataset.INFORMATION_SCHEMA.view
이 예시에서 값은 `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES
입니다.
SELECT table_name, ddl FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES WHERE table_name = 'population_by_zip_2010';
결과는 다음과 비슷합니다.
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | table_name | ddl | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | population_by_zip_2010 | CREATE TABLE `bigquery-public-data.census_bureau_usa.population_by_zip_2010` | | | ( | | | geo_id STRING OPTIONS(description="Geo code"), | | | zipcode STRING NOT NULL OPTIONS(description="Five digit ZIP Code Tabulation Area Census Code"), | | | population INT64 OPTIONS(description="The total count of the population for this segment."), | | | minimum_age INT64 OPTIONS(description="The minimum age in the age range. If null, this indicates the row as a total for male, female, or overall population."), | | | maximum_age INT64 OPTIONS(description="The maximum age in the age range. If null, this indicates the row as having no maximum (such as 85 and over) or the row is a total of the male, female, or overall population."), | | | gender STRING OPTIONS(description="male or female. If empty, the row is a total population summary.") | | | ) | | | OPTIONS( | | | labels=[("freebqcovid", "")] | | | ); | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+