このガイドでは、chDBのPython版をすぐに使い始める方法を紹介します。
まずはS3上のJSONファイルに対してクエリを実行し、次にそのJSONファイルをもとにchDBでテーブルを作成して、データに対していくつかのクエリを実行します。
また、Apache ArrowやPandasを含むさまざまなフォーマットでクエリ結果を返す方法を確認し、最後にPandas DataFrameに対してクエリを実行する方法を学びます。
まず、仮想環境を作成します。
それでは、chDB をインストールしましょう。
バージョン 2.0.3 以降であることを確認してください。
それでは、ipython をインストールしましょう。
このガイドの以降では、コマンドの実行に ipython を使用します。起動するには、次を実行します。
このガイドでは Pandas と Apache Arrow も使用するので、これらのライブラリもインストールしましょう。
それでは、S3 バケットに保存されている JSON ファイルに対してクエリを実行する方法を見ていきましょう。
YouTube dislikes dataset には、2021 年までの YouTube 動画の低評価データが 40 億行以上含まれています。
このデータセットに含まれる JSON ファイルの 1 つを使います。
chdb をインポートします:
次のクエリを使用すると、JSONファイルの1つの構造を確認できます。
そのファイル内の行数を数えることもできます。
このファイルには30万件を少し超えるレコードが含まれています。
chdb ではまだクエリパラメータの受け渡しがサポートされていませんが、パスを取り出して f-String 経由で渡すことができます。
これはプログラム内で定義した変数に対して行うのであれば問題ありませんが、ユーザー入力に対しては行わないでください。そうしないと、クエリがSQLインジェクションの対象になります。
デフォルトの出力フォーマットは CSV ですが、output_format パラメーターで変更できます。
chDB は ClickHouse のデータフォーマットに加えて、独自のフォーマットもいくつかサポートしており、その中には Pandas の DataFrame を返す DataFrame も含まれます。
あるいは、Apache Arrowテーブルとして取得する場合:
次に、chDBでテーブルを作成する方法を見ていきましょう。
これには別のAPIを使う必要があるため、まずそれをインポートします。
次に、セッションを初期化します。
セッションをディスクに永続化する場合は、ディレクトリ名を指定する必要があります。
空のままにすると、データベースはメモリ上にのみ保持され、Python プロセスを終了した時点で失われます。
次に、データベースを作成します:
これで、CREATE...EMPTY AS を使って、JSONファイルのスキーマに基づく dislikes テーブルを作成できます。
すべてのカラムの型が Nullable にならないよう、schema_inference_make_columns_nullable 設定を使用します。
次に、DESCRIBE 句を使用してスキーマを確認できます:
次に、そのテーブルにデータを挿入します。
CREATE...AS 手法を使えば、これら2つの手順をまとめて一度に実行することもできます。
その手法を使って、別のテーブルを作成してみましょう。
最後に、テーブルにクエリを実行してみましょう。
次に、likes と dislikes の比率を計算するため、DataFrame にカラムを 1 つ追加するとします。
その場合、次のようなコードを書けます。
続いて、chDB からそのDataFrameに対してクエリを実行できます。
Pandas DataFrame へのクエリについて詳しくは、Pandas DataFrame へのクエリに関する開発者ガイドもご覧ください。
このガイドで、chDB の概要を把握できたなら幸いです。
使い方についてさらに詳しく知るには、以下の開発者向けガイドを参照してください。