Snowparkとは
クラウド型DWHのSnowlakeから今年の6月にリリースされた新機能です。
Snowflake内のデータを操作するAPIでSnowflakeの計算リソースを使って処理の実行をすることができます。
現在はScalaのみサポートしてるみたいです。
試してみた
今回はSnowparkを使ってUDF(ユーザー定義関数)を使ってみようと思います。
SnowflakeではSQL、JavaScript、JavaのUDFをサポートしています。
Snowparkではudf()
を使うことで簡単にUDFを定義することができます。
今回は受け取った値に対して1を追加するUDFにします。
select()
に対してUDFの対象となるカラムを指定して渡してあげます。
udf()
の呼び出しはセッションの接続後に来るようにしないと落ちます。
Main.scala
import com.snowflake.snowpark.Session
import com.snowflake.snowpark.functions._
object Main {
def main(args: Array[String]): Unit = {
val session = Session.builder.configFile(getClass.getResource("/profile.properties").getPath).create
val addOne = udf((x: Int) => x + 1)
session.table("table1").select(col("col2"), addOne(col("col2")).name("addOne")).show()
session.close()
}
}
UDFの実行前にUDFの登録も良い感じにやってくれてます。
書き慣れた言語でUDFが書けるとクエリの幅も広がって良さそう⛄️