📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

CREATE FUNCTION



Flight 経由でリモートハンドラーを呼び出す外部関数を作成します(通常は Python またはその他のサービス)。

サポートされる言語

  • リモートサーバーによって決まります(一般的には Python ですが、Flight エンドポイントを実装していれば任意の言語を使用できます)

構文

CREATE [ OR REPLACE ] FUNCTION [ IF NOT EXISTS ] <function_name> AS ( <input_param_types> ) RETURNS <return_type> LANGUAGE <language_name> HANDLER = '<handler_name>' ADDRESS = '<udf_server_address>' [DESC='<description>']
パラメーター説明
<function_name>関数の名前です。
<lambda_expression>関数の動作を定義するラムダ式またはコードスニペットです。
DESC='<description>'UDF の説明です。
<input_param_names>入力パラメーター名の一覧です。カンマで区切ります。
<input_param_types>入力パラメーター型の一覧です。カンマで区切ります。
<return_type>関数の戻り値の型です。
LANGUAGE関数の記述に使用する言語を指定します。使用可能な値: python。
HANDLER = '<handler_name>'関数のハンドラー名を指定します。
ADDRESS = '<udf_server_address>'UDF サーバーのアドレスを指定します。

例

この例では、2 つの整数の最大公約数(GCD)を計算する外部関数について、エンドツーエンドの完全なセットアップを説明します。

ステップ 1: Python UDF サーバーをセットアップする

tidbcloudlake-udf パッケージをインストールします。

pip install tidbcloudlake-udf

次の内容で udf_server.py ファイルを作成します。

from tidbcloudlake_udf import udf, UDFServer @udf( input_types=["INT", "INT"], result_type="INT", skip_null=True, ) def gcd(x: int, y: int) -> int: while y != 0: (x, y) = (y, x % y) return x if __name__ == '__main__': server = UDFServer("0.0.0.0:8815") server.add_function(gcd) server.serve()

サーバーを起動します。

python udf_server.py

ステップ 2: サーバーを公開して許可する

UDF サーバーを gRPC/HTTP2 をサポートする HTTPS で公開し、右上隅の Support をクリックして Submit a request を選択し、サーバーのホスト名をテナントの UDF server allowlist に追加するよう依頼します。それまでは、CREATE FUNCTION は Unallowed UDF server address で失敗します。

ステップ 3: TiDB Cloud Lake で関数を登録する

CREATE FUNCTION gcd AS (INT, INT) RETURNS INT LANGUAGE python HANDLER = 'gcd' ADDRESS = 'https://udf.example.com';

ステップ 4: 関数を呼び出す

SELECT gcd(48, 18); -- Returns: 6 SELECT gcd(100, 75); -- Returns: 25

このページは役に立ちましたか?