◾️はじめに
小ネタ。 調査する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