以下のクエリは、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 件は次のとおりです。
このクエリでは、パフォーマンス向上のために projection を使用しています。
- Amazon でレビュー数が最も多い商品の上位 10 件は次のとおりです。
- 各商品の月ごとの平均レビュー評価は次のとおりです (実際の Amazon の採用面接問題 です) 。
- 商品カテゴリごとの総投票数は次のとおりです。このクエリが高速なのは、
product_categoryが主キーに含まれているためです。
- レビュー内で “awful” という単語の出現頻度が最も高い商品を探してみましょう。これは大がかりな処理で、1 つの単語を探すために 1 億 5100 万件を超える文字列を解析する必要があります。
runnable
- 今度はレビュー内で awesome を検索する点だけ変えて、同じクエリをもう一度実行します:
runnable