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

S3 バケット内のデータのクエリ方法

A lot of the world's data lives in Amazon S3 buckets.
このガイドでは、chDBを使用してそのデータをクエリする方法を学びます。

Setup

まずは仮想環境を作成しましょう:

次にchDBをインストールします。
バージョン2.0.2以上であることを確認してください:

続いてIPythonをインストールします:

ipythonを使って、ガイドの残りのコマンドを実行します。
以下のコマンドでipythonを起動できます:

または、Pythonスクリプトやお好みのノートブックでもこのコードを使用できます。

Listing files in an S3 bucket

最初に、Amazonレビューを含むS3バケットの全ファイルをリストアップしましょう。
これを行うには、s3テーブル関数を使用し、ファイルへのパスまたはワイルドカードを渡します。

ヒント

バケット名のみを渡すと、例外が発生します。

また、One入力フォーマットを使用して、ファイルが解析されず、ファイルごとに1行が返され、_file仮想カラムと_path仮想カラム経由でファイルやパスにアクセスできるようにします。

このバケットには、Parquetファイルのみが含まれています。

Querying files in an S3 bucket

次に、これらのファイルをクエリする方法を学びましょう。
これらのファイルの各行数を数えたい場合、以下のクエリを実行できます:

S3バケットのHTTP URIを渡すことでも同じ結果が得られます:

DESCRIBE句を使用してこれらのParquetファイルのスキーマを確認しましょう:

今、レビュー数に基づいてトップの製品カテゴリを計算し、平均星評価を計算しましょう:

Querying files in a private S3 bucket

プライベートS3バケットのファイルをクエリする場合、アクセスキーとシークレットを渡す必要があります。
これらの認証情報をs3テーブル関数に渡すことができます:

注記

このクエリは公開バケットのため、動作しません!

別の方法は、名前付きコレクションを使用することですが、このアプローチはまだchDBによってサポートされていません。