안녕하세요, 오늘은 Bigquery의 실행 결과를 GCS로 업데이트하는 내용에 대해서 포스팅해보겠습니다.
GCS의 업로드가 있으면 Bigquery로 스트리밍 하는 예제 혹은 trigger 관련은 정보가 많은데,
반대로 Bigquery의 쿼리 결과를 GCS로 저장해야 되는 경우는 어떻게 저장하면 될까요?
해당 포스팅에서는 위와 같은 두 가지 방안으로 고려하고 진행해 봅니다.
먼저,
1. Bigquery result를 csv 형태로 GCS로 저장하는 내용입니다.
* 여기서 유의할 사항은 uri 타입에 *.csv 형태로 저장해줘야 합니다.
테스팅 시 *-1.csv 형태로 Asterisk 다음에 문자열을 넣어도 반영이 됩니다.
EXPORT DATA
OPTIONS (
uri = 'gs://<버킷명>/*.csv',
format = 'CSV',
overwrite = true,
header = true,
field_delimiter = ';')
AS (
SELECT *
FROM <프로젝트.데이터셋.테이블명>
);
2. Cloud functions를 통한 GCS 업로드입니다.
해당 내용은 Cloud function과 HTTP trigger를 만들어 다음과 같이 설정할 수 있습니다.
main.py에서 다음과 같이 설정할 수 있습니다.
# Imports the BigQuery client library
from google.cloud import bigquery
def hello_world(request):
# Replace these values according to your project
project_name = "프로젝트ID"
bucket_name = "버킷명"
dataset_name = "데이터 세트명"
table_name = "테이블명"
destination_uri = "gs://{}/{}".format(bucket_name, "bq_export.csv.gz")
bq_client = bigquery.Client(project=project_name)
dataset = bq_client.dataset(dataset_name, project=project_name)
table_to_export = dataset.table(table_name)
job_config = bigquery.job.ExtractJobConfig()
job_config.compression = bigquery.Compression.GZIP
extract_job = bq_client.extract_table(
table_to_export,
destination_uri,
# Location must match that of the source table.
location="US",
job_config=job_config,
)
return "Job with ID {} started exporting data from {}.{} to {}".format(extract_job.job_id, dataset_name, table_name, destination_uri)
실행 전에, requirements.txt에 다음의 내용을 추가합니다.
google-cloud-bigquery
이어서, Cloud Scheduler 작업을 만들고 작업 수행 빈도를 설정합니다.
예를 들어, 로 설정하면 0 1 * * 0 일주일에 한 번 매주 일요일 오전 1시에 작업이 실행되며,
다음과 같이 설정하면, */5 * * * * 매 5분마다 작업이 실행됩니다.
해당 내용에 대한 실행 결과는 조만간 첨부하겠습니다!
그럼 오늘 하루도 즐거운 하루 되시기 바랍니다!
감사합니다.
'IT > GCP' 카테고리의 다른 글
[GCP] Cloud Run을 활용한 Palm 2 챗봇 만들기 (0) | 2023.12.31 |
---|---|
[Google Cloud] Generative AI Live + Labs Seoul#1 (115) | 2023.09.24 |
GCP 키 탈취시 조치 사항 (0) | 2022.12.17 |
[Cloud Hero 2-3] 소프트웨어 공급망 보안: Cloud Build와 Cloud Deploy를 통한 컨테이너 앱 배포하기 (0) | 2022.11.24 |
[Cloud Hero 1-4] Running a Node.js Container on GKE (0) | 2022.11.22 |