DML을 사용하여 테이블 데이터 업데이트

이 페이지에서는 DML을 사용한 BigQuery 테이블 데이터 업데이트 및 삭제에 대해 살펴봅니다. 이 페이지에서는 DML을 사용하여 기존 테이블에 행을 추가하는 방법은 다루지 않습니다. DML을 사용하여 행을 추가하는 방법에 관한 자세한 내용은 DML 구문 참조의 INSERT을 참조하세요.

BigQuery의 DML에는 몇 가지 제한사항알려진 문제가 있습니다. 또한 DML에는 자체 할당량가격이 적용됩니다.

데이터 업데이트

샘플 파일을 사용하여 아래 안내를 따르세요. 이 파일은 익명처리를 위해 마스킹하고자 하는 IP 주소 열이 있는 테이블을 나타냅니다.

다음 단계에서는 샘플 데이터를 테이블에 로드하고 ip_address 열의 값을 업데이트합니다.

1단계: UserSessions 테이블에 JSON 파일을 로드합니다.

2단계: 모든 행의 ip_address 열에서 마지막 옥텟을 마스킹하려면 다음 DML 쿼리를 실행합니다.

#standardSQL
UPDATE sample_db.UserSessions
SET ip_address = REGEXP_REPLACE(ip_address, r"(\.[0-9]+)$", ".0")
WHERE TRUE

데이터 삭제

샘플 파일을 사용하여 아래 안내를 따르세요. 이 파일은 사용자 세션에 대한 여러 분석 테이블과 삭제할 사용자 테이블이 있는 데이터세트를 나타냅니다.

다음 단계에서는 데이터를 3개의 테이블에 로드한 다음 DeletedUsers 테이블에 나열된 사용자를 삭제합니다.

1단계: JSON 파일을 DeletedUsers, Users, UserSessions 테이블에 각각 로드합니다.

콘솔

  1. GCP Console을 엽니다.
  2. 리소스 목록에서 데이터세트를 선택합니다.
  3. 테이블 만들기를 클릭합니다.

    테이블 만들기

  4. 다음 항목으로 테이블 만들기에서 업로드를 선택합니다.

    테이블 소스 만들기

  5. 파일 선택에서 다운로드한 파일을 찾아서 선택합니다.

    파일 찾아보기

  6. 파일 형식에서 JSON(줄바꿈으로 구분)을 선택합니다.

  7. 적합한 테이블 이름을 선택합니다.

  8. 스키마 아래에서 필드 추가를 클릭하고 테이블 각 열의 이름을 입력하고 적절한 유형을 선택합니다.

    • 필드 추가를 클릭하고 테이블에 모든 열을 입력할 때까지 반복합니다.
  9. 테이블 만들기를 클릭합니다.

샘플 테이블의 스키마는 다음과 같습니다.

  • DeletedUsers
    • 이름 id, 유형 INTEGER
  • Users
    • 이름 id, 유형 INTEGER
    • 이름 date_joined, 유형 TIMESTAMP
  • UserSessions
    • 이름 id, 유형 STRING
    • 이름 user_id, 유형 INTEGER
    • 이름 login_time, 유형 TIMESTAMP
    • 이름 logout_time, 유형 TIMESTAMP
    • 이름 ip_address, 유형 STRING

기본 UI

  1. BigQuery 웹 UI를 엽니다.
  2. 데이터세트 ID 위로 마우스를 가져갑니다.
  3. 데이터세트 ID 옆의 화살표(데이터세트 이름 옆의 화살표)를 클릭합니다.
  4. 새 테이블 만들기를 클릭합니다.
  5. 위치에서 파일 업로드를 선택합니다.
  6. 파일 형식에서 JSON(줄바꿈으로 구분)을 선택합니다.
  7. 테이블 이름을 선택합니다.
  8. 스키마 아래에서 테이블 각 열의 이름을 입력하고 적절한 유형을 선택합니다.

    • 필드 추가를 클릭하고 테이블에 모든 열을 입력할 때까지 반복합니다.
  9. 테이블 만들기를 클릭합니다.

샘플 테이블의 스키마는 다음과 같습니다.

  • DeletedUsers
    • 이름 id, 유형 INTEGER
  • Users
    • 이름 id, 유형 INTEGER
    • 이름 date_joined, 유형 TIMESTAMP
  • UserSessions
    • 이름 id, 유형 STRING
    • 이름 user_id, 유형 INTEGER
    • 이름 login_time, 유형 TIMESTAMP
    • 이름 logout_time, 유형 TIMESTAMP
    • 이름 ip_address, 유형 STRING

명령줄

bq 명령줄 도구를 사용하여 테이블을 만들려면 bq load 명령어를 사용합니다. --location 플래그를 제공하고 값을 사용자의 위치로 설정합니다. --location 플래그는 선택사항입니다. 예를 들어 asia-northeast1(도쿄) 리전에서 BigQuery를 사용하는 경우 로드 명령어는 다음과 같습니다.

bq --location=asia-northeast1 load ...

DeleteUsers 테이블을 만들려면 다음을 사용하세요.

bq --location=asia-northeast1 load --source_format=NEWLINE_DELIMITED_JSON \
    sample_db.DeletedUsers \
    deletedUsersData.json \
    id:integer

Users 테이블을 만들려면 다음을 사용하세요.

bq --location=asia-northeast1 load --source_format=NEWLINE_DELIMITED_JSON \
    sample_db.Users \
    usersData.json \
    id:integer,date_joined:timestamp

UserSessions 테이블을 만들려면 다음을 사용하세요.

bq --location=asia-northeast1 load --source_format=NEWLINE_DELIMITED_JSON \
    sample_db.UserSessions \
    userSessionsData.json \
    id:string,user_id:integer,login_time:timestamp,logout_time:timestamp,ip_address:string

2단계: DeletedUsers 테이블의 사용자에 대한 정보를 삭제합니다. 다음 DML 쿼리를 실행합니다.

  • UsersSessions에서 삭제

    #standardSQL
    DELETE FROM sample_db.UserSessions
    WHERE user_id in (SELECT id from sample_db.DeletedUsers)
    
  • Users에서 삭제

    #standardSQL
    DELETE FROM sample_db.Users
    WHERE id in (SELECT id from sample_db.DeletedUsers)
    

다음 단계

  • DML 참조 페이지를 참조하세요.
  • DML 구문 페이지에서 DML 구문 및 샘플을 참조하세요.
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

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

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