GCP/Bigquery
[GCP] Bigquery 테이블 생성 with Python
운호(Noah)
2024. 3. 21. 14:56
들어가기 앞서,
- 해당 포스팅에선 Google Cloud의 BigQuery Python 클라이언트 라이브러리를 사용하여 BigQuery에 파티션된 테이블을 생성하는 코드에 대해서 다뤄보겠습니다.
예제 코드
# Google Cloud의 BigQuery 클라이언트 라이브러리를 가져옵니다.
from google.cloud import bigquery
# 사용할 BigQuery 프로젝트의 ID를 설정합니다.
project_id = "your_project_id"
# BigQuery 클라이언트 객체를 생성합니다.
bigquery_client = bigquery.Client(project=project_id)
# 생성할 BigQuery 테이블의 스키마를 정의합니다.
schema = [
bigquery.SchemaField('category_l', 'STRING'),
bigquery.SchemaField('category_m', 'STRING'),
bigquery.SchemaField('category_s', 'STRING'),
bigquery.SchemaField('company_name', 'STRING'),
bigquery.SchemaField('date', 'DATE'),
bigquery.SchemaField('hour', 'INTEGER'),
bigquery.SchemaField('minute', 'INTEGER'),
bigquery.SchemaField('usage', 'FLOAT'),
]
# 대상 데이터셋 ID와 테이블 ID를 지정합니다.
dataset_id = "your_dataset_id"
table_id = "your_table_id"
# 데이터셋 및 테이블 참조를 생성합니다.
table_ref = bigquery_client.dataset(dataset_id).table(table_id)
# 테이블 객체를 생성하고 스키마를 설정합니다.
table = bigquery.Table(table_ref, schema=schema)
# 테이블에 대한 시간 기반 파티션 설정을 추가합니다.
table.time_partitioning = bigquery.TimePartitioning(
type_=bigquery.TimePartitioningType.DAY, # 파티션 유형 설정 (일별)
field='date', # 파티션을 위한 컬럼 지정
require_partition_filter=True # 파티션 필터 필요 여부 설정
)
# 동일한 이름의 테이블이 존재하는 경우 삭제합니다 (선택적).
try:
bigquery_client.delete_table(table)
except Exception as e:
print(e) # 에러 출력
# 테이블을 생성합니다.
create_table_result = bigquery_client.create_table(table)
# 생성 결과를 출력합니다.
print(f"Table {create_table_result.full_table_id} created.")