데이터 정의 언어 문 사용

데이터 정의 언어(DDL) 문에서는 표준 SQL 쿼리 구문을 사용하여 BigQuery 리소스를 만들고 수정할 수 있습니다. 현재 BigQuery에서 DDL 명령어를 사용하여 다음을 수행할 수 있습니다.

CREATE TABLE 문

BigQuery에서 테이블을 만들려면 CREATE TABLE DDL 문을 사용합니다.

구문

{CREATE TABLE | CREATE TABLE IF NOT EXISTS | CREATE OR REPLACE TABLE}
table_name
[(
  column_name column_schema[, ...]
)]
[PARTITION BY partition_expression]
[CLUSTER BY clustering_column_list]
[OPTIONS(table_option_list)]
[AS query_statement]

여기에서:

{CREATE TABLE | CREATE TABLE IF NOT EXISTS | CREATE OR REPLACE TABLE}은 다음 문 중 하나입니다.

  • CREATE TABLE — 새 테이블을 만듭니다.
  • CREATE TABLE IF NOT EXISTS — 현재 지정된 데이터세트에 테이블이 없는 경우에만 새 테이블을 만듭니다.
  • CREATE OR REPLACE TABLE — 테이블을 만들어 지정된 데이터세트에서 이름이 같은 기존 테이블을 바꿉니다.

CREATE TABLE 문은 다음 규칙을 준수해야 합니다.

  • 하나의 CREATE 문만 허용됩니다.
  • 열 목록, as query_statement 절 또는 두 가지 모두 있어야 합니다.
  • 열 목록과 as query_statement 절이 모두 있는 경우 BigQuery는 as query_statement 절의 이름을 무시하고 위치를 기준으로 열 목록과 열을 일치시킵니다.
  • as query_statement 절이 있고 열 목록이 없는 경우 BigQuery는 as query_statement 절에서 열 이름과 유형을 확인합니다.
  • 열 이름은 열 목록 또는 as query_statement 절을 통해 지정되어야 합니다.
  • 중복 열 이름은 허용되지 않습니다.

table_name

table_name은 만드는 테이블의 이름입니다. 테이블 이름은 데이터세트별로 고유해야 합니다. 다음과 같은 테이블 이름을 사용할 수 있습니다.

  • 최대 1,024자 포함
  • 문자(대소문자), 숫자, 밑줄 포함

column_namecolumn_schema

(column_name column_schema[, ...])에는 테이블의 스키마 정보가 쉼표로 구분된 목록으로 포함됩니다.

  • column_name은 열 이름입니다. 다음과 같은 열 이름을 사용할 수 있습니다.
    • 문자(a-z, A-Z), 숫자(0-9), 밑줄(_)만 포함해야 함
    • 문자 또는 밑줄로 시작해야 함
    • 최고 128자까지 가능
  • column_schema데이터 유형과 비슷하지만 ARRAY 이외의 유형에서 선택사항인 NOT NULL 제약 조건을 지원합니다. column_schema는 최상위 열과 STRUCT 필드의 옵션도 지원합니다.
column_schema :=
   {simple_type [NOT NULL] |
    STRUCT<field_list> [NOT NULL] |
    ARRAY<array_element_schema>}
   [OPTIONS(column_option_list)]

field_list := field_name column_schema [, ...]

array_element_schema := {simple_type | STRUCT<field_list>} [NOT NULL]

simple_typeSTRUCTARRAY 이외의 모든 지원되는 데이터 유형입니다.

field_name은 STRUCT 필드 이름입니다. STRUCT 필드 이름의 제한사항은 열 이름과 동일합니다.

열 또는 필드에 NOT NULL 제약 조건이 있으면 해당 열 또는 필드는 REQUIRED 모드로 만들어집니다. 반대로 NOT NULL 제약 조건이 없는 경우 열 또는 필드는 NULLABLE 모드로 만들어집니다.

ARRAY 유형의 열 및 필드는 NOT NULL 수식어를 지원하지 않습니다. 예를 들어 ARRAY<INT64> NOT NULLcolumn_schema는 유효하지 않습니다. ARRAY 열에 REPEATED 모드가 있고 빈 상태일 수 있지만 NULL이 될 수는 없기 때문입니다. 테이블의 배열 요소는 NOT NULL 제약 조건이 지정되었는지 여부에 관계없이 NULL이 될 수 없습니다. 예를 들어 ARRAY<INT64>ARRAY<INT64 NOT NULL>과 동등합니다.

테이블 column_schemaNOT NULL 속성은 테이블에서 쿼리를 통해 적용되지 않습니다. 예를 들어 테이블 Tx INT64 NOT NULL로 선언된 열이 있는 경우 CREATE TABLE dataset.newtable AS SELECT x FROM Tdataset.newtable이라는 테이블을 만듭니다. 여기에서 xNULLABLE입니다.

column_schemaCREATE TABLE 문의 열 정의 목록에만 사용할 수 있고 표현식에서 유형으로 사용할 수 없습니다. 예를 들어 CAST(1 AS INT64 NOT NULL)는 유효하지 않습니다.

partition_expression

PARTITION BY테이블 파티션 나누기를 제어하는 선택사항 절입니다. partition_expression은 테이블 파티션을 나누는 방식을 결정하는 표현식입니다. 파티션 표현식에는 다음 값이 포함될 수 있습니다.

  • PARTITION BY DATE(_PARTITIONTIME)_PARTITIONTIME pseudo column의 날짜 기반 타임스탬프를 사용하여 테이블 파티션을 나눕니다. 이 구문은 AS query_statement 절이 없는 CREATE TABLE에서만 지원됩니다.
  • PARTITION BY DATE(<timestamp_column>)TIMESTAMP 열의 날짜를 사용하여 테이블 파티션을 나눕니다.
  • PARTITION BY <date_column>DATE을 사용하여 테이블 파티션을 나눕니다.

clustering_column_list

CLUSTER BY테이블 클러스터링을 제어하는 선택사항 절입니다. clustering_column_list는 테이블을 클러스터링하는 방식을 결정하는 쉼표로 구분된 목록입니다. 클러스터링 열 목록에는 최대 4개의 클러스터링 열이 포함될 수 있습니다.

table_option_list

table_option_list를 사용하면 추가로 라벨 및 만료 시간과 같은 선택사항 테이블 옵션을 지정할 수 있습니다. 쉼표로 구분된 목록을 사용하여 여러 개의 옵션을 포함할 수 있습니다.

다음 형식으로 테이블 옵션 목록을 지정합니다.

NAME=VALUE, ...

NAMEVALUE는 다음 조합 중 하나여야 합니다.

NAME VALUE 세부정보
expiration_timestamp TIMESTAMP

예: expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC"

이 속성은 expirationTime 테이블 리소스 속성과 동등합니다.

partition_expiration_days

FLOAT64

예: partition_expiration_days=7

이 속성은 timePartitioning.expirationMs 테이블 리소스 속성과 동등하지만 밀리초 대신 일 수를 사용합니다. 1일은 86400000밀리초 또는 24시간과 동등합니다.

이 속성은 파티션을 나눈 테이블을 만들 때만 사용할 수 있습니다.

require_partition_filter

BOOL

예: require_partition_filter=true

이 속성은 timePartitioning.requirePartitionFilter 테이블 리소스 속성과 동등합니다.

이 속성은 파티션을 나눈 테이블을 만들 때만 사용할 수 있습니다.

kms_key_name

STRING

예: kms_key_name="projects/[PROJECT_ID]/locations/[LOCATION]/keyRings/[KEYRING]/cryptoKeys/[KEY]"

이 속성은 encryptionConfiguration.kmsKeyName 테이블 리소스 속성과 동등합니다.

Cloud KMS 키로 데이터 보호에 대해 자세히 알아보세요.

friendly_name

STRING

예: friendly_name="my_table"

이 속성은 friendlyName 테이블 리소스 속성과 동등합니다.

description

STRING

예: description="a table that expires in 2020"

이 속성은 description 테이블 리소스 속성과 동등합니다.

labels

ARRAY<STRUCT<STRING, STRING>>

예: labels=[("org_unit", "development")]

이 속성은 labels 테이블 리소스 속성과 동등합니다.

VALUE는 리터럴, 쿼리 매개변수, 스칼라 함수만 포함하는 상수 표현식입니다. 상수 표현식이 null로 평가되면 해당 옵션 NAME은 무시됩니다. 상수 표현식은 다음을 포함할 수 없습니다.

  • 테이블 참조
  • 하위 쿼리 또는 SQL 문(예: SELECT, CREATE, UPDATE)
  • 맞춤 설정 함수, 집계 함수 또는 분석 함수
  • 다음 스칼라 함수:
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

column_option_list

column_schemacolumn_option_list를 사용하면 선택사항 열 또는 필드 옵션을 지정할 수 있습니다. 열 옵션의 구문과 요구사항은 테이블 옵션과 동일하지만 NAMEVALUE 목록은 다릅니다.

NAME VALUE 세부정보
description

STRING

예: description="a unique id"

이 속성은 schema.fields[].description 테이블 리소스 속성과 동등합니다.

query_statement

AS query_statement 절은 테이블을 만들어야 하는 쿼리를 지정합니다. 지원되는 query_statement 양식은 SQL 구문 참조를 확인하세요.

알려진 제한사항:

  • 쿼리 결과에서 내부 데이터화 시간별로 파티션을 나눈 테이블을 만들 수 없습니다. 대신 CREATE TABLE DDL 문을 사용하여 테이블을 만든 다음 INSERT DML 문을 사용하여 테이블에 데이터를 삽입합니다.
  • OR REPLACE 수식어를 사용하여 테이블을 다른 종류의 파티션 나누기로 바꿀 수 없습니다. 대신 테이블을 DROP한 다음 CREATE TABLE ... AS SELECT ... 문을 사용하여 테이블을 다시 만듭니다.

CREATE TABLE 예

새 테이블 만들기

CREATE TABLE DDL 문은 지정된 옵션을 사용하여 테이블을 만듭니다. 데이터세트에 테이블 이름이 있는 경우 다음 오류가 반환됩니다.

Already Exists: [PROJECT]:[DATASET].[TABLE]

다음 예에서는 mydatasetnewtable이라는 파티션을 나눈 테이블을 만듭니다. 기본 프로젝트를 구성하지 않은 경우 `[PROJECT].[DATASET].[TABLE]`(백틱 포함) 형식으로 데이터세트 이름 앞에 추가합니다. 예를 들어 `myproject.mydataset.newtable`과 같은 형식입니다.

테이블은 다음 partition_expression을 사용하여 PARTITION BY DATE(_PARTITIONTIME) 테이블의 파티션을 나눕니다. 이 표현식은 _PARTITIONTIME 유사 열의 날짜 기반 타임스탬프를 사용하여 테이블의 파티션을 나눕니다.

테이블 스키마에는 두 개의 열이 포함됩니다.

  • x — 정수, 'An optional INTEGER field'라는 설명 포함
  • y — 다음 2개의 열이 포함된 STRUCT:

    • a — 문자열 배열, 'A repeated STRING field'라는 설명 포함
    • b — 부울

테이블 옵션 목록은 다음을 지정합니다.

  • 테이블 만료 시간 — 2020년 1월 1일 00:00:00 UTC
  • 파티션 만료 시간 — 1일
  • 설명 — 2020년에 만료되는 테이블
  • 라벨 — org_unit = 개발

DDL을 사용하여 새 테이블을 만들려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     CREATE TABLE mydataset.newtable
     (
       x INT64 OPTIONS(description="An optional INTEGER field"),
       y STRUCT<
         a ARRAY<STRING> OPTIONS(description="A repeated STRING field"),
         b BOOL
       >
     )
     PARTITION BY DATE(_PARTITIONTIME)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       partition_expiration_days=1,
       description="a table that expires in 2020, with each partition living for 24 hours",
       labels=[("org_unit", "development")]
     )
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.newtable
(
  x INT64 OPTIONS(description="An optional INTEGER field"),
  y STRUCT<
    a ARRAY<STRING> OPTIONS(description="A repeated STRING field"),
    b BOOL
  >
)
PARTITION BY DATE(_PARTITIONTIME)
OPTIONS(
  expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
  partition_expiration_days=1,
  description="a table that expires in 2020, with each partition living for 24 hours",
  labels=[("org_unit", "development")]
)'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

기존 테이블에서 새 테이블 만들기

CREATE TABLE ... AS SELECT DDL 문은 쿼리에서 테이블을 만듭니다. 데이터세트에 테이블 이름이 있는 경우 다음 오류가 반환됩니다.

Already Exists: [PROJECT]:[DATASET].[TABLE]

다음 예에서는 mydatasettop_words라는 테이블을 만듭니다. 기본 프로젝트를 구성하지 않은 경우 `[PROJECT].[DATASET].[TABLE]`(백틱 포함) 형식으로 데이터세트 이름 앞에 추가합니다. 예를 들어 `myproject.mydataset.rainy_days`와 같은 형식입니다.

테이블 스키마에는 두 개의 열이 포함됩니다.

  • corpus — Shakespeare 말뭉치의 이름
  • top_wordsword(STRING) 및 word_count(INT64, 단어 수 포함) 필드가 포함된 STRUCTARRAY

테이블 옵션 목록은 다음을 지정합니다.

  • 설명 — Shakespeare 말뭉치당 최상위 10개 단어

DDL을 사용하여 새 테이블을 만들려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     CREATE TABLE mydataset.top_words
     OPTIONS(
       description="Top ten words per Shakespeare corpus"
     ) AS
     SELECT
       corpus,
       ARRAY_AGG(STRUCT(word, word_count) ORDER BY word_count DESC LIMIT 10) AS top_words
     FROM bigquery-public-data.samples.shakespeare
     GROUP BY corpus;

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
     CREATE TABLE mydataset.top_words
     OPTIONS(
       description="Top ten words per Shakespeare corpus"
     ) AS
     SELECT
       corpus,
       ARRAY_AGG(STRUCT(word, word_count)
                 ORDER BY word_count DESC LIMIT 10) AS top_words
     FROM bigquery-public-data.samples.shakespeare
     GROUP BY corpus;'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

테이블이 없는 경우에만 테이블 만들기

CREATE TABLE IF NOT EXISTS DDL 문은 데이터세트에 테이블 이름이 없는 경우에만 지정된 옵션으로 테이블을 만듭니다. 데이터세트에 테이블 이름이 있는 경우 오류가 반환되지 않고 아무런 작업도 수행되지 않습니다.

다음 예에서는 mydatasetnewtable이라는 테이블이 없는 경우에만 mydatasetnewtable이라는 테이블을 만듭니다. 기본 프로젝트를 구성하지 않은 경우 `[PROJECT].[DATASET].[TABLE]`(백틱 포함) 형식으로 데이터세트 이름 앞에 추가합니다. 예를 들어 `myproject.mydataset.newtable`과 같은 형식입니다.

테이블 스키마에는 두 개의 열이 포함됩니다.

  • x — 정수
  • y — a(문자열 배열)와 b(부울)가 포함된 STRUCT

테이블 옵션 목록은 다음을 지정합니다.

  • 만료 시간 — 2020년 1월 1일 00:00:00 UTC
  • 설명 — 2020년에 만료되는 테이블
  • 라벨 — org_unit = 개발

데이터세트에 테이블 이름이 없는 경우에만 DDL을 사용하여 새 테이블을 만들려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     CREATE TABLE IF NOT EXISTS mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       description="a table that expires in 2020",
       labels=[("org_unit", "development")]
     )
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
CREATE TABLE IF NOT EXISTS mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
 OPTIONS(
   expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
   description="a table that expires in 2020",
   labels=[("org_unit", "development")]
 )'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

테이블 만들기 또는 바꾸기

CREATE OR REPLACE TABLE DDL 문은 지정된 옵션을 사용하여 테이블을 만듭니다. 데이터세트에 테이블 이름이 있는 경우 빈 테이블로 테이블을 덮어씁니다.

다음 예에서는 mydatasetnewtable이라는 테이블을 만들고 newtablemydataset에 있는 경우 덮어씁니다. 기본 프로젝트를 구성하지 않은 경우 `[PROJECT].[DATASET].[TABLE]`(백틱 포함) 형식으로 데이터세트 이름 앞에 추가합니다. 예를 들어 `myproject.mydataset.newtable`과 같은 형식입니다.

테이블 스키마에는 두 개의 열이 포함됩니다.

  • x — 정수
  • y — a(문자열 배열)와 b(부울)가 포함된 STRUCT

테이블 옵션 목록은 다음을 지정합니다.

  • 만료 시간 — 2020년 1월 1일 00:00:00 UTC
  • 설명 — 2020년에 만료되는 테이블
  • 라벨 — org_unit = 개발

DDL을 사용하여 새 테이블을 만들고 이름이 같은 테이블을 덮어쓰려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     CREATE OR REPLACE TABLE mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
     OPTIONS(
       expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
       description="a table that expires in 2020",
       labels=[("org_unit", "development")]
     )
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
CREATE OR REPLACE TABLE mydataset.newtable (x INT64, y STRUCT<a ARRAY<STRING>, b BOOL>)
 OPTIONS(
   expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC",
   description="a table that expires in 2020",
   labels=[("org_unit", "development")]
 )'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

REQUIRED 열이 있는 테이블 만들기

CREATE TABLE 문의 열 정의 목록에 있는 NOT NULL 수식어는 열 또는 필드가 REQUIRED 모드로 만들어진다는 것을 지정합니다.

다음 예에서는 mydatasetnewtable이라는 테이블을 만듭니다. 데이터세트에 테이블 이름이 있는 경우 다음 오류가 반환됩니다.

Already Exists: [PROJECT]:[DATASET].[TABLE]

기본 프로젝트를 구성하지 않은 경우 `[PROJECT].[DATASET].[TABLE]`(백틱 포함) 형식으로 데이터세트 이름 앞에 추가합니다. 예를 들어 `myproject.mydataset.newtable`과 같은 형식입니다.

테이블 스키마에는 3개의 열이 포함됩니다.

  • xREQUIRED 정수
  • y — a(문자열 배열), b(REQUIRED 부울), c(NULLABLE 부동 소수점)가 포함된 REQUIRED STRUCT
  • zNULLABLE 문자열

DDL을 사용하여 REQUIRED 열이 있는 새 테이블을 만들려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     CREATE TABLE my_dataset.new_table (
       x INT64 NOT NULL,
       y STRUCT<
         a ARRAY<STRING>,
         b BOOL NOT NULL,
         c FLOAT64
       > NOT NULL,
       z STRING
     )
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
 CREATE TABLE my_dataset.new_table (
   x INT64 NOT NULL,
   y STRUCT<
     a ARRAY<STRING>,
     b BOOL NOT NULL,
     c FLOAT64
   > NOT NULL,
   z STRING
 )'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

파티션을 나눈 테이블 만들기

다음 예에서는 DATE 열을 사용하여 mydatasetnewtable이라는 파티션을 나눈 테이블을 만듭니다. 기본 프로젝트를 구성하지 않은 경우 `[PROJECT].[DATASET].[TABLE]`(백틱 포함) 형식으로 데이터세트 이름 앞에 추가합니다. 예를 들어 `myproject.mydataset.newtable`과 같은 형식입니다.

테이블 스키마에는 두 개의 열이 포함됩니다.

  • transaction_id — 정수
  • transaction_date — 날짜

테이블 옵션 목록은 다음을 지정합니다.

  • 파티션 만료 — 3일
  • 설명transaction_date로 파티션을 나눈 테이블

DDL을 사용하여 새 테이블을 만들려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE)
     PARTITION BY transaction_date
     OPTIONS(
       partition_expiration_days=3,
       description="a table partitioned by transaction_date"
     )
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE)
PARTITION BY transaction_date
OPTIONS(
  partition_expiration_days=3,
  description="a table partitioned by transaction_date"
)'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

쿼리 결과에서 파티션을 나눈 테이블 만들기

다음 예에서는 DATE 열을 사용하여 mydatasetdays_with_rain이라는 파티션을 나눈 테이블을 만듭니다. 기본 프로젝트를 구성하지 않은 경우 `[PROJECT].[DATASET].[TABLE]`(백틱 포함) 형식으로 데이터세트 이름 앞에 추가합니다. 예를 들어 `myproject.mydataset.newtable`과 같은 형식입니다.

테이블 스키마에는 두 개의 열이 포함됩니다.

  • date — 데이터 컬렉션의 DATE
  • station_name — 기상 관측소 이름, STRING
  • prcp — 인치 단위의 강수량, FLOAT64

테이블 옵션 목록은 다음을 지정합니다.

  • 파티션 만료 — 1년
  • 설명 — 강수량과 기상 관측소, 날짜별로 파티션을 나눔

DDL을 사용하여 새 테이블을 만들려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     CREATE TABLE mydataset.days_with_rain
     PARTITION BY date
     OPTIONS (
       partition_expiration_days=365,
       description="weather stations with precipitation, partitioned by day"
     ) AS
     SELECT
       DATE(CAST(year AS INT64), CAST(mo AS INT64), CAST(da AS INT64)) AS date,
       (SELECT ANY_VALUE(name) FROM `bigquery-public-data.noaa_gsod.stations` AS stations
        WHERE stations.usaf = stn) AS station_name,  -- Stations may have multiple names
       prcp
     FROM `bigquery-public-data.noaa_gsod.gsod2017` AS weather
     WHERE prcp != 99.9  -- Filter unknown values
       AND prcp > 0      -- Filter stations/days with no precipitation
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.days_with_rain
PARTITION BY date
OPTIONS (
  partition_expiration_days=365,
  description="weather stations with precipitation, partitioned by day"
) AS
SELECT
  DATE(CAST(year AS INT64), CAST(mo AS INT64), CAST(da AS INT64)) AS date,
  (SELECT ANY_VALUE(name) FROM `bigquery-public-data.noaa_gsod.stations` AS stations
   WHERE stations.usaf = stn) AS station_name,  -- Stations may have multiple names
  prcp
FROM `bigquery-public-data.noaa_gsod.gsod2017` AS weather
WHERE prcp != 99.9  -- Filter unknown values
  AND prcp > 0      -- Filter stations/days with no precipitation
'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

클러스터링된 테이블 만들기

예 1

다음 예에서는 mydatasetmyclusteredtable이라는 클러스터링된 테이블을 만듭니다. 이 테이블은 TIMESTAMP 열로 파티션을 나누고 customer_id라는 STRING 열로 클러스터링된 파티션을 나눈 테이블입니다.

