S3バケット内のデータをクエリする方法
世界中の多くのデータはAmazon S3バケット内に存在しています。 このガイドでは、chDBを使用してそのデータをクエリする方法を学びます。
セットアップ
まずは仮想環境を作成しましょう:
次に、chDBをインストールします。 バージョン2.0.2以上であることを確認してください:
次に、IPythonをインストールします:
ガイドの残りの部分ではコマンドを実行するためにipython
を使用します。次のように実行して起動できます:
Pythonスクリプトやお気に入りのノートブックでコードを使うこともできます。
S3バケット内のファイルのリストを取得する
まずは、Amazonレビューを含むS3バケット内のすべてのファイルをリストアップします。
これを行うために、s3
テーブル関数を使用し、ファイルのパスまたはファイルセットのワイルドカードを渡すことができます。
バケット名だけを渡すと例外が発生します。
また、One
という入力フォーマットを使用して、ファイルを解析せず、ファイルごとに単一の行を返し、_file
仮想カラムを通じてファイルにアクセスし、_path
仮想カラムを通じてパスにアクセスできるようにします。
このバケットにはParquetファイルのみが含まれています。
S3バケット内のファイルをクエリする
次に、これらのファイルをクエリする方法を学びましょう。 各ファイルの行数をカウントする場合、以下のクエリを実行します:
HTTP URIをS3バケットに渡すと、同じ結果が得られます:
DESCRIBE
句を使ってこれらのParquetファイルのスキーマを確認してみましょう:
レビュー数に基づいて主要な製品カテゴリを計算し、平均星評価を計算してみましょう:
プライベートS3バケット内のファイルをクエリする
プライベートS3バケット内のファイルをクエリする場合、アクセスキーとシークレットを渡す必要があります。
これらの認証情報をs3
テーブル関数に渡すことができます:
このクエリは、パブリックバケットなので動作しません!
別の方法として、名前付きコレクションを使用することができますが、このアプローチはchDBではまだサポートされていません。