Skip to main content
このデータセットには、Amazon 製品に関する 1 億 5,000 万件超の顧客レビューが含まれています。データは AWS S3 上の snappy 圧縮された Parquet ファイルとして保存されており、圧縮後の合計サイズは 49GB です。
セルフホストの ClickHouse と ClickHouse Cloud のどちらでもお試しいただけます。まだアカウントをお持ちでない場合は、ClickHouse Cloud の無料トライアルを開始できます。
このデータを ClickHouse に挿入する手順を見ていきましょう。

データセットの読み込み

  1. データを ClickHouse に挿入しなくても、その場で直接クエリできます。どのようなデータか確認するために、まずはいくつかの行を取得してみましょう:
行は次のようになります:
  1. このデータをClickHouseに保存するため、amazon_reviews という名前の新しい MergeTree テーブルを定義します。
  1. 次の INSERT コマンドでは s3Cluster テーブル関数を使用します。これにより、S3 ファイルがクラスター内のノードに分散され、並列に読み込まれます。
ClickHouse Cloud ではクラスター名が default であるため、上記のとおりそのまま実行できます。セルフマネージドのサーバーでは、default をご使用のクラスター名に置き換えてください。単一サーバーで運用している場合は、代わりに s3 テーブル関数を使用し、最初の引数を省いて URL を先頭の引数としてください。 URL にワイルドカードを使用して、一致するレビューファイルをすべて挿入します。
  1. このクエリの実行にはそれほど時間はかからず、平均で毎秒約300,000行を処理します。5分ほどで、すべての行が挿入されたことを確認できるはずです。
  1. データがどれくらいの領域を使用しているかを見てみましょう。
元のデータは約70Gでしたが、ClickHouse で圧縮すると約30Gになります。

クエリ例

  1. いくつかクエリを実行してみましょう。データセット内で「参考になった」票が最も多いレビューの上位 10 件は次のとおりです。
このクエリでは、パフォーマンス向上のために projection を使用しています。
  1. Amazon でレビュー数が最も多い商品の上位 10 件は次のとおりです。
  1. 各商品の月ごとの平均レビュー評価は次のとおりです (実際の Amazon の採用面接問題 です) 。
  1. 商品カテゴリごとの総投票数は次のとおりです。このクエリが高速なのは、product_category が主キーに含まれているためです。
  1. レビュー内で “awful” という単語の出現頻度が最も高い商品を探してみましょう。これは大がかりな処理で、1 つの単語を探すために 1 億 5100 万件を超える文字列を解析する必要があります。
runnable
これほど大量のデータに対するクエリ時間に注目してください。結果を読むのもなかなか面白いです!
  1. 今度はレビュー内で awesome を検索する点だけ変えて、同じクエリをもう一度実行します:
runnable