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

chDBの始め方

このガイドでは、chDBのPythonバリアントでの立ち上げ方を説明します。 まず、S3上のJSONファイルをクエリし、その後、JSONファイルに基づいてchDBにテーブルを作成し、データに対していくつかのクエリを実行します。 クエリの結果をApache ArrowやPandasなどの異なるフォーマットで返す方法も見ていき、最終的にはPandas DataFrameをクエリする方法を学びます。

セットアップ

最初に仮想環境を作成しましょう:

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

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

今後のガイドでコマンドを実行するためにipythonを使用するので、次のコマンドで起動できます:

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

S3内のJSONファイルのクエリ

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

chdbをインポートします:

以下のクエリを書くことで、JSONファイルの構造を記述できます:

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

このファイルには30万以上のレコードが含まれています。

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

危険

プログラム内で定義された変数に対してはこの方法は問題ありませんが、ユーザー提供の入力で行わないでください。そうしないとSQLインジェクションの危険性があります。

出力形式の設定

デフォルトの出力形式はCSVですが、output_formatパラメータを使って変更できます。 chDBはClickHouseのデータ形式をサポートしており、独自の形式もいくつかサポートしています。例えば、Pandas DataFrameを返すDataFrame形式があります:

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

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

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

次に、セッションを初期化します。 セッションをディスクに持続させたい場合は、ディレクトリ名を提供する必要があります。 何も指定しなければ、データベースはメモリ内に置かれ、Pythonプロセスを終了すると失われます。

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

これで、JSONファイルのスキーマに基づいてdislikesテーブルを作成できます。CREATE...EMPTY ASテクニックを使用します。 すべてのカラム型をNullableにしないために、schema_inference_make_columns_nullable設定を使用します。

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

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

これらのステップを一回で行うこともでき、CREATE...ASテクニックを使用します。 その技術を使って異なるテーブルを作成しましょう:

テーブルのクエリ

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

次に、DataFrameに「いいね」と「嫌い」の比率を計算するために追加のカラムを加えたとしましょう。 次のコードを書きます:

Pandas DataFrameのクエリ

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

Pandas DataFramesをクエリする方法については、Pandasをクエリする開発者ガイドでも詳しく読むことができます。

次のステップ

このガイドがchDBの概要を理解する助けになれば幸いです。 chDBの使い方について詳しく学ぶには、以下の開発者ガイドをご覧ください: