可変引数
可変引数の関数および集約は、ジェネリック・サイズ引数よりもさらに高い柔軟性を備えています。 可変引数の UDF、UDA、および
UDTF を使用する場合、argument_type_list には VARARGS キーワードのみを指定します。 ユーザーは、入力引数として、サポートされる任意のデータ型の入力値を 0 から 64 個まで指定できます。 例えば、前のセクションの greatest_value 関数を使用すると、次のようになります。
MYDB.SCHEMA(MYUSER)=> CREATE FUNCTION greatest_value(VARARGS) RETURNS
INT64...関数の本文中で、コードによって、入力値の処理および操作を適宜行う必要があります。 例えば、入力引数のデータ型を検査し、該当する場合はキャストを行ったりエラーを出したりすることを関数本体で行う必要があります。 ローカルのデータ型の入力値を扱うように UDX コードを設計する必要があります。例えば、Numeric32Val と倍精度データ型を管理します。 入力値をハードコーディングした場合、その入力を func(double) として宣言できます。数値を指定して呼び出すと、システムが自動的に倍精度にキャストします。
可変引数のシグニチャーを使用すると、さまざまな組み合わせの入力型を使用できる 1 つの関数または集約を作成することができます。 これにより、UDF、UDA、および UDTF の開発が単純化され、引数の型および数は異なるが同じタスクを行う多重定義を作成する必要がなくなります。