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>']
例
この例では、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