기본 프로젝트를 구성하지 않은 경우 `[PROJECT].[DATASET].[TABLE]`(백틱 포함) 형식으로 데이터세트 이름 앞에 추가합니다. 예를 들어 `myproject.mydataset.myclusteredtable`과 같은 형식입니다.

테이블 스키마에는 3개의 열이 포함됩니다.

  • timestamp — 데이터 컬렉션의 시간, TIMESTAMP
  • customer_id — 고객 ID, STRING
  • transaction_amount — 거래 금액, NUMERIC

테이블 옵션 목록은 다음을 지정합니다.

  • 파티션 만료 — 3일
  • 설명 — 'customer_id로 클러스터링된 테이블'

DDL 문을 사용하여 클러스터링된 테이블을 만들려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 CREATE TABLE DDL 문을 입력합니다.

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(timestamp)
     CLUSTER BY customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )

  4. 옵션 표시를 클릭합니다.

  5. 처리 위치에서 미지정을 클릭하고 데이터의 위치를 선택합니다. 데이터가 US 또는 EU 다중 지역 위치에 있으면 처리 위치를 지정하지 않은 상태로 두어도 됩니다. 데이터가 US 또는 EU에 있으면 처리 위치가 자동으로 감지됩니다.

  6. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.myclusteredtable
(
  timestamp TIMESTAMP,
  customer_id STRING,
  transaction_amount NUMERIC
)
PARTITION BY DATE(timestamp)
CLUSTER BY customer_id
OPTIONS (
  partition_expiration_days=3,
  description="a table clustered by customer_id"
)'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

예 2

다음 예에서는 mydatasetmyclusteredtable이라는 클러스터링된 테이블을 만듭니다. 이 테이블은 내부 데이터화 시간별로 파티션을 나눈 테이블입니다.

기본 프로젝트를 구성하지 않은 경우 `[PROJECT].[DATASET].[TABLE]`(백틱 포함) 형식으로 데이터세트 이름 앞에 추가합니다. 예를 들어 `myproject.mydataset.myclusteredtable`과 같은 형식입니다.

테이블 스키마에는 3개의 열이 포함됩니다.

  • timestamp — 데이터 컬렉션의 시간, TIMESTAMP
  • customer_id — 고객 ID, STRING
  • transaction_amount — 거래 금액, NUMERIC

테이블 옵션 목록은 다음을 지정합니다.

  • 파티션 만료 — 3일
  • 설명 — 'customer_id로 클러스터링된 테이블'

DDL 문을 사용하여 클러스터링된 테이블을 만들려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 CREATE TABLE DDL 문을 입력합니다.

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(_PARTITIONTIME)
     CLUSTER BY
       customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )

  4. 옵션 표시를 클릭합니다.

  5. 처리 위치에서 미지정을 클릭하고 데이터의 위치를 선택합니다. 데이터가 US 또는 EU 다중 지역 위치에 있으면 처리 위치를 지정하지 않은 상태로 두어도 됩니다. 데이터가 US 또는 EU에 있으면 처리 위치가 자동으로 감지됩니다.

  6. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.myclusteredtable
(
  timestamp TIMESTAMP,
  customer_id STRING,
  transaction_amount NUMERIC
)
PARTITION BY DATE(_PARTITIONTIME)
CLUSTER BY
  customer_id
OPTIONS (
  partition_expiration_days=3,
  description="a table clustered by customer_id"
)'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

쿼리 결과에서 클러스터링된 테이블 만들기

다음 예에서는 쿼리 결과를 사용하여 mydatasetmyclusteredtable이라는 클러스터링된 테이블을 만듭니다. 이 테이블은 파티션을 나눈 테이블입니다(TIMESTAMP 열로 파티션을 나눔).

기본 프로젝트를 구성하지 않은 경우 `[PROJECT].[DATASET].[TABLE]`(백틱 포함) 형식으로 데이터세트 이름 앞에 추가합니다. 예를 들어 `myproject.mydataset.myclusteredtable`과 같은 형식입니다.

테이블 스키마에는 3개의 열이 포함됩니다.

  • timestamp — 데이터 컬렉션의 시간, TIMESTAMP
  • customer_id — 고객 ID, STRING
  • transaction_amount — 거래 금액, NUMERIC

테이블 옵션 목록은 다음을 지정합니다.

  • 파티션 만료 — 3일
  • 설명 — 'customer_id로 클러스터링된 테이블'

DDL 문을 사용하여 클러스터링된 테이블을 만들려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 CREATE TABLE DDL 문을 입력합니다.

     #standardSQL
     CREATE TABLE mydataset.myclusteredtable
     (
       timestamp TIMESTAMP,
       customer_id STRING,
       transaction_amount NUMERIC
     )
     PARTITION BY DATE(timestamp)
     CLUSTER BY
       customer_id
     OPTIONS (
       partition_expiration_days=3,
       description="a table clustered by customer_id"
     )
     AS SELECT * FROM mydataset.myothertable

  4. 옵션 표시를 클릭합니다.

  5. 처리 위치에서 미지정을 클릭하고 데이터의 위치를 선택합니다. 데이터가 US 또는 EU 다중 지역 위치에 있으면 처리 위치를 지정하지 않은 상태로 두어도 됩니다. 데이터가 US 또는 EU에 있으면 처리 위치가 자동으로 감지됩니다.

  6. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
CREATE TABLE mydataset.myclusteredtable
  (
    timestamp TIMESTAMP,
    customer_id STRING,
    transaction_amount NUMERIC
  )
PARTITION BY DATE(timestamp)
CLUSTER BY
  customer_id
