테이블 스키마 수동 변경

이 문서에서는 기존 BigQuery 테이블의 스키마 정의를 수동으로 변경하는 방법을 설명합니다. 스키마 변경 작업은 BigQuery에서 기본적으로 지원되지 않는 경우가 많으므로 수동으로 해결해야 합니다. 지원되지 않는 스키마 수정 사항은 다음과 같습니다.

  • 열 이름 변경
  • 열의 데이터 유형 변경
  • 열 모드 변경(REQUIRED 열을 NULLABLE로 완화하는 작업 제외)
  • 열 삭제

BigQuery에서 지원되는 스키마 변경 작업에 대한 자세한 내용은 테이블 스키마 수정을 참조하세요.

열 이름 변경

GCP Console, 기본 BigQuery 웹 UI, 명령줄 도구 또는 API에서는 열 이름 변경이 지원되지 않습니다. 이름이 변경된 열을 사용하여 테이블 스키마를 업데이트하려고 하면 다음과 같은 오류가 반환됩니다. BigQuery error in update operation: Provided Schema does not match Table [PROJECT_ID]:[DATASET].[TABLE].

수동으로 열 이름을 변경하는 방법에는 다음 2가지가 있습니다.

  • SQL 쿼리 사용 - 단순성이나 사용 편의성이 중요하고 비용 문제는 그다지 중요하지 않다면 이 옵션을 선택합니다.
  • 테이블 다시 만들기 - 비용 문제가 중요하고 단순성이나 사용 편의성은 그다지 중요하지 않다면 이 옵션을 선택합니다.

옵션 1: 쿼리 사용

SQL 쿼리를 사용하여 열 이름을 변경하려면 테이블의 모든 열을 선택한 후 이름을 변경해야 하는 열에 별칭을 지정합니다. 그런 다음 쿼리 결과를 사용하여 기존 테이블을 덮어쓰거나 새 대상 테이블을 만들 수 있습니다. 새 이름으로 열에 별칭을 지정할 때는 BigQuery의 열 이름 규칙을 준수해야 합니다.

장점

  • 쿼리를 사용하여 새 대상 테이블에 데이터를 쓰면 원본 데이터가 유지됩니다.
  • 쿼리 작업을 사용하여 원본 테이블을 덮어쓰면 2개의 테이블이 아닌 1개의 테이블에 대해서만 저장용량 비용이 발생하지만 원본 데이터는 잃게 됩니다.

단점

  • 쿼리를 사용하여 열 이름을 변경하려면 전체 테이블을 검색해야 하며, 테이블이 매우 클 경우에는 상당한 쿼리 요금이 발생할 수 있습니다.
  • 쿼리 결과를 새 대상 테이블에 쓰는 경우에는 이전 테이블을 삭제하지 않는 한 이전 테이블과 새 테이블 모두에 저장용량 비용이 발생합니다.

옵션 2: 데이터를 내보낸 후 새 테이블에 로드

또한 테이블 데이터를 Cloud Storage로 내보낸 후 올바른 열 이름이 포함된 스키마 정의를 사용하여 새 테이블에 데이터를 로드하여 열의 이름을 지정할 수도 있습니다. 로드 작업을 통해 기존 테이블을 덮어쓸 수도 있습니다.

장점

  • 내보내기 작업이나 로드 작업에는 요금이 부과되지 않습니다. 현재 BigQuery 로드 및 내보내기 작업은 무료입니다.
  • 로드 작업을 사용하여 원본 테이블을 덮어쓰면 2개의 테이블이 아닌 1개의 테이블에 대해서만 저장용량 비용이 발생하지만 원본 데이터는 잃게 됩니다.

단점

  • 데이터를 새 테이블에 로드하는 경우에는 이전 테이블을 삭제하지 않는 한 원본 테이블과 새 테이블에 관한 저장용량 비용이 발생합니다.
  • 내보낸 데이터를 Cloud Storage에 저장하면 비용이 발생합니다.

열 별칭 예

다음 예에서는 mytable에서 모든 데이터를 선택하되 이름을 변경해야 하는 2개의 열은 제외하는 표준 SQL 쿼리를 설명합니다. 별칭은 이 2개 열의 새 이름을 생성하는 데 사용됩니다. column_one의 이름은 newcolumn_one으로 변경되고 column_two의 이름은 newcolumn_two로 변경됩니다. 쿼리 결과는 기존 테이블을 덮어쓰는 데 사용됩니다.

