데이터 정의 언어 문 사용

데이터 정의 언어(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]
[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은 구조체 필드 이름입니다. 구조체 필드 이름의 제한 사항은 열 이름과 동일합니다.

열 또는 필드에 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 T는 이름이 dataset.newtable인 테이블을 만들며 여기서 xNULLABLE입니다.

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

partition_expression

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을 사용하여 테이블 파티션을 나눕니다.

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시간과 동등합니다.

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

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]

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

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

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

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

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

  • 만료 시간 — 2020년 1월 1일, 00:00:00 UTC
  • 설명 — 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]

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

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

  • corpus — Shakespeare corpus의 이름
  • top_words — 다음 두 필드가 포함된 STRUCTARRAY: word(STRING), word_count(INT64, 단어 수 포함)

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

  • 설명 — Shakespeare corpus 당 최상위 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 문은 데이터세트에 테이블 이름이 없는 경우에만 지정된 옵션으로 테이블을 만듭니다. 데이터세트에 테이블 이름이 있는 경우 오류가 반환되지 않고 아무런 작업도 수행되지 않습니다.

다음 예에서는 mydataset에 이름이 newtable인 테이블이 없는 경우에만 mydataset에 이름이 newtable인 테이블을 만듭니다. 기본 프로젝트를 구성하지 않은 경우 `[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 문은 지정된 옵션을 사용하여 테이블을 만듭니다. 데이터세트에 테이블 이름이 있는 경우 빈 테이블이 테이블을 덮어씁니다.

다음 예에서는 mydataset에 이름이 newtable인 테이블을 만들고, 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 모드로 만들어짐을 지정합니다.

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

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 열을 사용하여 mydataset에 이름이 newtable파티션을 나눈 테이블을 만듭니다. 기본 프로젝트를 구성하지 않은 경우 `[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 열을 사용하여 mydataset에 이름이 days_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': 문자열

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]

다음 예에서는 mydataset에 이름이 newview인 보기를 만듭니다. 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': 문자열

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

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

다음 예에서는 mydataset에 이름이 newview인 보기가 없는 경우에만 mydataset에 이름이 newview인 보기를 만듭니다. 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 문은 지정된 옵션을 사용하여 보기를 만듭니다. 데이터세트에 보기 이름이 있는 경우 지정된 쿼리 표현식을 사용하여 보기를 덮어씁니다.

다음 예에서는 mydataset에 이름이 newview인 보기를 만들고, 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의 테이블 목록 자동 업데이트
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

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

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