OPTIONS (
  partition_expiration_days=3,
  description="a table clustered by customer_id"
)
AS SELECT * FROM mydataset.myothertable'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

CREATE VIEW 문

BigQuery에서 보기를 만들려면 CREATE VIEW DDL 문을 사용합니다.

구문

{CREATE VIEW | CREATE VIEW IF NOT EXISTS | CREATE OR REPLACE VIEW}
view_name
[OPTIONS(view_option_list)]
AS query_expression

여기에서:

{CREATE VIEW | CREATE VIEW IF NOT EXISTS | CREATE OR REPLACE VIEW}는 다음 문 중 하나입니다.

  • CREATE VIEW — 새 보기를 만듭니다.
  • CREATE VIEW IF NOT EXISTS — 지정된 데이터세트에 현재 보기가 없는 경우에만 새 보기를 만듭니다.
  • CREATE OR REPLACE VIEW — 지정된 데이터세트에 보기를 만들고 이름이 같은 기존 보기를 바꿉니다.

view_name은 만드는 보기의 이름입니다. 보기 이름은 데이터세트별로 고유해야 합니다. 다음과 같은 보기 이름을 사용할 수 있습니다.

  • 최대 1,024자 포함
  • 문자(대소문자), 숫자, 밑줄 포함

view_option_list를 사용하면 라벨 및 만료 시간과 같은 추가 보기 생성 옵션을 지정할 수 있습니다.

CREATE VIEW 문은 다음 규칙을 준수해야 합니다.

  • 하나의 CREATE 문만 허용됩니다.

query_expression은 보기를 정의하는 데 사용되는 표준 SQL 쿼리 표현식입니다.

view_option_list

[view_option_list]를 사용하면 추가로 라벨 및 만료 시간과 같은 선택사항 보기 옵션을 지정할 수 있습니다. 쉼표로 구분된 목록을 사용하여 여러 개의 옵션을 포함할 수 있습니다.

다음 형식으로 보기 옵션을 지정합니다.

NAME=VALUE, ...

NAMEVALUE는 다음 조합 중 하나여야 합니다.

NAME VALUE 세부정보
expiration_timestamp TIMESTAMP

예: expiration_timestamp=TIMESTAMP "2020-01-01 00:00:00 UTC"

이 속성은 expirationTime 테이블 리소스 속성과 동등합니다.

friendly_name

STRING

예: friendly_name="my_view"

이 속성은 friendlyName 테이블 리소스 속성과 동등합니다.

description

STRING

예: description="a view that expires in 2020"

이 속성은 description 테이블 리소스 속성과 동등합니다.

labels

ARRAY<STRUCT<STRING, STRING>>

예: labels=[("org_unit", "development")]

이 속성은 labels 테이블 리소스 속성과 동등합니다.

VALUE는 리터럴, 쿼리 매개변수, 스칼라 함수만 포함하는 상수 표현식입니다. 상수 표현식이 null로 평가되면 해당 옵션 NAME은 무시됩니다. 상수 표현식은 다음을 포함할 수 없습니다.

  • 테이블 참조
  • 하위 쿼리 또는 SQL 문(예: SELECT, CREATE, UPDATE)
  • 맞춤 설정 함수, 집계 함수 또는 분석 함수
  • 다음 스칼라 함수:
    • ARRAY_TO_STRING
    • REPLACE
    • REGEXP_REPLACE
    • RAND
    • FORMAT
    • LPAD
    • RPAD
    • REPEAT
    • SESSION_USER
    • GENERATE_ARRAY
    • GENERATE_DATE_ARRAY

새 보기 만들기

CREATE VIEW DDL 문은 지정된 옵션을 사용하여 보기를 만듭니다. 데이터세트에 보기 이름이 있는 경우 다음 오류가 반환됩니다.

Already Exists: [PROJECT]:[DATASET].[VIEW]

다음 예에서는 mydatasetnewview라는 보기를 만듭니다. DDL 문을 사용하여 보기를 만드는 경우 프로젝트, 데이터세트, 보기를 `[PROJECT].[DATASET].[VIEW]`(백틱 포함) 형식으로 지정해야 합니다. 예를 들어 `myproject.mydataset.newview`와 같은 형식입니다.

보기는 다음 표준 SQL 쿼리를 사용하여 정의됩니다.

SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable

보기 옵션 목록은 다음을 지정합니다.

  • 만료 시간 — 보기를 만든 후 48시간
  • 별칭 — newview
  • 설명 — 2일 후 만료되는 보기
  • 라벨 — org_unit = 개발