콘솔

  1. 콘솔 BigQuery 웹 UI에서 쿼리 편집기를 선택합니다.

  2. 쿼리 편집기에서 mydataset.mytable의 모든 데이터를 선택하되 이름을 변경해야 하는 두 열을 제외하는 다음 쿼리를 입력합니다. mydataset.mytable은 기본 프로젝트에 있습니다. 이 쿼리는 별칭을 사용하여 column_one의 이름을 newcolumn_one으로 변경하고 column_two의 이름을 newcolumn_two로 변경합니다.

       #standardSQL
       SELECT
         * EXCEPT(column_one, column_two),
         column_one AS newcolumn_one, column_two AS newcolumn_two
       FROM
         mydataset.mytable
       

  3. 더보기를 클릭하고 쿼리 설정을 선택합니다.

    쿼리 설정

  4. 대상 섹션에서 쿼리 결과의 대상 테이블 설정을 선택합니다.

    대상 테이블 설정

  5. 아래 필드에서 다음 안내를 따릅니다.

    1. 프로젝트 이름에서 기본 프로젝트로 설정된 값을 그대로 둡니다. 이 프로젝트에 mydataset.mytable이 포함되어 있습니다.

    2. 데이터세트 이름mydataset를 선택합니다.

    3. 테이블 이름 필드에 mytable을 입력합니다.

    4. 확인을 클릭합니다.

  6. 대상 테이블 쓰기 환경설정 섹션의 쓰기 환경설정에서 테이블 덮어쓰기를 선택합니다. 그러면 쿼리 결과를 사용하여 mytable을 덮어쓰게 됩니다.

    테이블 덮어쓰기

  7. 처리 위치에서 처리 위치 드롭다운 메뉴를 열고 데이터의 위치를 선택합니다. 데이터가 US 또는 EU 다중 리전 위치에 있는 경우 처리 위치를 자동 선택으로 설정된 상태로 두어도 됩니다. 데이터가 US 또는 EU에 있으면 처리 위치가 자동으로 감지됩니다.

  8. 저장을 클릭하여 설정을 업데이트한 후 쿼리 편집기에서 실행을 클릭합니다. 쿼리 작업이 완료되면 mytable의 열에 새 이름이 지정됩니다.

기본 UI

  1. 기본 BigQuery 웹 UI에서 쿼리 작성을 클릭합니다.

  2. 새 쿼리에서 mydataset.mytable의 모든 데이터를 선택하되 이름을 변경해야 하는 두 열을 제외하는 다음 쿼리를 입력합니다. mydataset.mytable은 기본 프로젝트에 있습니다. 이 쿼리는 별칭을 사용하여 column_one의 이름을 newcolumn_one으로 변경하고 column_two의 이름을 newcolumn_two로 변경합니다.

       #standardSQL
       SELECT
         * EXCEPT(column_one, column_two),
         column_one AS newcolumn_one, column_two AS newcolumn_two
       FROM
         mydataset.mytable
       

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

  4. 대상 테이블 섹션에서 테이블 선택을 클릭합니다.

  5. 대상 테이블 선택 대화상자에서 다음 안내를 따릅니다.

    1. 프로젝트에서 기본 프로젝트로 설정된 값을 그대로 둡니다. 이 프로젝트에 mydataset.mytable이 포함되어 있습니다.

    2. 데이터세트mydataset를 선택합니다.

    3. 테이블 ID 필드에 mytable을 입력합니다.

    4. 확인을 클릭합니다.

  6. 대상 테이블 섹션의 쓰기 환경설정에서 테이블 덮어쓰기를 선택합니다. 그러면 쿼리 결과를 사용하여 mytable을 덮어쓰게 됩니다.

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

  8. 쿼리 실행을 클릭합니다. 쿼리 작업이 완료되면 mytable의 열에 새 이름이 지정됩니다.

CLI

다음과 같은 bq query 명령어를 입력하여 mydataset.mytable에서 이름을 변경해야 하는 2개의 열을 제외한 모든 데이터를 선택합니다. mydataset.mytable은 기본 프로젝트에 있습니다. 이 쿼리는 별칭을 사용하여 column_one의 이름을 newcolumn_one으로 변경하고 column_two의 이름을 newcolumn_two로 변경합니다.

쿼리 결과를 mydataset.mytable에 쓰려면 --destination_table 플래그를 사용하고 mytable을 덮어쓰려면 --replace 플래그를 지정합니다. 표준 SQL 구문을 사용하려면 use_legacy_sql=false 플래그를 지정합니다.

--location 플래그를 지정하고 값을 사용자의 위치로 설정합니다.

bq --location=[LOCATION] query --destination_table mydataset.mytable --replace --use_legacy_sql=false 'SELECT * EXCEPT(column_one, column_two), column_one AS newcolumn_one, column_two AS newcolumn_two FROM mydataset.mytable'

API

column_one의 이름을 newcolumn_one으로 변경하고 column_two의 이름을 newcolumn_two로 변경하려면 jobs.insert 메소드를 호출하고 쿼리 작업을 구성합니다. jobReference 섹션의 location 속성에서 사용자의 리전을 지정합니다.

이 쿼리 작업에 사용되는 SQL 쿼리는 SELECT * EXCEPT(column_one, column_two), column_one AS newcolumn_one, column_two AS newcolumn_two FROM mydataset.mytable입니다. 이 쿼리는 mytable에서 이름을 변경해야 하는 2개의 열을 제외한 모든 데이터를 선택합니다. 별칭은 이 2개 열의 새 이름을 생성하는 데 사용됩니다.

쿼리 결과로 mytable을 덮어쓰려면 configuration.query.destinationTable 속성에 mydataset.mytable을 포함하고 configuration.query.writeDisposition 속성에 WRITE_TRUNCATE를 지정합니다. 새 대상 테이블을 지정하려면 configuration.query.destinationTable 속성에 테이블 이름을 입력합니다.

열의 데이터 유형 변경

GCP Console, 기본 BigQuery 웹 UI, 명령줄 도구 또는 API에서는 열의 데이터 유형을 변경할 수 없습니다. 열의 새 데이터 유형을 지정하는 스키마를 적용하여 테이블을 업데이트하려고 하면 다음 오류가 반환됩니다. BigQuery error in update operation: Provided Schema does not match Table [PROJECT_ID]:[DATASET].[TABLE].

수동으로 열 데이터 유형을 변경하는 방법에는 다음 2가지가 있습니다.

  • SQL 쿼리 사용 - 단순성이나 사용 편의성이 중요하고 비용 문제는 그다지 중요하지 않다면 이 옵션을 선택합니다.
  • 테이블 다시 만들기 - 비용 문제가 중요하고 단순성이나 사용 편의성은 그다지 중요하지 않다면 이 옵션을 선택합니다.

옵션 1: 쿼리 사용

SQL 쿼리를 사용하여 모든 테이블 데이터를 선택한 다음 관련 열을 다른 데이터 유형으로 변환합니다. 그런 다음 쿼리 결과를 사용하여 테이블을 덮어쓰거나 새 대상 테이블을 만들 수 있습니다.

장점

  • 쿼리를 사용하여 새 대상 테이블에 데이터를 쓰면 원본 데이터가 유지됩니다.
  • 쿼리 작업을 사용하여 원본 테이블을 덮어쓰면 2개의 테이블이 아닌 1개의 테이블에 대해서만 저장용량 비용이 발생하지만 원본 데이터는 잃게 됩니다.

단점

  • 쿼리를 사용하여 열의 데이터 유형을 변경하려면 전체 테이블을 검색해야 하며, 테이블이 매우 클 경우에는 상당한 쿼리 요금이 발생할 수 있습니다.
  • 쿼리 결과를 새 대상 테이블에 쓰는 경우에는 이전 테이블을 삭제하지 않는 한 이전 테이블과 새 테이블 모두에 저장용량 비용이 발생합니다.

옵션 2: 데이터를 내보낸 후 새 테이블에 로드

