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

chDB のインストール

必要条件

macOS および Linux (x86_64 および ARM64) 上の Python 3.8+

インストール

使用法

CLI の例:

Python ファイルの例:

クエリは、任意の サポートされているフォーマットDataframeDebug を使用してデータを返すことができます。

GitHub リポジトリ

プロジェクトの GitHub リポジトリは chdb-io/chdb で見つけることができます。

データ入力

ディスク上およびメモリ内のデータ形式にアクセスするための以下のメソッドが利用可能です。

ファイルクエリ (Parquet, CSV, JSON, Arrow, ORC と 60+ 形式)

SQL を実行し、希望の形式のデータを返すことができます。

Parquet または CSV で操作する

Pandas DataFrame 出力

テーブルクエリ (Pandas DataFrame, Parquet ファイル/バイト, Arrow バイト)

Pandas DataFrame でのクエリ

ステートフルセッションを使用したクエリ

セッションは、クエリの状態を保持します。すべての DDL および DML 状態はディレクトリに保持されます。ディレクトリパスは引数として渡すことができます。渡されない場合、一時ディレクトリが作成されます。

パスが指定されていない場合、セッションオブジェクトが削除されると一時ディレクトリも削除されます。さもなければ、パスが保持されます。

デフォルトのデータベースは _local で、デフォルトのエンジンは Memory であるため、すべてのデータがメモリに保存されます。ディスクにデータを保存したい場合は、別のデータベースを作成する必要があります。

こちらも参照: test_stateful.py.

Python DB-API 2.0 を使用したクエリ

UDF (ユーザー定義関数) を使用したクエリ

chDB Python UDF (ユーザー定義関数) デコレーターについてのいくつかの注意点。

  1. 関数はステートレスである必要があります。UDF のみがサポートされており、UDAF (ユーザー定義集計関数) はサポートされていません。
  2. デフォルトの戻り値の型は String です。戻り値の型を変更したい場合は、引数として戻り値の型を渡すことができます。戻り値の型は 以下のいずれか にする必要があります。
  3. 関数は String 型の引数を取る必要があります。入力が TabSeparated であるため、全ての引数は文字列となります。
  4. 関数は入力の各行に対して呼び出されます。例:
  5. 関数は純粋な Python 関数である必要があります。関数内で使用されるすべての Python モジュールをインポートする必要があります。
  6. 使用される Python インタープリターは、スクリプトを実行するのに使用されるものと同じです。sys.executable から取得できます。

こちらも参照: test_udf.py.

Python テーブルエンジン

Pandas DataFrame でのクエリ

Arrow テーブルでのクエリ

chdb.PyReader クラスインスタンスでのクエリ

  1. chdb.PyReader クラスを継承し、read メソッドを実装する必要があります。
  2. read メソッドは次のようにするべきです:
    1. 列の最初の次元、行の二次元のリストを返すこと。列の順序は最初の引数 col_names と同じである必要があります。
    2. 読み取るデータがもうない場合は空のリストを返すこと。
    3. ステートフルであり、カーソルは read メソッド内で更新される必要があります。
  3. オプションで get_schema メソッドを実装して、テーブルのスキーマを返すことができます。プロトタイプは def get_schema(self) -> List[Tuple[str, str]]: であり、戻り値は各タプルが列名と列型を含むタプルのリストです。列型は 以下のいずれか である必要があります。

こちらも参照: test_query_py.py.

制限事項

  1. サポートされているカラム型: pandas.Series, pyarrow.array, chdb.PyReader
  2. サポートされているデータ型: Int, UInt, Float, String, Date, DateTime, Decimal
  3. Python オブジェクト型は String に変換されます
  4. Pandas DataFrame のパフォーマンスは最高で、Arrow テーブルは PyReader よりも優れています

さらに多くの例については、examplestests を参照してください。