- SQL を使用する
- UI と独自のコードを使用する (公開ベータ)
SQL ユーザー定義関数
CREATE FUNCTION ステートメントで作成できます。
この例では、シンプルな実行可能ユーザー定義関数 isBusinessHours を作成します。
この関数は、特定のタイムスタンプが通常の営業時間内かどうかを確認し、該当すれば true、そうでなければ false を返します。
- Cloud Console にログインし、SQL コンソールを開きます
- 次の SQL クエリを入力して
isBusinessHours関数を作成します:
- 新しく作成したUDFをテストするには、以下を実行します。
DROP FUNCTIONコマンドを使って、先ほど作成した UDF を削除できます。
- セッションレベルの設定 (
SETステートメントで設定したもの) は、UDF の実行コンテキストには引き継がれません - ユーザープロファイルの設定は UDFs に継承されません
- クエリレベルの設定は UDF の実行中には適用されません
UI で作成するユーザー定義関数
timestamp が通常の営業時間内かどうかを判定する、前回と同じシンプルな実行可能ユーザー定義関数 isBusinessHours を作成します。
前回は SQL を使って作成しましたが、今回は Python で実装し、UI から設定します。
Python ファイルを作成する
ローカルで新しいファイルmain.py を作成します。requirements.txt ファイルを作成する必要があります。たとえば、次のようになります。ClickHouse Cloud では、次の手順で UI からアップロードする zip ファイル内に
main.py が含まれていることを想定しています。
別のファイル名にすると、エラーが発生します。依存関係パッケージとローカルファイルをまとめる
依存関係パッケージや追加のローカルファイル (wheel ファイル、設定ファイル、データファイルなど) を含めるには、main.py と requirements.txt と同じディレクトリに配置します。ZIP アーカイブを作成する際は、すべてのファイルを含めてください。os.path.dirname(os.path.abspath(__file__)) を使って、ローカルにバンドルされた path のベース directory を参照できます。これにより、ZIP アーカイブ内で main.py が配置されている directory の絶対 path が返され、バンドルされたほかのファイルにアクセスできるようになります。- UDF に含まれている構成ファイルにアクセスする
- カスタム依存関係の wheel パッケージを読み込む
- 追加のスクリプトやデータファイルを参照する
UI で UDF を作成する
- Cloud コンソールのホームページで、左下のメニューにある組織名をクリックします。
- メニューから ユーザー定義関数 を選択します。
- ユーザー定義関数ページで UDF を設定 をクリックします。画面右側に設定パネルが開きます。
- 関数名を入力します。この例では
isBusinessHoursを使用します。 - 関数タイプとして Executable pool または Executable を選択します。
- Executable pool: 永続的なプロセスのプールが維持され、読み取り時にはそのプールからプロセスが割り当てられます。
- Executable: スクリプトはクエリごとに実行されます。
- この例では、デフォルト設定を使用します。設定パラメーターの一覧については、Executable user-defined functions を参照してください。
- ファイルを参照 をクリックして、このチュートリアルの冒頭で作成した
.zipファイルをアップロードします。 - 新しい引数を追加します。この例では、型
DateTimeの引数timestampを追加します。 - 戻り値の型を選択します。この例では
Boolを選択します。 - UDF を作成 をクリックします。現在のビルドステータスを示すダイアログが表示されます。
- 問題がある場合、ステータスは error に変わります。
- 問題がなければ、ステータスは building から provisioning に進みます。プロビジョニングを完了するには、サービスが稼働中である必要があります。サービスがアイドル状態の場合は、サービス名の横にある UDF details パネルで Wake Up Service をクリックします。
- 完了すると、ステータスは deployed に変わります。
UDFをテストする
- ページ左上の Settings - return to your service view をクリックして、SQL Console のホーム画面に戻ります
- 左側のメニューで SQL Console をクリックします
- 次のクエリを入力します:
新しいバージョンを作成する
- Cloud Console のホーム画面で、左下のメニューにある組織名をクリックします。
- メニューから User-defined functions を選択します。
isBusinessHoursUDF の Actions にある 3 点メニューを選択し、Create new version をクリックします- 変更したコードを含む zip をアップロードするか、設定を変更してから Create new version をクリックします