初めてのSnowflakeNativeAppパッケージ化 -第1回-

初めてのSnowflakeNativeAppパッケージ化 -第1回- | Tableau-id Press -タブロイド-
表紙

こんにちは、三村です。

Snowflake NativeApp がパブリックプレビューになりましたね。
Snowflake NativeAppとは、自分で作成したプログラムをパッケージ化して、他のアカウントで実行できるアプリケーションです。

今回から3回に分けて、Snowflake NativeApp のパッケージ化の方法をご説明します。

以下の仕様を満たしたアプリを作成する前提です。

・プロバイダ側のテーブルを参照する。

・上記のテーブルはコンシューマからは見えない。

・コンシューマ側のテーブルにレコード追加する。

第1回では、Snowflake NativeApp の流れをご説明いたします。まずは概念図をご覧ください。

上記概念図の番号ごとにご説明いたします。

① アプリケーションパッケージを作成する。名前は例としてPODB_PKG。

CREATE APPLICATION PACKAGE PODB_PKG;

 

② 上記アプリケーションパッケージ内に、スキーマを作成する。名前は例として PODB_SCHEMA。

USE APPLICATION PACKAGE PODB_PKG;
CREATE SCHEMA PODB_SCHEMA;

 

③ 上記スキーマ内に、名前付きステージを作成する。名前は例として PODB_STAGE。

CREATE OR REPLACE STAGE PODB_PKG.PODB_SCHEMA.PODB_STAGE DIRECTORY = ( ENABLE = true ) COMMENT = ‘PODB’;

 

④ アプリケーションパッケージ内に、プログラムが参照するプロバイダ側の情報を置くスキーマを作成する。

このスキーマは コンシューマに見せない。名前は例として SHARED_SCHEMA。

USE APPLICATION PACKAGE PODB_PKG;
CREATE SCHEMA SHARED_SCHEMA;

 

⑤ 上記スキーマに、プログラムが参照するプロバイダ側のテーブルのViewを作成する。

USE SCHEMA PODB_PKG.SHARED_SCHEMA;
CREATE OR REPLACE VIEW VIEW_PODB AS SELECT * FROM PRODB.PROSCHEMA.PROTBL;

 

⑥ 名前付きステージの中に、プログラム一式を格納する。

ディレクトリを作成し、それ配下にプログラム一式を格納する。ディレクトリの名前は例として V1。

プログラムはパッチ番号で履歴管理される。一番初めはパッチ0。

※第2回でここの箇所を詳しくご説明いたします。

⑦ アプリケーションパッケージにバージョンを追加する。

そしてデフォルトのパッチ番号を設定する。

ALTER APPLICATION PACKAGE PODB_PKG ADD VERSION “V1″ USING ‘@PODB_PKG.PODB_SCHEMA.PODB_STAGE/V1’ LABEL = ”;
ALTER APPLICATION PACKAGE PODB_PKG SET DEFAULT RELEASE DIRECTIVE VERSION = “V1” PATCH = 0;

 

⑧ SHARED_SCHEMA の使用権限をアプリケーションパッケージに共有する。

GRANT USAGE ON SCHEMA SHARED_SCHEMA TO SHARE IN APPLICATION PACKAGE PODB_PKG;

 

⑨ プロバイダ側のプログラムが参照するテーブルが所属するデータベースの参照権限をアプリケーションパッケージに共有する。

GRANT REFERENCE_USAGE ON DATABASE PRODB TO SHARE IN APPLICATION PACKAGE PODB_PKG;

 

⑩ VIEW_PODBの参照権限をアプリケーションパッケージに共有する。

GRANT SELECT ON VIEW VIEW_PODB TO SHARE IN APPLICATION PACKAGE PODB_PKG;

 

⑪ リストを作って、Publishする。

⑫ コンシューマ側で取り込み、走らせる。

※こちらは第3回でご説明いたします。

 

第2回へつづく。