DDL을 사용하여 새 보기를 만들려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     CREATE VIEW `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
CREATE TABLE myproject.mydataset.newview
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="newview",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")]
 )
 AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

자바

BigQuery.create() 메소드를 호출하여 쿼리 작업을 시작합니다. Job.waitFor() 메소드를 호출하여 DDL 쿼리가 완료될 때까지 기다립니다.

// import com.google.cloud.bigquery.*;
// String projectId = "my-project";
// String datasetId = "my_dataset";
// String tableId = "new_view";
// BigQuery bigquery = BigQueryOptions.getDefaultInstance().toBuilder()
//     .setProjectId(projectId)
//     .build().getService();

String sql =
    String.format(
        "CREATE VIEW `%s.%s.%s`\n"
            + "OPTIONS(\n"
            + "  expiration_timestamp=TIMESTAMP_ADD(\n"
            + "    CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),\n"
            + "  friendly_name=\"new_view\",\n"
            + "  description=\"a view that expires in 2 days\",\n"
            + "  labels=[(\"org_unit\", \"development\")]\n"
            + ")\n"
            + "AS SELECT name, state, year, number\n"
            + "  FROM `bigquery-public-data.usa_names.usa_1910_current`\n"
            + "  WHERE state LIKE 'W%%';\n",
        projectId, datasetId, tableId);

// Make an API request to run the query job.
Job job = bigquery.create(JobInfo.of(QueryJobConfiguration.newBuilder(sql).build()));

// Wait for the query to finish.
job = job.waitFor();

QueryJobConfiguration jobConfig = (QueryJobConfiguration) job.getConfiguration();
System.out.printf(
    "Created new view \"%s.%s.%s\".\n",
    jobConfig.getDestinationTable().getProject(),
    jobConfig.getDestinationTable().getDataset(),
    jobConfig.getDestinationTable().getTable());

PYTHON

Client.query() 메소드를 호출하여 쿼리 작업을 시작합니다. QueryJob.result() 메소드를 호출하여 DDL 쿼리가 완료될 때까지 기다립니다.

# from google.cloud import bigquery
# project = 'my-project'
# dataset_id = 'my_dataset'
# table_id = 'new_view'
# client = bigquery.Client(project=project)

sql = """
CREATE VIEW `{}.{}.{}`
OPTIONS(
    expiration_timestamp=TIMESTAMP_ADD(
        CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
    friendly_name="new_view",
    description="a view that expires in 2 days",
    labels=[("org_unit", "development")]
)
AS SELECT name, state, year, number
    FROM `bigquery-public-data.usa_names.usa_1910_current`
    WHERE state LIKE 'W%'
""".format(project, dataset_id, table_id)

job = client.query(sql)  # API request.
job.result()  # Waits for the query to finish.

print('Created new view "{}.{}.{}".'.format(
    job.destination.project,
    job.destination.dataset_id,
    job.destination.table_id))

보기가 없는 경우에만 보기 만들기

CREATE VIEW IF NOT EXISTS DDL 문은 데이터세트에 보기 이름이 없는 경우에만 지정된 옵션으로 보기를 만듭니다. 데이터세트에 보기 이름이 있는 경우 오류가 반환되지 않고 아무런 작업도 수행되지 않습니다.

다음 예에서는 mydatasetnewview라는 보기가 없는 경우에만 mydatasetnewview라는 보기를 만듭니다. DDL 문을 사용하여 보기를 만드는 경우 프로젝트, 데이터세트, 보기를 `[PROJECT].[DATASET].[VIEW]`(백틱 포함) 형식으로 지정해야 합니다. 예를 들어 `myproject.mydataset.newview`와 같은 형식입니다.

보기는 다음 표준 SQL 쿼리를 사용하여 정의됩니다.

SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable

보기 옵션 목록은 다음을 지정합니다.

  • 만료 시간 — 보기를 만든 후 48시간
  • 별칭 — newview
  • 설명 — 2일 후 만료되는 보기
  • 라벨 — org_unit = 개발

데이터세트에 보기 이름이 없는 경우에만 DDL을 사용하여 새 보기를 만들려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     CREATE VIEW IF NOT EXISTS `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
CREATE VIEW IF NOT EXISTS myproject.mydataset.newview
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="newview",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")]
 )
 AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

보기 만들기 또는 바꾸기

CREATE OR REPLACE VIEW DDL 문은 지정된 옵션을 사용하여 보기를 만듭니다. 데이터세트에 보기 이름이 있는 경우 지정된 쿼리 표현식을 사용하여 보기를 덮어씁니다.

다음 예에서는 mydatasetnewview라는 보기를 만들고 mydatasetnewview가 있는 경우 덮어씁니다. DDL 문을 사용하여 보기를 만드는 경우 프로젝트, 데이터세트, 보기를 `[PROJECT].[DATASET].[VIEW]`(백틱 포함) 형식으로 지정해야 합니다. 예를 들어 `myproject.mydataset.newview`와 같은 형식입니다.

보기는 다음 표준 SQL 쿼리를 사용하여 정의됩니다.

    SELECT column_1, column_2, column_3 FROM `myproject.mydataset.mytable`

보기 옵션 목록은 다음을 지정합니다.

  • 만료 시간 — 보기를 만든 후 48시간
  • 별칭 — newview
  • 설명 — 2일 후 만료되는 보기
  • 라벨 — org_unit = 개발

DDL을 사용하여 새 보기를 만들고 이름이 같은 보기를 덮어쓰려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     CREATE OR REPLACE VIEW `myproject.mydataset.newview`
     OPTIONS(
       expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
       friendly_name="newview",
       description="a view that expires in 2 days",
       labels=[("org_unit", "development")]
     )
     AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에 나타납니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
CREATE OR REPLACE VIEW myproject.mydataset.newview
 OPTIONS(
   expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 48 HOUR),
   friendly_name="newview",
   description="a view that expires in 2 days",
   labels=[("org_unit", "development")]
 )
 AS SELECT column_1, column_2, column_3 FROM myproject.mydataset.mytable'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

DROP TABLE 문

BigQuery에서 테이블을 삭제하려면 DROP TABLE DDL 문을 사용합니다.

구문

{DROP TABLE | DROP TABLE IF EXISTS}
table_name

여기에서:

{DROP TABLE | DROP TABLE IF EXISTS}는 다음 문 중 하나입니다.

  • DROP TABLE — 지정된 데이터세트에서 테이블을 삭제합니다.
  • DROP TABLE IF EXISTS — 지정된 데이터세트에 테이블이 있는 경우에만 테이블을 삭제합니다.

table_name은 삭제하는 테이블의 이름입니다.

테이블 삭제

DROP TABLE DDL 문은 지정된 데이터세트에서 테이블을 삭제합니다. 데이터세트에 테이블 이름이 없는 경우 다음 오류가 반환됩니다.

Error: Not found: Table myproject:mydataset.mytable

