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

chDBの使い方

このガイドでは、chDBのPythonバリアントを使用して設定を行います。 まず、S3に保存されたJSONファイルをクエリしてから、そのJSONファイルに基づいてchDBにテーブルを作成し、データに対していくつかのクエリを実行します。 また、クエリがApache ArrowやPandaを含むさまざまな形式でデータを返す方法を見て、最後にPandas DataFramesをクエリする方法を学びます。

セットアップ

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

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

次に、ipythonをインストールします:

このガイドの残りのコマンドを実行するためにipythonを使用する予定です。次のコマンドを実行して起動できます:

このガイドではPandasとApache Arrowも使用するので、これらのライブラリもインストールしましょう:

S3内のJSONファイルをクエリする

次に、S3バケットに保存されているJSONファイルをどのようにクエリするかを見ていきます。 YouTubeの嫌いなデータセットには、2021年までのYouTube動画の嫌いの数が40億行以上含まれています。 そのデータセットからのJSONファイルの1つを使用します。

chdbをインポートします:

次に、JSONファイルの構造を記述するクエリを次のように書くことができます:

そのファイル内の行数をカウントすることもできます:

このファイルにはちょうど300,000件を超えるレコードが含まれています。

chdbはまだクエリパラメータを渡すことをサポートしていませんが、パスを抽出してf-Stringを介して渡すことができます。

危険

プログラム内で定義された変数を使うのは問題ありませんが、ユーザー提供の入力に対しては行わないでください。そうしないと、クエリがSQLインジェクション攻撃を受ける可能性があります。

出力形式の設定

デフォルトの出力形式はCSVですが、output_formatパラメーターを介して変更できます。 chDBはClickHouseのデータ形式をサポートしており、独自の形式もいくつか用意しています。その中には、Pandas DataFrameを返すDataFrameという形式もあります:

また、Apache Arrowテーブルを得たい場合は次のようにします:

JSONファイルからテーブルを作成する

次に、chDBにテーブルを作成する方法を見ていきましょう。 このために異なるAPIを使用する必要があるので、まずそれをインポートします:

次に、セッションを初期化します。 セッションをディスクに保持する場合は、ディレクトリ名を提供する必要があります。 空白のままにすると、データベースはメモリ内に留まることになり、Pythonプロセスが終了すると失われます。

次に、データベースを作成します:

次に、CREATE...EMPTY AS技法を使用して、JSONファイルからのスキーマに基づいてdislikesテーブルを作成します。 すべてのカラムタイプをNullableにしないために、schema_inference_make_columns_nullable設定を使用します。

次に、DESCRIBE句を使用してスキーマを確認します:

次に、そのテーブルにデータを挿入します:

これらの手順を1回で実行するために、CREATE...AS技法を使うこともできます。 その技法を使用して別のテーブルを作成しましょう:

テーブルをクエリする

最後に、テーブルをクエリしてみましょう:

データフレームに「いいね」と「嫌い」の比率を計算するために追加のカラムを加えるとします。 次のように書くことができます:

Pandas DataFrameをクエリする

その後、chDBからそのDataFrameをクエリできます:

Pandas DataFramesのクエリに関しては、Pandasをクエリする開発者ガイドでさらに詳しく読むことができます。

次のステップ

このガイドがchDBの概要を把握するのに役立ったことを願っています。 使用方法の詳細については、以下の開発者ガイドを参照してください: