メインコンテンツまでスキップ
メインコンテンツまでスキップ

Amazon お客様のレビュー

このデータセットには、Amazon製品に関する1.5億件以上の顧客レビューが含まれています。データはAWS S3のsnappy圧縮されたParquetファイルにあり、合計サイズは49GB(圧縮後)です。これをClickHouseに挿入する手順を見ていきましょう。

注記

以下のクエリは、Productionインスタンスで実行されました ClickHouse Cloud

データセットの読み込み

  1. データをClickHouseに挿入せずに、インプレースでクエリを実行できます。いくつかの行を取得して、どのような内容か確認しましょう:

行の内容は以下のようになります:

  1. ClickHouseにこのデータを保存するために、新しい MergeTree テーブル amazon_reviews を定義しましょう:
  1. 次の INSERT コマンドは、s3Cluster テーブル関数を使用して、クラスタのすべてのノードで複数のS3ファイルを並行処理します。また、ワイルドカードを使用して、https://datasets-documentation.s3.eu-west-3.amazonaws.com/amazon_reviews/amazon_reviews_*.snappy.parquet で始まる任意のファイルを挿入します:
ヒント

ClickHouse Cloudでは、クラスタの名前は default です。自分のクラスタの名前に default を変更するか、クラスタがない場合は s3 テーブル関数を使用してください(s3Cluster の代わりに)。

  1. このクエリは長くかからず、平均して約300,000行/秒の速度で実行されます。5分以内にすべての行が挿入されるはずです:
  1. データがどれだけのスペースを使用しているか確認してみましょう:

元のデータは約70GBでしたが、ClickHouseでは約30GBに圧縮されています:

例題クエリ

  1. いくつかのクエリを実行してみましょう...データセット内の最も役立つレビュー上位10件を示します:

クエリは151M行すべてを処理する必要がありますが、1秒未満で完了します!

  1. 口コミ数が最も多いAmazonの商品上位10件を示します:
  1. 各商品の月ごとのレビュー評価の平均を示します(実際の Amazonの就職面接質問!):

各商品の月ごとの平均を計算しますが、20行だけを返します:

  1. 各商品カテゴリーごとの投票数の合計を示します。このクエリは product_category が主キーに含まれているため早いです:
  1. レビューで最も頻繁に「awful」と記載された商品を見つけましょう。これは大きなタスクです - 151M文字列を解析して単一の単語を探す必要があります:

クエリはわずか4秒で完了します - インプレッシブですね - 結果は面白い読書です:

  1. 同じクエリを再度実行しますが、今度はレビューで「awesome」を検索します: