S-JIS[2026-03-06/2026-03-08]

Tsurugi ユーザー定義表値関数

TsurugiSQLのユーザー定義表値関数(UDTF)のメモ。


概要

Tsurugi 1.9.0で、ユーザー定義表値関数(User-Defined Table-valued Function(UDTF))が使えるようになった。

UDTFはユーザー定義関数(UDF)の一種で、ユーザーが関数を定義してselect文から呼び出すことが出来る。

UDFは関数呼び出し1回につき1つの値(スカラー値)しか返せないのに対し、UDTFは複数列・複数行の値を返せる。すなわちテーブルのような形で値を返せる。

TsurugiのUDTFは、UDFと同じくgRPCで定義する(gRPCサーバーを用意する)。
gRPC的には、UDFは単一レスポンス(Unary)なのに対し、UDTFはstreamでメッセージを返す形になる。


UDTFの関数から値を受け取るには、Tsurugi独自のapply演算子を使用する。
UDSFはwhereで呼び出すことも出来るが、UDTFはapplyのみで使用できる)

applyはjoinと似た概念で、戻り値の表がjoin風に結合される。

select foo, f.value1, f.value2
from test
apply my_table_function(foo) as f 

applyにはcross applyとouter applyがある。単なるapplyは「cross apply」と同じ。
UDTFが値を返さない(0行だった)場合、cross applyはその行全体が出力されないのに対し、outer applyはfromの値だけは出力され、UDTFのカラムはNULLになる。


UDFへ行く / SQLへ戻る / Tsurugiへ戻る / 技術メモへ戻る
メールの送信先:ひしだま