Scala UDFs の紹介

ユーザー定義関数(UDF)のハンドラーをScalaで記述できます。ハンドラーは、 SQL で呼び出されるときに関数のロジックとして実行されます。

Snowflakeは現在、次のScalaのバージョンで UDFs の記述をサポートしています。

  • 2.12

ハンドラーを作成した後、 SQL で UDF を作成します。SQL を使用して UDF を作成または呼び出す方法については、 UDF の作成 または UDF の呼び出し をご参照ください。

UDF ハンドラーを記述できる言語のリストを含む UDFs の概要については、 ユーザー定義関数の概要 をご参照ください。

注釈

Scalaハンドラーに関連した制限については、 Scala UDF の制限事項 をご参照ください。

Snowpark API を使用する場合は、Scalaを使用して UDF を記述することもできます。詳細については、 Scalaでの DataFrames 用ユーザー定義関数(UDFs)の作成 をご参照ください。

ハンドラーの仕組み

ユーザーが UDF を呼び出すと、ユーザーは UDFの名前と引数をSnowflakeに渡します。Snowflakeは、 UDF に関連付けられたハンドラーメソッドを呼び出して、 UDF のロジックを実行します。次に、ハンドラーメソッドは出力をSnowflakeに返し、Snowflakeはそれをクライアントに返します。

スカラー関数(単一の値を返す関数)の場合、 UDF は、 UDF に渡された行ごとに単一の値を返します。

ハンドラーのロジックをサポートするために、コードでハンドラーの外部にあるライブラリを呼び出すことができます。たとえば、Scalaにデータ分析コードがすでにある場合は、大抵ハンドラーコードからそれを使用できます。

Scalaでのハンドラーの記述に関する一般的な情報については、 Scala UDF ハンドラーコーディングの一般的なガイドライン をご参照ください。スカラー関数の記述については、 Scalaによる スカラー UDF の記述 をご参照ください。

次の例のコードは、ハンドラーメソッド TestFunc.echoVarchar を使用して echo_varchar という名前の UDF を作成します。Scalaの引数と戻り値の型は、 SQL-Scalaデータ型マッピング で説明されているマッピングに従って、Snowflakeにより SQL との間で変換されます。

CREATE OR REPLACE FUNCTION echo_varchar(x VARCHAR)
RETURNS VARCHAR
LANGUAGE SCALA
RUNTIME_VERSION = 2.12
HANDLER='TestFunc.echoVarchar'
AS
$$
class TestFunc {
  def echoVarchar(x : String): String = {
    return x
  }
}
$$;
Copy

UDF を呼び出す

SELECT echo_varchar('Hello');
Copy

設計の考慮事項

役に立つハンドラーを設計するには、次の点に注意してください。

ハンドラーコード

基本から詳細な例まで、次のトピックでは、Scalaで UDF ハンドラーを記述する方法について説明します。