- 仮想環境
- 稼働中の ClickHouse Cloud サービスと 接続情報
- chDB を使用して Jupyter ノートブックから ClickHouse Cloud に接続する
- リモートのデータセットにクエリを実行し、結果を Pandas DataFrame に変換する
- 分析のために Cloud のデータとローカルの CSV ファイルを組み合わせる
- matplotlib を使用してデータを可視化する
セットアップ
Data sources をクリックし、次に Predefined sample data をクリックします。
UK property price paid data (4GB) のカードで Get started を選択します。
次に Import dataset をクリックします。
ClickHouse は default データベースに pp_complete テーブルを自動的に作成し、そのテーブルに 2,892 万行の価格データを取り込みます。
credentials が漏洩するリスクを減らすため、Cloud のユーザー名とパスワードをローカルマシンの環境変数として設定することをおすすめします。
ターミナルで次のコマンドを実行し、ユーザー名とパスワードを環境変数として設定します。
上記の環境変数は、現在のターミナルセッション中のみ有効です。
永続的に設定するには、シェルの設定ファイルに追加してください。
localhost:8888 に Jupyter インターフェイスが表示されます。
新しいノートブックを作成するには、File > New > Notebook をクリックします。
カーネルの選択を求められます。
使用可能な Python カーネルをどれでも選択できます。この例では ipykernel を選択します。
空のセルに、リモートの ClickHouse Cloud インスタンスへの接続に使用する chDB をインストールするため、次のコマンドを入力します。
データの探索
remoteSecure 関数を使うと、ClickHouse Cloud から簡単にデータを取得できます。
また、chDB にこのデータをプロセス内で Pandas の DataFrame として返させることもできます。これは、データを扱ううえで便利でなじみのある方法です。
次のクエリを記述して、ClickHouse Cloud サービスから UK price paid データを取得し、それを pandas.DataFrame に変換してください。
chdb.query(query, "DataFrame") は指定したクエリを実行し、その結果を Pandas の DataFrame としてターミナルに出力します。
このクエリでは、ClickHouse Cloud に接続するために remoteSecure 関数を使用しています。
remoteSecure 関数は、次のパラメータを受け取ります。
- 接続文字列
- 使用するデータベース名とテーブル名
- ユーザー名
- パスワード
remoteSecure 関数はリモートの ClickHouse Cloud サービスに接続し、クエリを実行して結果を返します。
データのサイズによっては、これに数秒かかることがあります。
この例では、年ごとの平均価格を返し、town='LONDON' でフィルタしています。
その後、結果は df という変数に DataFrame として格納されます。
df.head は、返されたデータの先頭数行のみを表示します。
新しいセルで次のコマンドを実行し、カラムの型を確認します。
date は ClickHouse では Date 型ですが、結果として得られる DataFrame では uint16 型になることに注意してください。
chDB は、DataFrame を返す際に最も適切な型を自動的に推論します。
これでデータを使い慣れた形式で扱えるようになったので、ロンドンの不動産価格が時間の経過とともにどのように変化してきたかを見ていきましょう。
新しいセルで、matplotlib を使ってロンドンの時系列と価格のシンプルなグラフを作成するため、次のコマンドを実行します。
file テーブルエンジンを使うと、ローカルマシン上のファイルを直接読み込めます。
新しいセルで、ローカルの .csv ファイルから新しい DataFrame を作成するために、次のコマンドを実行します。
1 回の手順で複数のソースから読み込む
1 回の手順で複数のソースから読み込む
1 回の手順で複数のソースから読み込むこともできます。その場合は、以下のように
JOIN を使ったクエリを使用します。まとめ
remoteSecure() 関数でリモートの ClickHouse Cloud データをクエリし、file() テーブルエンジンでローカルの CSV ファイルを読み込み、その結果を分析や可視化に向けて直接 Pandas DataFrame に変換する方法を示しました。
chDB を使うことで、データサイエンティストは ClickHouse の強力な SQL 機能を、Pandas や matplotlib など使い慣れた Python ツールと組み合わせて活用でき、複数のデータソースを手軽に組み合わせた包括的な分析が可能になります。
ロンドン在住のデータサイエンティストの多くは、しばらく自宅やマンションを購入できそうにないかもしれませんが、少なくとも自分たちを市場から締め出した不動産市場を分析することはできます!