또한 테이블 데이터를 Cloud Storage로 내보낸 후, 열의 올바른 데이터 유형을 지정하는 스키마 정의를 사용하여 새 테이블에 데이터를 로드하는 방식으로 열의 데이터 유형을 변경할 수도 있습니다. 로드 작업을 통해 기존 테이블을 덮어쓸 수도 있습니다.

장점

  • 내보내기 작업이나 로드 작업에는 요금이 부과되지 않습니다. 현재 BigQuery 로드 및 내보내기 작업은 무료입니다.
  • 로드 작업을 사용하여 원본 테이블을 덮어쓰면 2개의 테이블이 아닌 1개의 테이블에 대해서만 저장용량 비용이 발생하지만 원본 데이터는 잃게 됩니다.

단점

  • 데이터를 새 테이블에 로드하는 경우에는 이전 테이블을 삭제하지 않는 한 원본 테이블과 새 테이블에 관한 저장용량 비용이 발생합니다.
  • 내보낸 데이터를 Cloud Storage에 저장하면 비용이 발생합니다.

CAST

다음 예에서는 mydataset.mytable에 있는 column_twocolumn_three에서 모든 데이터를 선택한 다음 column_oneDATE에서 STRING으로 변환하는 표준 SQL 쿼리를 설명합니다. 쿼리 결과는 기존 테이블을 덮어쓰는 데 사용됩니다. 덮어쓴 테이블에는 column_oneSTRING 데이터 유형으로 저장됩니다.

CAST 사용 시 BigQuery가 변환을 수행할 수 없으면 쿼리가 실패할 수 있습니다. 표준 SQL의 변환 규칙에 대한 자세한 내용은 함수 및 연산자 참조 문서의 변환을 참조하세요.

콘솔

  1. 콘솔 BigQuery 웹 UI에서 쿼리 편집기를 선택합니다.

  2. 쿼리 편집기에서 mydataset.mytable에 있는 column_twocolumn_three의 모든 데이터를 선택하고 column_oneDATE에서 STRING으로 변환하는 다음 쿼리를 입력합니다. 이 쿼리는 별칭을 사용하여 column_one을 같은 이름으로 변환합니다. mydataset.mytable은 기본 프로젝트에 있습니다.

       #standardSQL
       SELECT
         column_two, column_three, CAST(column_one AS STRING) AS column_one
       FROM
         mydataset.mytable
       

  3. 더보기를 클릭하고 쿼리 설정을 선택합니다.

  4. 대상 섹션에서 쿼리 결과의 대상 테이블 설정을 선택합니다.

  5. 아래 필드에서 다음 안내를 따릅니다.

    1. 프로젝트 이름에서 기본 프로젝트로 설정된 값을 그대로 둡니다. 이 프로젝트에 mydataset.mytable이 포함되어 있습니다.

    2. 데이터세트 이름mydataset를 선택합니다.

    3. 테이블 이름 필드에 mytable을 입력합니다.

    4. 확인을 클릭합니다.

  6. 대상 테이블 쓰기 환경설정 섹션의 쓰기 환경설정에서 테이블 덮어쓰기를 선택합니다. 그러면 쿼리 결과를 사용하여 mytable을 덮어쓰게 됩니다.

  7. 처리 위치에서 자동 선택을 클릭하고 데이터의 위치를 선택합니다. 데이터가 US 또는 EU 다중 리전 위치에 있는 경우 처리 위치를 자동 선택으로 설정된 상태로 두어도 됩니다. 데이터가 US 또는 EU에 있으면 처리 위치가 자동으로 감지됩니다.

  8. 저장을 클릭하여 설정을 업데이트한 후 쿼리 편집기에서 실행을 클릭합니다. 쿼리 작업이 완료되면 column_one의 데이터 유형이 STRING이 됩니다.

