ネイティブアプリケーションフレームワークにおける宣言共有のユーザー定義関数とストアドプロシージャ¶
Declarative Native Apps には、データのクエリ、視覚化、および探索を行うための ストアドプロシージャ および ユーザー定義関数 ( UDFs )を含めることができます。このトピックでは、これらのオブジェクトをアプリに含める方法について説明します。
サポートされているユーザー定義関数およびストアドプロシージャ¶
Declarative Native App では、次のタイプのユーザー定義関数( UDFs )およびストアドプロシージャ(sprocs)を共有できます。
OWNERS RIGHTS または RESTRICTED CALLERS RIGHTS を持つストアドプロシージャ。詳細については、
呼び出し元権限と所有者権限のストアドプロシージャについて をご参照ください。
EXTERNAL 関数を除く、 UDFs のすべてのタイプ
アプリケーションにユーザー定義関数とストアドプロシージャを含める¶
Declarative Native App に UDFs およびストアドプロシージャを含めるには、 manifest.yaml ファイルにオブジェクトの名前と権限を追加します。ノートブックと同様に、別のファイルを使ってオブジェクトを追加する必要はありません。
次の例は、 manifest.yaml ファイルに UDF およびストアドプロシージャを含める方法を示しています。
manifest_version: 2
roles:
- ANALYST:
comment: "The ANALYST role provides access to logic objects."
shared_content:
databases:
- SNAF_POPULATION_DB:
schemas:
- LOGIC_SCHEMA:
roles: [ANALYST]
functions:
- POPULATION_ANALYSIS_FUNCTION(NUMBER):
roles: [ANALYST]
procedures:
- POPULATION_ANALYSIS_PROCEDURE():
roles: [ANALYST]
この例では、 POPULATION_ANALYSIS_FUNCTION UDF および POPULATION_ANALYSIS_PROCEDURE ストアドプロシージャは manifest.yaml ファイルに含まれています。ANALYST アプリロールには、両方のオブジェクトへのアクセス権が付与されます。
マニフェスト参照¶
この機能は、 manifest.yaml ファイルに次のフィールドを追加します。
functions.{named function} フィールド¶
各名前付き機能(リスト、必須 [ OneOfRequired ]_ ): 以下の名前と値のペアをサポートします。
roles(リスト、オプション):機能にアクセスできるアプリロールのリストです(例:[analyst])。このフィールドが空の場合([])または省略されている場合は、アプリの所有者と 付与された IMPORTEDPRIVILEGES<label-dsna_share_access_to_all_data>`ロールのみがアクセスを受け取ります。含まれるロールは :ref: 最上位レベルのロールフィールド <label-dsna_manifest_roles_top>` で定義され、 {named schema}.roles フィールドに含まれている必要があります。
procedures.{named procedure} フィールド¶
各名前付きストアドプロシージャ(リスト、必須 [ OneOfRequired ]_ ): 以下の名前と値のペアをサポートします。
roles(リスト、オプション):プロシージャにアクセスできるアプリロールのリストです(例:[analyst])。このフィールドが空の場合([])または省略されている場合は、アプリの所有者と 付与された IMPORTEDPRIVILEGES<label-dsna_share_access_to_all_data>`ロールのみがアクセスを受け取ります。含まれるロールは :ref: 最上位レベルのロールフィールド <label-dsna_manifest_roles_top>` で定義され、 {named schema}.roles フィールドに含まれている必要があります。
マニフェストファイルの例¶
次のコードブロックは、 Declarative Native App マニフェストファイルの例です。
データオブジェクトとコードオブジェクトは異なるスキーマに存在する必要があることに注意してください。
manifest_version: 2
roles:
- VIEWER:
comment: "The VIEWER role provides access to only one view."
- ANALYST:
comment: "The ANALYST role provides access to views, the table, and logic."
shared_content:
databases:
- SNAF_POPULATION_DB:
schemas:
- DATA_SCHEMA:
roles: [VIEWER, ANALYST]
tables:
- COUNTRY_POP_BY_YEAR:
roles: [ANALYST]
views:
- COUNTRY_POP_BY_YEAR_2000:
roles: [VIEWER, ANALYST]
- LOGIC_SCHEMA:
roles: [ANALYST]
functions:
- POPULATION_ANALYSIS_FUNCTION(NUMBER):
roles: [ANALYST]
procedures:
- POPULATION_ANALYSIS_PROCEDURE():
roles: [ANALYST]
application_content:
notebooks:
- intro_notebook:
roles: [VIEWER, ANALYST]
main_file: INTRO_NB.ipynb
- analyst_notebook:
roles: [ANALYST]
main_file: ANALYST_NB.ipynb
制限事項¶
- サポートされている言語とタイプ
Python、Java、Javascript、およびScalaで記述されたSnowpark UDFs およびストアドプロシージャ。Snowpark Container Service関数はサポートされていません。
- データオブジェクトとロジックオブジェクトのスキーマ
データオブジェクト(テーブルとビュー)とロジックオブジェクト( UDFs とストアドプロシージャ)には、別々のスキーマを使用する必要があります。例えば、テーブルとビューには
DATA_SCHEMAという名前のスキーマを使用し、 UDFs およびストアドプロシージャにはLOGIC_SCHEMAという名前のスキーマを使用できます。- プライベートオブジェクトの参照
UDFs およびストアドプロシージャは、スキーマ修飾名でプライベートオブジェクトを参照する必要があります。ロジックオブジェクトは、完全修飾名でプライベートオブジェクトを参照できません。
- オブジェクト数
Declarative Native App には最大100個の UDFs およびストアドプロシージャ含めることができます。この制限を増やすには、 `Snowflakeサポート `_ にお問い合わせください。
- 動的テーブル
UDFs およびストアドプロシージャでの動的テーブルの参照はサポートされていません。