chDBのPython用インストール
要件
macOSとLinux(x86_64およびARM64)のPython 3.8以降
インストール
使用法
CLIの例:
Pythonファイルの例:
クエリは、任意の サポートされているフォーマット および Dataframe
と Debug
を使用してデータを返すことができます。
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(ユーザー定義関数)デコレーターに関する注意点:
- 関数はステートレスである必要があります。UDFのみがサポートされ、UDAF(ユーザー定義集約関数)はサポートされていません。
- デフォルトの返り値の型はStringです。返り値の型を変更したい場合は、引数として返り値の型を渡すことができます。返り値の型は 以下のいずれか である必要があります。
- 関数はString型の引数を受け取る必要があります。入力はTabSeparatedのため、すべての引数は文字列です。
- 関数は入力の各行に対して呼び出されます。例:
- 関数は純粋なPython関数である必要があります。関数内で使用されるすべてのPythonモジュールをインポートする必要があります。
- 使用されるPythonインタプリタは、スクリプトを実行するために使用されるインタプリタと同じです。
sys.executable
から取得できます。
詳細を参照してください: test_udf.py。
Pythonテーブルエンジン
Pandas DataFrame上のクエリ
Arrowテーブル上のクエリ
chdb.PyReaderクラスのインスタンス上のクエリ
- chdb.PyReaderクラスを継承し、
read
メソッドを実装する必要があります。 read
メソッドは:- 列名
col_names
の最初の次元が列、2番目の次元が行となるリストのリストを返す必要があります。列の順序はread
の最初の引数col_names
と同じであるべきです。 - 読み取るデータがこれ以上ない場合は空のリストを返す必要があります。
- ステートフルでなければならず、カーソルは
read
メソッド内で更新されるべきです。
- 列名
- テーブルのスキーマを返すためにオプションの
get_schema
メソッドを実装できます。プロトタイプはdef get_schema(self) -> List[Tuple[str, str]]:
で、戻り値は列名と列型を含むタプルのリストです。列型は 以下のいずれか であるべきです。
詳細を参照してください: test_query_py.py。
制限事項
- サポートされているカラム型:
pandas.Series
,pyarrow.array
,chdb.PyReader
- サポートされているデータ型: Int, UInt, Float, String, Date, DateTime, Decimal
- Pythonオブジェクト型はStringに変換されます
- Pandas DataFrameのパフォーマンスはすべての中で最も良く、ArrowテーブルはPyReaderより優れています