기본 UI

  1. 기본 BigQuery 웹 UI에서 쿼리 작성을 클릭합니다.

  2. 새 쿼리 상자에서 mydataset.mytable에 있는 column_twocolumn_three의 모든 데이터를 선택하고 column_oneDATE에서 STRING으로 변환하는 다음 쿼리를 입력합니다. 이 쿼리는 별칭을 사용하여 column_one을 같은 이름으로 변환합니다. mydataset.mytable은 기본 프로젝트에 있습니다.

       #standardSQL
       SELECT
         column_two, column_three, CAST(column_one AS STRING) AS column_one
       FROM
         mydataset.mytable
       

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

  4. 대상 테이블 섹션에서 테이블 선택을 클릭합니다.

  5. 대상 테이블 선택 대화상자에서 다음 안내를 따릅니다.

    1. 프로젝트에서 기본 프로젝트로 설정된 값을 그대로 둡니다. 이 프로젝트에 mydataset.mytable이 포함되어 있습니다.

    2. 데이터세트mydataset를 선택합니다.

    3. 테이블 ID 필드에 mytable을 입력합니다.

    4. 확인을 클릭합니다.

  6. 대상 테이블 섹션의 쓰기 환경설정에서 테이블 덮어쓰기를 선택합니다. 그러면 쿼리 결과를 사용하여 mytable을 덮어쓰게 됩니다.

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

  8. 쿼리 실행을 클릭합니다. 쿼리 작업이 완료되면 column_one의 데이터 유형이 STRING이 됩니다.

CLI

mydataset.mytable에 있는 column_twocolumn_three의 모든 데이터를 선택하고 column_oneDATE에서 STRING으로 변환하는 다음 bq query 명령어를 입력합니다. 이 쿼리는 별칭을 사용하여 column_one을 같은 이름으로 변환합니다. mydataset.mytable은 기본 프로젝트에 있습니다.

쿼리 결과를 mydataset.mytable에 쓰려면 --destination_table 플래그를 사용하고 mytable을 덮어쓰려면 --replace 플래그를 사용합니다. 표준 SQL 구문을 사용하려면 use_legacy_sql=false 플래그를 지정합니다.

--location 플래그를 지정하고 값을 사용자의 위치로 설정합니다.

bq --location=[LOCATION] query --destination_table mydataset.mytable --replace --use_legacy_sql=false 'SELECT column_two, column_three, CAST(column_one AS STRING) AS column_one FROM mydataset.mytable'

API

mydataset.mytable에 있는 column_twocolumn_three의 모든 데이터를 선택하고 column_oneDATE에서 STRING으로 변환하려면 jobs.insert 메소드를 호출하고 쿼리 작업을 구성합니다. jobReference 섹션의 location 속성에서 사용자의 리전을 지정합니다.

이 쿼리 작업에 사용되는 SQL 쿼리는 SELECT column_two, column_three, CAST(column_one AS STRING) AS column_one FROM mydataset.mytable입니다. 이 쿼리는 별칭을 사용하여 column_one을 같은 이름으로 변환합니다.

쿼리 결과로 mytable을 덮어쓰려면 configuration.query.destinationTable 속성에 mydataset.mytable을 포함하고 configuration.query.writeDisposition 속성에 WRITE_TRUNCATE를 지정합니다.

열 모드 변경

현재 열 모드에 대해 지원되는 수정 작업은 모드를 REQUIRED에서 NULLABLE로 변경하는 것뿐입니다. 열 모드를 REQUIRED에서 NULLABLE로 변경하는 것을 열 완화라고도 합니다. REQUIRED 열을 NULLABLE로 완화하는 자세한 방법은 열 모드 완화를 참조하세요.

열 모드에 대해 지원되지 않는 변경사항을 적용하려고 하면 오류가 반환됩니다. 예를 들어 열 모드를 NULLABLE에서 REPEATED로 변경하려고 하면 다음 오류가 반환됩니다. BigQuery error in update operation: Provided Schema does not match Table [PROJECT_ID]:[DATASET].[TABLE]. Field [FIELD] has changed mode from NULLABLE to REPEATED.

데이터를 내보낸 후 새 테이블에 로드

테이블 데이터를 Cloud Storage로 내보낸 후, 올바른 열 모드를 지정하는 스키마 정의를 사용하여 새 테이블에 데이터를 로드하는 방식으로 열 모드를 수동으로 변경할 수 있습니다. 로드 작업을 통해 기존 테이블을 덮어쓸 수도 있습니다.

장점

  • 내보내기 작업이나 로드 작업에는 요금이 부과되지 않습니다. 현재 BigQuery 로드 및 내보내기 작업은 무료입니다.
  • 로드 작업을 사용하여 원본 테이블을 덮어쓰면 2개의 테이블이 아닌 1개의 테이블에 대해서만 저장용량 비용이 발생하지만 원본 데이터는 잃게 됩니다.

단점

  • 데이터를 새 테이블에 로드하는 경우에는 이전 테이블을 삭제하지 않는 한 원본 테이블과 새 테이블에 관한 저장용량 비용이 발생합니다.
  • 내보낸 데이터를 Cloud Storage에 저장하면 비용이 발생합니다.

테이블 스키마에서 열 삭제

GCP Console, 기본 BigQuery 웹 UI, 명령줄 도구 또는 API에서는 기존 테이블 스키마의 열을 삭제할 수 없습니다. 열을 삭제하는 스키마를 적용하여 테이블을 업데이트하려고 하면 다음 오류가 반환됩니다. BigQuery error in update operation: Provided Schema does not match Table [PROJECT_ID]:[DATASET].[TABLE].

열을 수동으로 삭제하는 방법에는 다음 2가지가 있습니다.

  • SQL 쿼리 사용 - 단순성이나 사용 편의성이 중요하고 비용 문제는 그다지 중요하지 않다면 이 옵션을 선택합니다.
  • 테이블 다시 만들기 - 비용 문제가 중요하고 단순성이나 사용 편의성은 그다지 중요하지 않다면 이 옵션을 선택합니다.

옵션 1: 쿼리 사용

삭제할 열을 제외하는 SELECT * EXCEPT 쿼리와 해당 쿼리 결과를 사용하여 테이블을 덮어쓰거나 새 대상 테이블을 만듭니다.

장점

  • 쿼리를 사용하여 새 대상 테이블에 데이터를 쓰면 원본 데이터가 유지됩니다.
  • 쿼리 작업을 사용하여 원본 테이블을 덮어쓰면 2개의 테이블이 아닌 1개의 테이블에 대해서만 저장용량 비용이 발생하지만 원본 데이터는 잃게 됩니다.

단점

  • 쿼리를 사용하여 열을 삭제하려면 삭제할 열을 제외한 모든 열의 데이터를 검색해야 하며, 테이블이 매우 클 경우에는 상당한 쿼리 요금이 발생할 수 있습니다.
  • 쿼리 결과를 새 대상 테이블에 쓰는 경우에는 이전 테이블을 삭제하지 않는 한 이전 테이블과 새 테이블 모두에 저장용량 비용이 발생합니다.

옵션 2: 데이터를 내보낸 후 새 테이블에 로드

또한 테이블 데이터를 Cloud Storage로 내보내고, 삭제하려는 열에 해당하는 데이터를 삭제한 후 삭제된 열을 포함하지 않는 스키마 정의를 사용하여 새 테이블에 데이터를 로드하는 방식으로 열을 삭제할 수도 있습니다. 로드 작업을 통해 기존 테이블을 덮어쓸 수도 있습니다.

장점

  • 내보내기 작업이나 로드 작업에는 요금이 부과되지 않습니다. 현재 BigQuery 로드 및 내보내기 작업은 무료입니다.
  • 로드 작업을 사용하여 원본 테이블을 덮어쓰면 2개의 테이블이 아닌 1개의 테이블에 대해서만 저장용량 비용이 발생하지만 원본 데이터는 잃게 됩니다.

단점

  • 데이터를 새 테이블에 로드하는 경우에는 이전 테이블을 삭제하지 않는 한 원본 테이블과 새 테이블에 관한 저장용량 비용이 발생합니다.
  • 내보낸 데이터를 Cloud Storage에 저장하면 비용이 발생합니다.

SELECT * EXCEPT

다음 예에서는 mydataset.mytable에서 column_two를 제외한 모든 데이터를 선택하는 표준 SQL 쿼리를 설명합니다. 쿼리 결과는 기존 테이블을 덮어쓰는 데 사용됩니다.

