인프런 커뮤니티 질문&답변

jenna님의 프로필 이미지
jenna

작성한 질문수

BigQuery(SQL) 활용편(퍼널 분석, 리텐션 분석)

1-2. 프로젝트 소개 및 데이터 불러오기

1-2. 데이터 불러오기 질문

해결된 질문

작성

·

56

0

app_logs_temp 테이블 생성할 때 바로 event_date로 파티션 설정할 수 없을까요?

app_logs 테이블 생성할 때 쿼리 이해가 잘 되지 않아요, 설정에서 테이블 만들기와의 차이점이 무엇인가요?

답변 2

1

카일스쿨님의 프로필 이미지
카일스쿨
지식공유자

jenna님 안녕하세요.

말씀하신 것처럼 테이블 생성할 때 바로 생성되록 하면 좋은데, 제가 ORC 파일을 제작할 때 파티션 정보를 넣지 않아 추가하기 어려워요

또는 Google Cloud Storage에 데이터를 저장하고 bq load를 사용해서 파티션을 강제로 지정하는 것도 가능할 것 같은데 데이터를 Load하기 위해 Google Cloud Storage까지 알려드리면 환경 설정의 난이도가 높아진다고 판단해서 강의에서 만든 것처럼 진행했어요. (Cloud Storage로 알려드려야 하고 터미널에서 bq load라는 것을 입력하게 해야하는데 개발 환경 설정이 너무 어려워진다 판단했어요)

bq load의 예시

bq load \
--source_format=ORC \
--time_partitioning_field=date_column \
dataset.table \
gs://bucket/path/to/file.orc

 

app_logs 테이블을 생성할 때 쿼리는 app_logs_temp에 있는 데이터를 모두 가지고 와서 CREATE TABLE(테이블을 생성)하면서 event_date를 파티션 설정하는 것입니다. 설정에서 테이블 만들기는 접근하기 쉬운 UX이지만 이미 생성된 데이터를 가지고 파티션을 설정할 수 없어 SQL 쿼리로 진행했어요.

CREATE TABLE advanced.app_logs 
PARTITION BY event_date
AS
SELECT 
  *
FROM advanced.app_logs_temp 

 

이런 쿼리를 DML 쿼리로 분류하는데 데이터 분석을 위해 꼭 필요한 문법은 아니라고 생각해서 쿼리만 제공드렸어요. DML 쿼리로 가능한 것들 중 편의를 위해 웹 콘솔에서 GUI로 할 수 있도록 제공한다고 생각해주시면 될 것 같아요.

 

DML 쿼리에 대한 내용은 아래 웹페이지에 간단히 정리해두었어요.

https://zzsza.github.io/bigquery/advanced/dml.html

0

안녕하세요, 인프런 AI 인턴입니다. jenna님께서 빅쿼리 테이블 생성과 파티셔닝에 관해 질문을 주셨네요.

빅쿼리에서 테이블을 생성할 때 event_date로 직접 파티션을 설정하는 방법이 가능하지만, 이를 위해서는 몇 가지 설정이 필요합니다. 보통 테이블 생성 시에 파티션을 설정하려면 다음과 같은 SQL 문을 사용합니다:

CREATE TABLE dataset_name.app_logs_temp
PARTITION BY DATE(event_date)
AS SELECT * FROM source_table;

이렇게 PARTITION BY 절을 사용하여 테이블을 생성하면서 동시에 파티션을 설정할 수 있습니다. 중요한 점은 파티션 키로 사용할 수 있는 필드는 DATE 타입이어야 하며, 이 필드가 테이블의 각 레코드에 존재해야 합니다.

이와 관련하여 파티셔닝 시, 데이터 크기가 0B가 됩니다!라는 게시물에서 비슷한 문제가 논의된 바 있으니 확인해 보시면 도움이 될 것입니다.

설정에서 테이블을 만들 때와 SQL 쿼리를 사용해 테이블을 생성할 때의 차이점은 설정 인터페이스를 사용하면 클릭 몇 번으로 쉽게 테이블을 생성할 수 있지만, SQL 쿼리를 사용하면 더 유연하게 세부 옵션(예: 파티션 키 설정, 클러스터링 등)을 설정할 수 있다는 점입니다. SQL을 활용하면 한 번 작성한 쿼리를 통해 여러 번 반복 사용하거나 자동화할 수 있는 장점도 있습니다.

파티션 설정과 테이블 생성에 대해 더 궁금한 점이 있다면, BigQuery에 대한 구체적인 사례와 설명이 제공된 링크를 따라가셔서 추가 정보를 살펴보세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

jenna님의 프로필 이미지
jenna

작성한 질문수

질문하기