TABLE_OPTIONS 뷰

INFORMATION_SCHEMA.TABLE_OPTIONS 뷰에는 데이터 세트의 각 테이블 또는 뷰당 각 옵션당 하나의 행이 포함됩니다. TABLESTABLE_OPTIONS 뷰에는 뷰에 대한 대략적인 정보도 포함되어 있습니다. 자세한 정보를 보려면 INFORMATION_SCHEMA.VIEWS 뷰를 쿼리하세요.

필수 권한

INFORMATION_SCHEMA.TABLE_OPTIONS 뷰를 쿼리하려면 다음 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.TABLE_OPTIONS 뷰를 쿼리하면 쿼리 결과에 데이터 세트의 각 테이블이나 뷰의 옵션마다 행 하나가 포함됩니다. 뷰에 대한 자세한 내용은 INFORMATION_SCHEMA.VIEWS를 대신 쿼리하세요.

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

열 이름 데이터 유형
TABLE_CATALOG STRING 데이터 세트가 포함된 프로젝트의 프로젝트 ID
TABLE_SCHEMA STRING 테이블이나 뷰가 포함된 데이터 세트 이름(또는 datasetId라고 함)
TABLE_NAME STRING 테이블 또는 뷰의 이름(또는 tableId라고 함)
OPTION_NAME STRING 옵션 표의 이름 값 중 하나
OPTION_TYPE STRING 옵션 표의 데이터 유형 값 중 하나
OPTION_VALUE STRING 옵션 표의 값 옵션 중 하나
옵션 테이블
OPTION_NAME OPTION_TYPE OPTION_VALUE
partition_expiration_days FLOAT64 파티션을 나눈 테이블의 모든 파티션 기본 수명(일)
expiration_timestamp TIMESTAMP 이 테이블이 만료되는 시간
kms_key_name STRING 테이블을 암호화하는 데 사용된 Cloud KMS 키의 이름
friendly_name STRING 테이블을 설명하는 이름
description STRING 테이블 설명
labels ARRAY<STRUCT<STRING, STRING>> 테이블의 라벨을 나타내는 STRUCT 배열
require_partition_filter BOOL 테이블에 대한 쿼리에 파티션 필터가 필요한지 여부
enable_refresh BOOL 구체화된 뷰에 자동 새로고침이 사용 설정되었는지 여부
refresh_interval_minutes FLOAT64 구체화된 뷰가 새로고침되는 빈도

외부 테이블에 다음 옵션을 사용할 수 있습니다.

옵션
allow_jagged_rows

BOOL

true이면 뒤에 오는 선택적인 열이 누락된 행을 허용합니다.

CSV 데이터에 적용됩니다.

allow_quoted_newlines

BOOL

true이면 파일에서 따옴표 안에 줄바꿈 문자가 포함된 데이터 섹션을 허용합니다.

CSV 데이터에 적용됩니다.

bigtable_options

STRING

Bigtable 외부 테이블을 만들 때만 필요합니다.

Bigtable 외부 테이블의 스키마를 JSON 형식으로 지정합니다.

Bigtable 테이블 정의 옵션의 목록은 REST API 참조에서 BigtableOptions를 참조하세요.

compression

STRING

데이터 소스의 압축 유형입니다. 지원되는 값은 GZIP입니다. 지정하지 않으면 데이터 소스는 압축되지 않습니다.

CSV 및 JSON 데이터에 적용됩니다.

decimal_target_types

ARRAY<STRING>

Decimal 유형을 변환하는 방법을 결정합니다. ExternalDataConfiguration.decimal_target_types와 동일합니다.

예: ["NUMERIC", "BIGNUMERIC"]

description

STRING

이 테이블에 대한 설명입니다.

enable_list_inference

BOOL

true이면 특히 Parquet LIST 논리 유형에 대해 스키마 추론을 사용합니다.

Parquet 데이터에 적용됩니다.

enable_logical_types

BOOL

true이면 Avro 논리 유형을 해당 SQL 유형으로 변환합니다. 자세한 내용은 논리 유형을 참조하세요.

Avro 데이터에 적용됩니다.

encoding

STRING

데이터의 문자 인코딩입니다. 지원되는 값은 UTF8(또는 UTF-8), ISO_8859_1(또는 ISO-8859-1)입니다.

CSV 데이터에 적용됩니다.

enum_as_string

BOOL

true이면 기본적으로 BYTES 대신 Parquet ENUM 논리 유형을 STRING으로 추론합니다.

Parquet 데이터에 적용됩니다.

expiration_timestamp

TIMESTAMP

이 테이블이 만료되는 시간입니다. 지정하지 않으면 테이블이 만료되지 않습니다.

예시: "2025-01-01 00:00:00 UTC"

field_delimiter

STRING

CSV 파일의 필드 구분 기호입니다.

CSV 데이터에 적용됩니다.

format

STRING

