Scala UDF ハンドラープロジェクトとパッケージ化

適切に整理されたプロジェクト階層と一般的なビルドツールを使用すると、ハンドラーコードプロジェクトの保守が容易になります。これらは、ハンドラーコードをSnowflakeステージにコピーし、関数やプロシージャから参照する場合に便利です。

ハンドラーコードを構築してパッケージ化するには、sbt、Maven、Gradleなどの一般的なツールを使用できます。詳細については、次のトピックをご参照ください。

ハンドラーコードをパッケージ化したら、 コードで依存関係を利用できるようにする方法 の説明に従ってステージに追加できます。

ハンドラーをインラインに保持するかステージ上に保持するかの選択の詳細については、 ハンドラーコードのインラインまたはステージ上での保持 をご参照ください。

ファイルの整理

ハンドラーを JAR ファイルにパッケージ化してSnowflakeステージに配置する場合は、Snowflakeハンドラーコードを編成するプロジェクト階層を使用すると便利な場合があります。このセクションでは、ファイルを整理するための階層を提案します。

このようなプロジェクト階層の作成に使用できる GitHub テンプレートについては、 Snowflake Labs GitHub リポジトリ をご参照ください。

SnowflakeProject
|-- project
|   |-- plugins.sbt
|-- src
|   |-- main / scala / org / example
|   |   |-- function
|   |   |   |-- FunctionHandler.scala
|   |   |-- procedure
|   |   |-- utils
|   |-- test / scala / org / example
|   |   |-- function
|   |   |-- procedure
|-- build.sbt
|-- pom.xml
Copy

次のテーブルでは、階層のセクションについて説明します。

ディレクトリ/ファイル

説明

project ディレクトリ

コードの構築とパッケージ化をガイドするためにsbtで使用するファイルが含まれています。

  • plugins.sbt ファイルは、sbtで使用するプラグインを指定します。Snowflakeで使用するコードを構築するには、ハンドラーの依存関係を含む JAR の作成を支援するプラグインを追加します。詳細については、 sbtを使用したScalaハンドラーコードのパッケージ化 をご参照ください。

src / main / scala / org / example ディレクトリ

ハンドラーコードのソースファイルが含まれます。

  • function ディレクトリを使用して、ユーザー定義関数(UDFs)のハンドラーソースを保持します。

  • procedure ディレクトリを使用して、ストアドプロシージャのハンドラーソースを保持します。

  • utils ディレクトリを使用して、両方に必要なハンドラーソースを保持します。

src / test / scala / org / example ディレクトリ

ハンドラーテストのソースファイルが含まれます。

  • ユーザー定義関数(UDFs)のテストを保持するには、 function ディレクトリを使用します。

  • procedure ディレクトリを使用して、ストアドプロシージャのテストを保持します。

build.sbt ファイル

sbtで使用するビルド定義(ビルドされた出力の名前とバージョン、依存関係などを含む)を指定します。詳細については、 sbtを使用したScalaハンドラーコードのパッケージ化 をご参照ください。

pom.xml ファイル

Mavenによって使用されるビルド定義を指定します。詳細については、 Mavenを使用したJavaまたはScalaハンドラーコードのパッケージ化 をご参照ください。