【Snowflake】Snowflake 〜 SET / 変数定義 〜

◾️はじめに

小ネタ。

調査するSQLで可変部分があって、
こちょこちょ直すとミスしやすいと思ったので
変数化したので、ちょっとメモっておく。

 もう記憶の彼方になってしまったのだが、
過去記事を整理してたら、IDENTIFIERってのもあったので
以下の関連記事で復習した。。。

Snowflake ~ IDENTIFIER ~
https://dk521123.hatenablog.com/entry/2024/02/20/095207

目次

【1】SET
【2】その他API
 1)SHOW VARIABLES
 2)UNSET
【3】サンプル
 例1:URLの可変部分への適用
 例2:SELECT結果の格納

【1】SET

* セッション変数定義

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

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

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

【2】その他API

* あんまり使用しないと思うけど、SET以外のAPIについて触れる

1)SHOW VARIABLES

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

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

-- SHOW VARIABLES [ LIKE '<pattern>' ];
SHOW VARIABLES;

2)UNSET

* セッション変数 を削除

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

UNSET <var>

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

【3】サンプル

例1:URLの可変部分への適用

-- 変数定義
SET target_date='2025/06/05';
SET old_url=CONCAT('s3://your-s3-bucket2/old/xxxx/', $target_date, '/');
SET new_url=CONCAT('s3://your-s3-bucket1/new/xxxx/', $target_date, '/');

CREATE OR REPLACE STAGE for_old
  STORAGE_INTEGRATION = demo_integration
  URL = $old_url
  FILE_FORMAT = (TYPE='PARQUET')
;

CREATE OR REPLACE STAGE for_new
  STORAGE_INTEGRATION = demo_integration
  URL = $new_url
  FILE_FORMAT = (TYPE='PARQUET')
;

-- 確認
SELECT COUNT(*) FROM @ for_old
UNION ALL
SELECT COUNT(*) FROM @ for_new
;

例2:SELECT結果の格納

SET id_threshold = (SELECT COUNT(*)/2 FROM table1);

関連記事

Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ IDENTIFIER ~
https://dk521123.hatenablog.com/entry/2024/02/20/095207