Snowparkでの関数の呼び出しとストアドプロシージャ

DataFrame でデータを処理するには、システム定義の SQL 関数、ユーザー定義関数、およびストアドプロシージャを呼び出すことができます。このトピックでは、Snowparkでこれらを呼び出す方法について説明します。

このトピックの内容:

システム定義関数の呼び出し

システム定義の SQL 関数 を呼び出す必要がある場合は、 com.snowflake.snowpark.functions オブジェクトで同等の関数を使用します。

次の例では、 functions オブジェクトの upper 関数(システム定義の UPPER 関数と同等)を呼び出して、名前列の値を大文字で返します。

// Import the upper function from the functions object.
import com.snowflake.snowpark.functions._
...
session.table("products").select(upper(col("name"))).show()

システム定義の SQL 関数が関数オブジェクトで使用できない場合は、次のいずれかの方法を使用できます。

  • callBuiltin 関数を使用して、システム定義関数を呼び出します。

  • builtin 関数を使用して、システム定義関数の呼び出しに使用できる関数オブジェクトを作成します。

callBuiltin および builtin は、 com.snowflake.snowpark.functions オブジェクトで定義されています。

callBuiltin の場合は、最初の引数としてシステム定義関数の名前を渡します。列の値をシステム定義関数に渡す必要がある場合は、 オブジェクトを callBuiltin 関数への追加の引数として定義して渡します。

次の例では、システム定義関数 RADIANS を呼び出し、列 col1 から値を渡します。

// Import the callBuiltin function from the functions object.
import com.snowflake.snowpark.functions._
...
// Call the system-defined function RADIANS() on col1.
val result = df.select(callBuiltin("radians", col("col1"))).collect()

callBuiltin 関数は、 Column を返します。これは、 DataFrame 変換メソッド (例: フィルター、選択など)に渡すことができます。

builtin の場合は、システム定義関数の名前を渡し、返された関数オブジェクトを使用してシステム定義関数を呼び出します。例:

// Import the callBuiltin function from the functions object.
import com.snowflake.snowpark.functions._
...
// Create a function object for the system-defined function RADIANS().
val radians = builtin("radians")
// Call the system-defined function RADIANS() on col1.
val result = df.select(radians(col("col1"))).collect()

ユーザー定義関数(UDFs)の呼び出し

名前で登録 した UDFs と、 CREATE FUNCTION を実行して作成した UDFs を呼び出すには、 com.snowflake.snowpark.functions オブジェクトで callUDF 関数を使用します。UDF の名前を最初の引数として渡し、 UDF パラメーターを追加の引数として渡します。

次の例では、 UDF 関数 myFunction を呼び出し、列 col1col2 から値を渡します。この例では、戻り値を myFunction から DataFrame の select メソッドに渡します。

// Import the callUDF function from the functions object.
import com.snowflake.snowpark.functions._
...
// Runs the scalar function 'myFunction' on col1 and col2 of df.
val result =
    df.select(
        callUDF("myDB.schema.myFunction", col("col1"), col("col2"))
    ).collect()

ストアドプロシージャの呼び出し

ストアドプロシージャを呼び出すには、 Session クラスの sql メソッドを使用します。 SQL ステートメントの実行 をご参照ください。