아래 쿼리는 ClickHouse Cloud의 Production 인스턴스에서 실행되었습니다. 자세한 내용은
“Playground 사양”을 참조하십시오.
데이터셋 불러오기
- 데이터를 ClickHouse에 삽입하지 않고도 원본 위치에서 바로 쿼리할 수 있습니다. 어떤 모습인지 확인할 수 있도록 몇 개의 행을 가져오겠습니다:
- ClickHouse에 이 데이터를 저장할
amazon_reviews라는 이름의 새MergeTree테이블을 정의하겠습니다:
- 다음
INSERT명령은s3Cluster테이블 함수를 사용하며, 이를 통해 클러스터의 모든 노드를 활용해 여러 S3 파일을 병렬로 처리할 수 있습니다. 또한https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_*.snappy.parquet로 시작하는 모든 파일을 삽입하기 위해 와일드카드를 사용합니다:
- 이 쿼리는 오래 걸리지 않으며, 평균적으로 초당 약 300,000행을 처리합니다. 5분 정도 지나면 모든 행이 삽입된 것을 확인할 수 있습니다:
- 데이터가 얼마나 많은 공간을 사용하고 있는지 확인해 보겠습니다:
예시 쿼리
- 몇 가지 쿼리를 실행해 보겠습니다. 다음은 데이터셋에서 가장 유용하다고 평가된 리뷰 상위 10개입니다:
이 쿼리는 성능 향상을 위해 프로젝션을 사용합니다.
- 다음은 Amazon에서 리뷰 수가 가장 많은 제품 상위 10개입니다:
- 다음은 각 제품의 월별 평균 리뷰 평점입니다(실제 Amazon 면접 질문입니다!):
- 다음은 제품 카테고리별 총 투표 수입니다.
product_category가 프라이머리 키(primary key)에 포함되어 있으므로 이 쿼리는 빠르게 실행됩니다:
- 이제 리뷰에서 “awful” 이라는 단어가 가장 자주 등장하는 제품을 찾아보겠습니다. 이는 상당히 큰 작업입니다. 단어 하나를 찾기 위해 1억 5,100만 개가 넘는 문자열을 파싱해야 합니다:
runnable
- 이번에는 리뷰에서 awesome을 검색하는 것만 빼고, 동일한 쿼리를 다시 실행할 수 있습니다:
runnable