【Snowflake】Snowflake ~ IDENTIFIER / SET ~

■ はじめに

小ネタ。

https://dk521123.hatenablog.com/entry/2024/02/19/152927

の作業時に、Snowflake の IDENTIFIER を習ったのでメモ。
ついでに、SET に関してもメモっておく。

(小ネタだったが、書いていく内に思った以上に書く量が多くなってしまった)

目次

【1】IDENTIFIER
【2】SET
 1)UNSET
 2)SHOW VARIABLES
【3】サンプル
 例1:変数を定義して利用する

【1】IDENTIFIER

* リテラルまたは変数で指定されたオブジェクト名を使用する場合に使用する

https://docs.snowflake.com/ja/sql-reference/identifier-literal

【2】SET

* セッション変数 を定義

https://docs.snowflake.com/ja/sql-reference/sql/set

-- SET <var> = <expr>
SET V1 = 10;
SET V2 = 'example';

-- SET ( <var> [ , <var> ... ] )  = ( <expr> [ , <expr> ... ] )
SET (V1, V2) = (10, 'example');

1)UNSET

* セッション変数 を削除

https://docs.snowflake.com/ja/sql-reference/sql/unset

UNSET <var>

UNSET ( <var> [ , <var> ... ] )

2)SHOW VARIABLES

* 現在のセッションで定義されている全変数 を一覧表示

https://docs.snowflake.com/ja/sql-reference/sql/show-variables

SHOW VARIABLES;

【3】サンプル

例1:変数を定義して利用する

-- 変数(定数?)を定義
SET TARGET_SHARE_NAME = 'sales_s';

-- 確認
SELECT $TARGET_SHARE_NAME;

-- 使用例: CREATE SHARE の SHARE名として使用
CREATE SHARE IF NOT EXISTS IDENTIFIER($TARGET_SHARE_NAME);

GRANT USAGE ON DATABASE d1 TO SHARE IDENTIFIER($TARGET_SHARE_NAME);

GRANT DATABASE ROLE d1.r1 TO SHARE IDENTIFIER($TARGET_SHARE_NAME);
GRANT DATABASE ROLE d1.r2 TO SHARE IDENTIFIER($TARGET_SHARE_NAME);

ALTER SHARE IDENTIFIER($TARGET_SHARE_NAME)
  ADD ACCOUNTS = org1.consumer1,org1.consumer2;

関連記事

Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ 基本編 / アクセス制御 ~
https://dk521123.hatenablog.com/entry/2021/11/16/231010
Snowflake ~ Data Sharing ~
https://dk521123.hatenablog.com/entry/2024/02/19/152927