다른 프로젝트의 테이블을 삭제하는 경우 프로젝트, 데이터세트, 테이블을 `[PROJECT].[DATASET].[TABLE]`(백틱 포함) 형식으로 지정해야 합니다. 예를 들어 `myproject.mydataset.mytable`과 같은 형식입니다.

DDL을 사용하여 테이블을 삭제하려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     DROP TABLE mydataset.mytable
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에서 삭제됩니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
DROP TABLE mydataset.mytable'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

테이블이 있는 경우에만 테이블 삭제

DROP TABLE IF EXISTS DDL 문은 지정된 데이터세트에 테이블이 있는 경우에만 테이블을 삭제합니다. 데이터세트에 테이블 이름이 없는 경우 오류가 반환되지 않고 아무런 작업도 수행되지 않습니다.

다른 프로젝트의 테이블을 삭제하는 경우 프로젝트, 데이터세트, 테이블을 `[PROJECT].[DATASET].[TABLE]`(백틱 포함) 형식으로 지정해야 합니다. 예를 들어 `myproject.mydataset.mytable`과 같은 형식입니다.

테이블이 있는 경우에만 DDL을 사용하여 테이블을 삭제하려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     DROP TABLE IF EXISTS mydataset.mytable
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에서 삭제됩니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
DROP TABLE IF EXISTS mydataset.mytable'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

DROP VIEW 문

BigQuery에서 보기를 삭제하려면 DROP VIEW DDL 문을 사용합니다.

구문

{DROP VIEW | DROP VIEW IF EXISTS}
view_name

여기에서:

{DROP VIEW | DROP VIEW IF EXISTS}는 다음 문 중 하나입니다.

  • DROP VIEW — 지정된 데이터세트에서 보기를 삭제합니다.
  • DROP VIEW IF EXISTS — 지정된 데이터세트에 보기가 있는 경우에만 보기를 삭제합니다.

view_name은 삭제하는 보기의 이름입니다.

보기 삭제

DROP VIEW DDL 문은 지정된 데이터세트에서 보기를 삭제합니다. 데이터세트에 보기 이름이 없는 경우 다음 오류가 반환됩니다.

Error: Not found: Table myproject:mydataset.myview

다른 프로젝트의 보기를 삭제하는 경우 프로젝트, 데이터세트, 보기를 `[PROJECT].[DATASET].[VIEW]`(백틱 포함) 형식으로 지정해야 합니다. 예를 들어 `myproject.mydataset.myview`와 같은 형식입니다.

DDL을 사용하여 보기를 삭제하려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     DROP VIEW mydataset.myview
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 탐색 창에서 보기가 삭제됩니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
DROP VIEW mydataset.myview'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

보기가 있는 경우에만 보기 삭제

DROP VIEW IF EXISTS DDL 문은 지정된 데이터세트에 보기가 있는 경우에만 보기를 삭제합니다. 데이터세트에 보기 이름이 없는 경우 오류가 반환되지 않고 아무런 작업도 수행되지 않습니다.

다른 프로젝트의 보기를 삭제하는 경우 프로젝트, 데이터세트, 보기를 `[PROJECT].[DATASET].[VIEW]`(백틱 포함) 형식으로 지정해야 합니다. 예를 들어 `myproject.mydataset.myview`와 같은 형식입니다.

보기가 있는 경우에만 DDL을 사용하여 보기를 삭제하려면 다음 안내를 따르세요.

웹 UI

  1. BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 쿼리 작성을 클릭합니다.

  3. 새 쿼리 텍스트 영역에 DDL 문을 입력합니다.

     #standardSQL
     DROP VIEW IF EXISTS mydataset.myview
     

  4. 쿼리 실행을 클릭합니다. 쿼리가 완료되면 테이블이 탐색 창에서 삭제됩니다.

명령줄

bq query 명령어를 입력하고 쿼리 매개변수로 DDL 문을 입력합니다.

bq query --use_legacy_sql=false '
DROP VIEW IF EXISTS mydataset.myview'

API

jobs.query 메소드를 호출하고 요청 본문의 query 속성에 DDL 문을 입력합니다.

DDL 기능은 작업 리소스에서 반환된 정보를 확장합니다. statistics.query.statementType에는 DDL 지원을 위한 다음 추가 값이 포함됩니다.

  • CREATE_TABLE
  • CREATE_TABLE_AS_SELECT
  • DROP_TABLE
  • CREATE_VIEW
  • DROP_VIEW

statistics.query에는 두 개의 추가 필드가 있습니다.

  • ddlOperationPerformed: 수행된 DDL 작업으로, DDL 타겟이 있는지에 따라 달라질 수 있습니다. 현재 값에는 다음이 포함됩니다.
    • CREATE: 쿼리가 DDL 타겟을 만들었습니다.
    • SKIP: 작업 없음. 예 — CREATE TABLE IF NOT EXISTS가 제출되었고 테이블이 있습니다. 또는 DROP TABLE IF EXISTS가 제출되었고 테이블이 없습니다.
    • REPLACE: 쿼리가 DDL 타겟을 바꾸었습니다. 예 — CREATE OR REPLACE TABLE이 제출되었고 테이블이 이미 있습니다.
    • DROP: 쿼리가 DDL 타겟을 삭제했습니다.
  • ddlTargetTable: CREATE TABLE/VIEW 문 또는 DROP TABLE/VIEW 문을 제출할 때 타겟 테이블은 3개의 필드가 있는 객체로 반환됩니다.
    • 'projectId': 문자열
    • 'datasetId': 문자열
    • 'tableId': 문자열

개발 중인 기능

개발 중인 다음 기능은 현재 베타 출시 버전에서는 사용할 수 없습니다.

  • DROP TABLE DDL 문을 사용한 후 BigQuery 웹 UI의 테이블 목록 자동 업데이트
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.