콘솔

  1. 콘솔 BigQuery 웹 UI에서 쿼리 편집기를 선택합니다.

  2. 쿼리 편집기에서 mydataset.mytable의 모든 데이터를 선택하되 column_two를 제외하는 다음 쿼리를 입력합니다. mydataset.mytable은 기본 프로젝트에 있습니다.

       #standardSQL
       SELECT
         * EXCEPT(column_two)
       FROM
         mydataset.mytable
       

  3. 더보기를 클릭하고 쿼리 설정을 선택합니다.

  4. 대상 섹션에서 쿼리 결과의 대상 테이블 설정을 선택합니다.

  5. 아래 필드에서 다음 안내를 따릅니다.

    1. 프로젝트 이름에서 기본 프로젝트로 설정된 값을 그대로 둡니다. 이 프로젝트에 mydataset.mytable이 포함되어 있습니다.

    2. 데이터세트 이름mydataset를 선택합니다.

    3. 테이블 이름 필드에 mytable을 입력합니다.

    4. 확인을 클릭합니다.

  6. 대상 테이블 쓰기 환경설정 섹션의 쓰기 환경설정에서 테이블 덮어쓰기를 선택합니다. 그러면 쿼리 결과를 사용하여 mytable을 덮어쓰게 됩니다.

  7. 처리 위치에서 자동 선택을 클릭하고 데이터의 위치를 선택합니다. 데이터가 US 또는 EU 다중 리전 위치에 있는 경우 처리 위치를 자동 선택으로 설정된 상태로 두어도 됩니다. 데이터가 US 또는 EU에 있으면 처리 위치가 자동으로 감지됩니다.

  8. 저장을 클릭하여 설정을 업데이트한 후 쿼리 편집기에서 실행을 클릭합니다. 쿼리 작업이 완료되면 테이블에 column_two를 제외한 모든 열이 포함됩니다.

기본 UI

  1. 기본 BigQuery 웹 UI에서 쿼리 작성을 클릭합니다.

  2. 새 쿼리 상자에서 mydataset.mytable의 모든 데이터를 선택하되 column_two을 제외하는 다음 쿼리를 입력합니다. mydataset.mytable은 기본 프로젝트에 있습니다.

       #standardSQL
       SELECT
         * EXCEPT(column_two)
       FROM
         mydataset.mytable
       

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

  4. 대상 테이블 섹션에서 테이블 선택을 클릭합니다.

  5. 대상 테이블 선택 대화상자에서 다음 안내를 따릅니다.

    1. 프로젝트에서 기본 프로젝트로 설정된 값을 그대로 둡니다. 이 프로젝트에 mydataset.mytable이 포함되어 있습니다.

    2. 데이터세트mydataset를 선택합니다.

    3. 테이블 ID 필드에 mytable을 입력합니다.

    4. 확인을 클릭합니다.

  6. 대상 테이블 섹션의 쓰기 환경설정에서 테이블 덮어쓰기를 선택합니다. 그러면 쿼리 결과를 사용하여 mytable을 덮어쓰게 됩니다.

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

  8. 쿼리 실행을 클릭합니다. 쿼리 작업이 완료되면 테이블에 column_two를 제외한 모든 열이 포함됩니다.

CLI

다음과 같은 bq query 명령어를 입력하여 mydataset.mytable에서 column_two를 제외한 모든 데이터를 선택합니다. mydataset.mytable은 기본 프로젝트에 있습니다. 쿼리 결과를 mydataset.mytable에 쓰려면 --destination_table 플래그를 사용하고 mytable을 덮어쓰려면 --replace 플래그를 사용합니다. 표준 SQL 구문을 사용하려면 use_legacy_sql=false 플래그를 지정합니다.

--location 플래그를 지정하고 값을 사용자의 위치로 설정합니다.

bq --location=[LOCATION] query --destination_table mydataset.mytable --replace --use_legacy_sql=false 'SELECT * EXCEPT(column_two) FROM mydataset.mytable'

API

mydataset.mytable에서 column_two를 제외한 모든 데이터를 선택하려면 jobs.insert 메소드를 호출하고 쿼리 작업을 구성합니다. jobReference 섹션의 location 속성에서 사용자의 리전을 지정합니다.

이 쿼리 작업에 사용되는 SQL 쿼리는 SELECT * EXCEPT(column_two) FROM mydataset.mytable입니다.

쿼리 결과로 mytable을 덮어쓰려면 configuration.query.destinationTable 속성에 mydataset.mytable을 포함하고 configuration.query.writeDisposition 속성에 WRITE_TRUNCATE를 지정합니다.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

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

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