외부 데이터의 형식입니다. CREATE EXTERNAL TABLE의 지원 값으로는 AVRO, CLOUD_BIGTABLE, CSV, DATASTORE_BACKUP, DELTA_LAKE(미리보기), GOOGLE_SHEETS, NEWLINE_DELIMITED_JSON(또는 JSON), ORC, PARQUET 등이 있습니다.

LOAD DATA의 지원 값으로는 AVRO, CSV, DELTA_LAKE(미리보기), NEWLINE_DELIMITED_JSON(또는 JSON), ORC, PARQUET 등이 있습니다.

JSONNEWLINE_DELIMITED_JSON과 동일합니다.

hive_partition_uri_prefix

STRING

파티션 키 인코딩이 시작되기 전에 모든 소스 URI의 공통 프리픽스입니다. 파티션을 나눈 하이브 외부 테이블에만 적용됩니다.

Avro, CSV, JSON, Parquet, ORC 데이터에 적용됩니다.

예: "gs://bucket/path"

file_set_spec_type

STRING

로드 작업 및 외부 테이블의 소스 URI를 해석하는 방법을 지정합니다. 미리보기에서:

지원되는 값은 다음과 같습니다.

  • FILE_SYSTEM_MATCH. 객체 저장소의 파일을 나열하여 소스 URI를 확장합니다. FileSetSpecType이 설정되지 않은 경우의 기본 동작입니다.
  • NEW_LINE_DELIMITED_MANIFEST. 제공된 URI가 줄바꿈으로 구분된 매니페스트 파일이며 한 줄에 URI가 하나씩 있음을 나타냅니다. 매니페스트 파일에서는 와일드 카드 URI가 지원되지 않습니다.

예를 들어 소스 URI가 "gs://bucket/path/file"이고 file_set_spec_typeFILE_SYSTEM_MATCH인 경우 파일은 데이터 파일로 직접 사용됩니다. file_set_spec_typeNEW_LINE_DELIMITED_MANIFEST면 파일의 각 줄이 데이터 파일을 가리키는 URI로 해석됩니다.

ignore_unknown_values

BOOL

true인 경우 오류를 반환하지 않고 테이블 스키마에 표시되지 않는 추가 값을 무시합니다.

CSV 및 JSON 데이터에 적용됩니다.

json_extension

STRING

JSON 데이터의 경우 특정 JSON 교환 형식을 나타냅니다. 지정되지 않은 경우 BigQuery는 데이터를 일반 JSON 레코드로 읽습니다.

지원되는 값은 다음과 같습니다.
GEOJSON. 줄바꿈으로 구분된 GeoJSON 데이터 자세한 내용은 줄바꿈으로 구분된 GeoJSON 파일에서 외부 테이블 만들기를 참조하세요.

max_bad_records

INT64

데이터를 읽을 때 무시할 불량 레코드의 최대 개수입니다.

CSV, JSON, Google Sheets 데이터에 적용됩니다.

max_staleness

INTERVAL

BigLake 테이블객체 테이블에 적용할 수 있습니다.

테이블에 대한 작업에서 캐시된 메타데이터를 사용할지 여부와 작업이 사용하기 위해 캐시된 메타데이터가 얼마나 최신이어야 하는지를 지정합니다.

메타데이터 캐싱을 사용 중지하려면 0을 지정합니다. 이 값이 기본값입니다.

메타데이터 캐싱을 사용 설정하려면 30분에서 7일 사이의 간격 리터럴 값을 지정합니다. 예를 들어 4시간 비활성 간격에는 INTERVAL 4 HOUR를 지정합니다. 이 값을 사용하면 지난 4시간 이내에 새로고침된 경우 테이블에 대한 작업이 캐시된 메타데이터를 사용합니다. 캐시된 메타데이터가 이보다 오래된 경우 작업이 Cloud Storage에서 메타데이터를 대신 검색하도록 되돌아갑니다.

metadata_cache_mode

STRING

BigLake 테이블객체 테이블에 적용할 수 있습니다.

테이블의 메타데이터 캐시를 자동으로 또는 수동으로 새로고침할지 지정합니다.

시스템 정의 간격(일반적으로 30~60분)으로 메타데이터 캐시를 새로고침하려면 AUTOMATIC으로 설정합니다.

지정한 일정에 따라 메타데이터 캐시를 새로고침하려면 MANUAL로 설정합니다. 이 경우 BQ.REFRESH_EXTERNAL_METADATA_CACHE 시스템 프로시져를 호출하여 캐시를 새로고침할 수 있습니다.

max_staleness가 0보다 큰 값으로 설정된 경우 metadata_cache_mode를 설정해야 합니다.

null_marker

STRING

CSV 파일의 NULL 값을 나타내는 문자열입니다.

CSV 데이터에 적용됩니다.

object_metadata

STRING

객체 테이블을 만들 때만 필요합니다.

객체 테이블을 만들 때 이 옵션의 값을 SIMPLE로 설정합니다.

preserve_ascii_control_characters

BOOL

true이면 '\x00'부터 '\x1F'까지 ASCII 테이블의 처음 32자에 해당하는 삽입된 ASCII 제어 문자가 유지됩니다.

CSV 데이터에 적용됩니다.

projection_fields

STRING

로드할 항목 속성의 목록입니다.

Datastore 데이터에 적용됩니다.

quote

STRING

CSV 파일에서 데이터 섹션을 인용하는 데 사용되는 문자열입니다. 데이터에 따옴표 붙은 줄바꿈 문자가 있다면 allow_quoted_newlines 속성을 true로 설정합니다.

CSV 데이터에 적용됩니다.

reference_file_schema_uri

STRING

사용자가 테이블 스키마와 함께 참조 파일을 제공합니다.

Parquet/ORC/AVRO 데이터에 적용됩니다.

예: "gs://bucket/path/reference_schema_file.parquet"

require_hive_partition_filter

BOOL

true인 경우 이 테이블에 대한 모든 쿼리에는 데이터를 읽을 때 파티션을 제거하는 데 사용할 수 있는 파티션 필터가 필요합니다. 파티션을 나눈 하이브 외부 테이블에만 적용됩니다.

Avro, CSV, JSON, Parquet, ORC 데이터에 적용됩니다.

sheet_range

STRING

쿼리할 Google Sheets 스프레드시트의 범위입니다.

Google Sheets 데이터에 적용됩니다.

예시: “sheet1!A1:B20”

skip_leading_rows

INT64

데이터를 읽을 때 건너뛸 파일 상단의 행 수입니다.

CSV 및 Google Sheets 데이터에 적용됩니다.

uris

Bigtable 테이블이 아닌 객체 테이블을 포함한 외부 테이블의 경우:

ARRAY<STRING>

외부 데이터 위치의 정규화된 URI 배열입니다. 각 URI에는 버킷 이름 뒤에 와야 하는 별표(*) 와일드 카드 문자가 하나 포함될 수 있습니다. 여러 파일을 대상으로 하는 uris 값을 지정하는 경우 해당하는 모든 파일은 호환되는 스키마를 공유해야 합니다.

다음 예시에서는 유효한 uris 값을 보여줍니다.

  • ['gs://bucket/path1/myfile.csv']
  • ['gs://bucket/path1/*.csv']
  • ['gs://bucket/path1/*', 'gs://bucket/path2/file00*']

Bigtable 테이블의 경우:

STRING

데이터 소스로 사용할 Bigtable 테이블을 식별하는 URI입니다. Bigtable URI는 하나만 지정할 수 있습니다.

예를 들면 https://googleapis.com/bigtable/projects/project_id/instances/instance_id[/appProfiles/app_profile]/tables/table_name입니다.

Bigtable URI를 생성하는 방법에 대한 자세한 내용은 Bigtable URI 검색을 참조하세요.

범위 및 구문

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

뷰 이름 리소스 범위 리전 범위
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.TABLE_OPTIONS 프로젝트 수준 REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.TABLE_OPTIONS 데이터 세트 수준 데이터 세트 위치
다음을 바꿉니다.

  • (선택사항) PROJECT_ID: Google Cloud 프로젝트의 ID입니다. 지정하지 않으면 기본 프로젝트가 사용됩니다.
  • REGION: 모든 데이터 세트 리전 이름입니다. 예를 들면 region-us입니다.
  • DATASET_ID: 데이터 세트의 ID입니다. 자세한 내용은 데이터 세트 한정자를 참조하세요.

예 1:

다음 예시에서는 INFORMATION_SCHEMA.TABLE_OPTIONS 뷰를 쿼리하여 기본 프로젝트(myproject)의 mydataset에 있는 모든 테이블의 기본 테이블 만료 시간을 검색합니다.

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

  SELECT
    *
  FROM
    mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS
  WHERE
    option_name = 'expiration_timestamp';

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

  +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
  | table_catalog  | table_schema  | table_name |     option_name      | option_type |             option_value             |
  +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
  | myproject      | mydataset     | mytable1   | expiration_timestamp | TIMESTAMP   | TIMESTAMP "2020-01-16T21:12:28.000Z" |
  | myproject      | mydataset     | mytable2   | expiration_timestamp | TIMESTAMP   | TIMESTAMP "2021-01-01T21:12:28.000Z" |
  +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
  

예시 2:

다음 예시는 테스트 데이터가 포함된 mydataset의 모든 테이블에 대한 메타데이터를 검색합니다. 이 쿼리는 description 옵션의 값을 사용하여 설명의 아무 곳에서나 'test'가 포함된 테이블을 찾습니다. mydataset는 기본 프로젝트 myproject에 있습니다.

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

  SELECT
    *
  FROM
    mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS
  WHERE
    option_name = 'description'
    AND option_value LIKE '%test%';

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

  +----------------+---------------+------------+-------------+-------------+--------------+
  | table_catalog  | table_schema  | table_name | option_name | option_type | option_value |
  +----------------+---------------+------------+-------------+-------------+--------------+
  | myproject      | mydataset     | mytable1   | description | STRING      | "test data"  |
  | myproject      | mydataset     | mytable2   | description | STRING      | "test data"  |
  +----------------+---------------+------------+-------------+-------------+--------------+