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

chDBのPython用インストール

要件

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番目の次元が行となるリストのリストを返す必要があります。列の順序はreadの最初の引数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より優れています

さらなる例については examples および tests を参照してください。