- Python 3.8 以上
- 仮想環境
- 稼働中の ClickHouse Cloud サービスと 接続情報
- chDB を使って Marimo ノートブックから ClickHouse Cloud に接続する
- リモートのデータセットにクエリを実行し、結果を Pandas DataFrame に変換する
- Marimo で Plotly を使ってデータを可視化する
- 対話的なデータ探索のために、Marimo のリアクティブな実行モデルを活用する
セットアップ
データセットの読み込み
Data sources をクリックし、次に Predefined sample data をクリックします。
UK property price paid data (4GB) のカードで Get started を選択します。
次に Import dataset をクリックします。
ClickHouse は default データベースに pp_complete テーブルを自動的に作成し、2,892 万行の価格データを取り込みます。
認証情報が漏洩する可能性を低減するため、Cloud のユーザー名とパスワードをローカルマシンの環境変数として追加することを推奨します。
ターミナルで次のコマンドを実行し、ユーザー名とパスワードを環境変数として追加します。
認証情報の設定
上記の環境変数は、現在のターミナルセッション中のみ有効です。
永続的に設定するには、シェルの設定ファイルに追加してください。
Marimo のインストール
依存関係のインストール
データの探索
remoteSecure関数を使うと、ClickHouse Cloudから簡単にデータを取得できます。
また、chDBに指示して、このデータをインプロセスでPandas DataFrameとして返すこともできます。これは、データを扱う際の便利で使い慣れた方法です。
ClickHouse Cloud データのクエリ
pandas.DataFrame に変換します:
chdb.query(query, "DataFrame") は指定したクエリを実行し、結果を Pandas DataFrame として出力します。
このクエリでは、ClickHouse Cloud に接続するために remoteSecure 関数を使用しています。
remoteSecure 関数は、次のパラメータを受け取ります。
- 接続文字列
- 使用するデータベース名とテーブル名
- ユーザー名
- パスワード
remoteSecure 関数は、リモートの ClickHouse Cloud サービスに接続し、クエリを実行して結果を返します。
データのサイズによっては、これに数秒かかる場合があります。
この例では、年ごとの平均価格を返し、town='LONDON' で絞り込んでいます。
その後、結果は df という変数に DataFrame として格納されます。
データの可視化
町を対話的に選択する
インタラクティブな箱ひげ図で価格の分布を調べる
まとめ
remoteSecure() 関数を使ってリモートの ClickHouse Cloud データにクエリを実行し、その結果を分析や可視化のために直接 Pandas の DataFrame に変換する方法を紹介しました。
chDB と Marimo のリアクティブな実行モデルにより、データサイエンティストは ClickHouse の強力な SQL 機能を、Pandas や Plotly などの使い慣れた Python ツールと組み合わせて活用できます。さらに、対話型ウィジェットと依存関係の自動追跡によって、探索的分析をより効率的かつ再現性高く進められます。