Snowflakeの”お作法”を整理・確認するためのSnowsqlを使った各種オブジェクトを新規作成する手順まとめ

2020.10.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Snowflakeの世界に存在する各種要素の関係性やそれらの権限に関する情報は下記公式ドキュメント等で説明・解説されています。

ですが、一読しただけではそれら全てを把握・理解するのはちょっと一苦労な感じでした(個人的には)。

やっぱり実際に手を動かして理解するのが一番だろう、ということで当エントリでは一番シンプルであろう『関連する要素を全て新規作成する』というケースを想定し、それらを順を追ってSnowflakeのコマンドラインツール『Snowsql』で作成しておく事で要素の作成方法や要素間の関係性を理解していく流れを、実践内容を踏まえて説明していきたいと思います。

目次

 

想定するケース

冒頭で言及した通り、当エントリでは『Snowflake環境において必要なものを"新規作成"する場合のケース』について話を進めたいと思います。イメージしたのが下記の内容。

右上にいるSnowflake管理者(cm_snowflake_admin)は、予め所定のSnowflakeアカウント環境内に存在する、ACCOUNTADMIN権限を利用可能なユーザーです。このユーザーを用いて、新たにSnowflakeを利用することになった初代めそ子(彩木あかり = saiki_akari)のユーザーを作成するところから、そのユーザーが利用可能なオブジェクト一式を作成するところまでを順を追って見ていきます。実施した手順(ステップ)の内容と順番は以下の通り。

  • (1).Snowflakeアクセス用のユーザーを新規作成
  • (2).新規ロールの作成と作成ロールの利用権限付与
  • (3).作成したユーザーでログインとロール利用を試してみる
  • (4).データベースの新規作成
  • (5).作成したデータベースの所有権を作成したロールに付与
  • (5').「統合」権限をしたロールに付与
  • (6).ウェアハウスの作成と権限付与
  • (7).作成したウェアハウスの利用権限を作成したロールに付与
  • (8).対象ユーザーでログイン&諸々の操作を確認
  • (9).現在のログイン・立ち位置状況を確認

 

Snowsqlのインストール

当エントリで行う操作については、Snowflakeのクライアントツールである『Snowsql』を用いて行います。下記公式ドキュメントを参考に、ご利用の環境内でインストールを行ってください。

インストール完了後、バージョン確認コマンドで所定のバージョンが表示されていれば準備OKです。

% snowsql -v
Version: 1.2.10

 

実施手順

ここからは手順(ステップ)毎に、実際に行った内容に沿って説明していきます。

 

(1).Snowflakeアクセス用のユーザーを新規作成

まずはじめに、今回の作業を経て活用することになるSnowflakeのユーザーを作るところから始めます。Snowflakeのユーザーを作成出来る権限を持ったユーザーでSnowflakeにログイン。

% snowsql -a xxxxxxxxxxxxxxxxxxx.ap-northeast-1.aws -u cm_snowflake_admin  
Password: 
* SnowSQL * v1.2.10
Type SQL statements or !help
cm_snowflake_admin#(no warehouse)@(no database).(no schema)>USE ROLE ACCOUNTADMIN;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.079s
cm_snowflake_admin#(no warehouse)@(no database).(no schema)>

(※以降、プロンプト表示されるcm_snowflake_admin#(no warehouse)@(no database).(no schema)>の箇所は必要なタイミングを除いて表記を省略します)

CREATE USERコマンドを使ってユーザーを作成。

> CREATE USER IF NOT EXISTS saiki_akari
PASSWORD = 'xXxXxXxXxX'
COMMENT = 'for Blogging by shinyaa31.';

+----------------------------------------+                                      
| status                                 |
|----------------------------------------|
| User SAIKI_AKARI successfully created. |
+----------------------------------------+
1 Row(s) produced. Time Elapsed: 0.884s

この時点でユーザー:saiki_akari はSnowflakeにログイン出来ますが、public権限しか保有していない状態です。実際にブラウザ経由でログインしてみてもこのような形で最低限の選択肢しかありません。

 

(2).新規ロールの作成と作成ロールの利用権限付与

上記ユーザーが利用可能なロールを新規作成し、そのロールを新規作成ユーザーで利用出来るように設定します。CREATE ROLEコマンドでロールを作成し、

>CREATE ROLE MESOKO_DB_ADMIN_ROLE
COMMENT = 'for Blogging by shinyaa31.';
+-------------------------------------------------+                             
| status                                          |
|-------------------------------------------------|
| Role MESOKO_DB_ADMIN_ROLE successfully created. |
+-------------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.565s

前項で作成したユーザー:saiki_akariに対し、GRANT ROLEコマンドで権限を付与。

> GRANT ROLE MESOKO_DB_ADMIN_ROLE TO USER saiki_akari;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.358s

これで、ユーザー:saiki_akariが利用可能なロールが増えました。(ただまだこの時点ではロールは何の権限もありません)

 

(3).作成したユーザーでログインとロール利用を試してみる

手順(1),(2)を経て用意出来たユーザーで、Snowflakeにログインし直してみます。

% snowsql -a classmethodpartner.ap-northeast-1.aws -u saiki_akari;
Password: 
* SnowSQL * v1.2.10
Type SQL statements or !help
saiki_akari#(no warehouse)@(no database).(no schema)>

続いて、ロールの選択も実行してみます。USE ROLEコマンド前後で選択しているロールが変わっている事も確認出来ました。

> SELECT CURRENT_USER(),CURRENT_ROLE();
+----------------+----------------+                                             
| CURRENT_USER() | CURRENT_ROLE() |
|----------------+----------------|
| SAIKI_AKARI    | PUBLIC         |
+----------------+----------------+
1 Row(s) produced. Time Elapsed: 0.384s

>USE ROLE MESOKO_DB_ADMIN_ROLE;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.091s

>SELECT CURRENT_USER(),CURRENT_ROLE();
+----------------+----------------------+                                       
| CURRENT_USER() | CURRENT_ROLE()       |
|----------------+----------------------|
| SAIKI_AKARI    | MESOKO_DB_ADMIN_ROLE |
+----------------+----------------------+
1 Row(s) produced. Time Elapsed: 0.089s

ロール選択の確認が出来たので、!quit,!qまたは[Control+D]で一旦snowsqlを抜けます。

> !quit                                                               
Goodbye!

 

(4).データベースの新規作成

データベースについても新規作成します。

SYSADMINのロールを使い、任意の名前でデータベース:MESOKO_DBを作成してみました。Snowflakeの世界では、下記ドキュメントにも『SYSADMIN :アカウントでウェアハウスとデータベース(およびその他のオブジェクト)を作成する権限を持つロール』という記載があるように、データベースやウェアハウス等はこのロールで行うように推奨されています。

> USE ROLE SYSADMIN;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.142s

> CREATE DATABASE MESOKO_DB COMMENT = 'for Blogging by shinyaa31.';
+------------------------------------------+                                    
| status                                   |
|------------------------------------------|
| Database MESOKO_DB successfully created. |
+------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.519s

 

(5).作成したデータベースの所有権を作成したロールに付与

前項の手順だけでは、今回作成したユーザーでは十分な利用が出来ない状態です。ここではSECURITYADMINにロール変更を行いつつ、GRANT OWNERSHIPコマンドを使って、データベースとデータベース配下のPUBLICスキーマの所有者権限を、新規作成したロールに対して付与します。

> USE ROLE SECURITYADMIN;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.142s

> GRANT OWNERSHIP ON DATABASE MESOKO_DB TO ROLE MESOKO_DB_ADMIN_ROLE;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.758s

> GRANT OWNERSHIP ON SCHEMA MESOKO_DB.PUBLIC TO ROLE MESOKO_DB_ADMIN_ROLE;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.510s

 

(5').「統合」権限をしたロールに付与

下記エントリで紹介している「外部ステージ」を利用する場合は、別途統合(INTEGRATION)に関する権限を対象のロールに付与する必要があります。

ACCOUNTADMIN権限にスイッチした上で、下記GRANT文で対象ロールへの権限付与を指定しておいてください。

> USE ROLE ACCOUNTADMIN;
> GRANT CREATE INTEGRATION ON ACCOUNT TO ROLE MESOKO_DB_ADMIN_ROLE;

 

(6).ウェアハウスの作成と権限付与

Snowflake環境内でクエリを実行する際には『ウェアハウス』の設定も必要となります。今回の手順では、このウェアハウスも新規作成します。作成をSYSADMINで行うのは前述DATABASEと同じです。

CREATE WAREHOUSEコマンドで作成。

> USE ROLE SYSADMIN;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.130s

> CREATE WAREHOUSE MESOKO_WH_X_SMALL COMMENT = 'for Blogging by shinyaa31';
+---------------------------------------------------+                           
| status                                            |
|---------------------------------------------------|
| Warehouse MESOKO_WH_X_SMALL successfully created. |
+---------------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.253s

 

(7).作成したウェアハウスの利用権限を作成したロールに付与

作成した権限が所定のロールで利用出来るように、GRANT USAGEGRANT OPERATEコマンドで使用・操作権限をロールに付与します。

> USE ROLE SECURITYADMIN;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.130s


> GRANT USAGE ON WAREHOUSE MESOKO_WH_X_SMALL TO ROLE MESOKO_DB_ADMIN_ROLE;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.121s

> GRANT OPERATE ON WAREHOUSE MESOKO_WH_X_SMALL TO ROLE MESOKO_DB_ADMIN_ROLE;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.154s

 

(8).対象ユーザーでログイン&諸々の操作を確認

DBログインまでの要素の準備がこれで整いました。対象ユーザーでのログインに切り替え、それぞれの操作が出来ることを確認していきます。

まずはログイン&ロール切り替え。

% snowsql -a xxxxxxxxxxxxxxxxxxx.ap-northeast-1.aws -u saiki_akari;
Password: 
* SnowSQL * v1.2.10
Type SQL statements or !help

> USE ROLE MESOKO_DB_ADMIN_ROLE;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.111s

ウェアハウスとデータベースの利用選択。データベース選択まで行うと、自動的にINFORMATION SCHEMA以外で利用出来るスキーマ=PUBLICスキーマがプロンプトに表示されてくるようです。(※17行目参照)

> USE WAREHOUSE MESOKO_WH_X_SMALL;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.314s

> USE DATABASE MESOKO_DB;
+----------------------------------+                                            
| status                           |
|----------------------------------|
| Statement executed successfully. |
+----------------------------------+
1 Row(s) produced. Time Elapsed: 0.103s

saiki_akari#MESOKO_WH_X_SMALL@MESOKO_DB.PUBLIC>

CREATE SCHEMAコマンドによる新たなスキーマの作成も試してみます。SHOW SCHEMASコマンドでスキーマの存在&所有権も確認することが出来ました。

> CREATE SCHEMA MESOKO_SCHEMA COMMENT = 'for Blogging by shinyaa31';
+--------------------------------------------+                                  
| status                                     |
|--------------------------------------------|
| Schema MESOKO_SCHEMA successfully created. |
+--------------------------------------------+
1 Row(s) produced. Time Elapsed: 0.905s

> SHOW SCHEMAS;
+-------------------------------+--------------------+------------+------------+---------------+----------------------+-----------------------------------------------------------+---------+----------------+
| created_on                    | name               | is_default | is_current | database_name | owner                | comment                                                   | options | retention_time |
|-------------------------------+--------------------+------------+------------+---------------+----------------------+-----------------------------------------------------------+---------+----------------|
| 2020-10-14 xx:xx:xx.827 -0700 | INFORMATION_SCHEMA | N          | N          | MESOKO_DB     |                      | Views describing the contents of schemas in this database |         | 1              |
| 2020-10-14 xx:xx:xx.977 -0700 | MESOKO_SCHEMA      | N          | Y          | MESOKO_DB     | MESOKO_DB_ADMIN_ROLE | for Blogging by shinyaa31                                 |         | 1              |
| 2020-10-14 xx:xx:xx.504 -0700 | PUBLIC             | N          | N          | MESOKO_DB     | MESOKO_DB_ADMIN_ROLE |                                                           |         | 1              |
+-------------------------------+--------------------+------------+------------+---------------+----------------------+-----------------------------------------------------------+---------+----------------+
3 Row(s) produced. Time Elapsed: 0.116s

publicスキーマ配下にテーブルを作成し、DML(データ操作言語)を一通り試してみます。

saiki_akari#MESOKO_WH_X_SMALL@MESOKO_DB.MESOKO_SCHEMA>
CREATE TABLE public.tabletest (
  user_id NUMBER,
  user_name VARCHAR(100),
  birthday DATE,
  PRIMARY KEY(user_id)
);
> INSERT INTO public.tabletest VALUES(111, 'AAAA', SYSDATE());
> INSERT INTO public.tabletest VALUES(222, 'BBBB', SYSDATE());
> INSERT INTO public.tabletest VALUES(333, 'CCCC', SYSDATE());
> INSERT INTO public.tabletest VALUES(444, 'DDDD', SYSDATE());
> INSERT INTO public.tabletest VALUES(555, 'EEEE', SYSDATE());

> SELECT * FROM public.tabletest ORDER BY user_id;
+---------+-----------+------------+                                            
| USER_ID | USER_NAME | BIRTHDAY   |
|---------+-----------+------------|
|     111 | AAAA      | 2020-10-14 |
|     222 | BBBB      | 2020-10-14 |
|     333 | CCCC      | 2020-10-14 |
|     444 | DDDD      | 2020-10-14 |
|     555 | EEEE      | 2020-10-14 |
+---------+-----------+------------+
5 Row(s) produced. Time Elapsed: 0.748s

> UPDATE public.tabletest SET user_name = 'ZZZZ' WHERE user_id = 444;
+------------------------+-------------------------------------+                
| number of rows updated | number of multi-joined rows updated |
|------------------------+-------------------------------------|
|                      1 |                                   0 |
+------------------------+-------------------------------------+
1 Row(s) produced. Time Elapsed: 0.752s

> SELECT * FROM public.tabletest ORDER BY user_id;
+---------+-----------+------------+                                            
| USER_ID | USER_NAME | BIRTHDAY   |
|---------+-----------+------------|
|     111 | AAAA      | 2020-10-14 |
|     222 | BBBB      | 2020-10-14 |
|     333 | CCCC      | 2020-10-14 |
|     444 | ZZZZ      | 2020-10-14 |
|     555 | EEEE      | 2020-10-14 |
+---------+-----------+------------+
5 Row(s) produced. Time Elapsed: 0.327s

> DELETE FROM public.tabletest WHERE user_id = 333;
+------------------------+                                                      
| number of rows deleted |
|------------------------|
|                      1 |
+------------------------+
1 Row(s) produced. Time Elapsed: 0.653s
> SELECT * FROM public.tabletest ORDER BY user_id;
+---------+-----------+------------+                                            
| USER_ID | USER_NAME | BIRTHDAY   |
|---------+-----------+------------|
|     111 | AAAA      | 2020-10-14 |
|     222 | BBBB      | 2020-10-14 |
|     444 | ZZZZ      | 2020-10-14 |
|     555 | EEEE      | 2020-10-14 |
+---------+-----------+------------+
4 Row(s) produced. Time Elapsed: 0.402s

新設したスキーマ:MESOKO_SCHEMA配下でも同じように操作が出来ることを確認。

> CREATE TABLE mesoko_schema.tabletest ( user_id NUMBER, user_name VARCHAR(100), birthday DATE, PRIMARY KEY(user_id) );
> INSERT INTO mesoko_schema.tabletest VALUES(111, 'AAAA', SYSDATE());
> INSERT INTO mesoko_schema.tabletest VALUES(222, 'BBBB', SYSDATE());
> INSERT INTO mesoko_schema.tabletest VALUES(333, 'CCCC', SYSDATE());
> INSERT INTO mesoko_schema.tabletest VALUES(444, 'DDDD', SYSDATE());
> INSERT INTO mesoko_schema.tabletest VALUES(555, 'EEEE', SYSDATE());

/** ちなみに上記INSERT文は以下のような形でまとめて記載する事も可能です。
> INSERT INTO public.tabletest VALUES
(111, 'AAAA', SYSDATE()),
(222, 'BBBB', SYSDATE()),
(333, 'CCCC', SYSDATE()),
(444, 'DDDD', SYSDATE()),
(555, 'EEEE', SYSDATE());
*/

> SELECT * FROM mesoko_schema.tabletest ORDER BY user_id;

> UPDATE mesoko_schema.tabletest SET user_name = 'ZZZZ' WHERE user_id = 444;
> SELECT * FROM mesoko_schema.tabletest ORDER BY user_id;

> DELETE FROM mesoko_schema.tabletest WHERE user_id = 333;
> SELECT * FROM mesoko_schema.tabletest ORDER BY user_id;

 

(9).現在のログイン・立ち位置状況を確認

Snowflakeの関数にはCURRENT_で始まるものが存在しています。以下のような形で現在のログイン状況等をSQL一発で取得・確認することが可能です。

saiki_akari#MESOKO_WH_X_SMALL@MESOKO_DB.PUBLIC>
SELECT
  CURRENT_ACCOUNT(),
  CURRENT_USER(),
  CURRENT_ROLE(),
  CURRENT_WAREHOUSE(),
  CURRENT_DATABASE(),
  CURRENT_SCHEMA(),
  CURRENT_SCHEMAS(),
  CURRENT_REGION();
+--------------------+----------------+----------------------+---------------------+--------------------+------------------+----------------------+--------------------+
| CURRENT_ACCOUNT()  | CURRENT_USER() | CURRENT_ROLE()       | CURRENT_WAREHOUSE() | CURRENT_DATABASE() | CURRENT_SCHEMA() | CURRENT_SCHEMAS()    | CURRENT_REGION()   |
|--------------------+----------------+----------------------+---------------------+--------------------+------------------+----------------------+--------------------|
| CLASSMETHODPARTNER | SAIKI_AKARI    | MESOKO_DB_ADMIN_ROLE | MESOKO_WH_X_SMALL   | MESOKO_DB          | PUBLIC           | ["MESOKO_DB.PUBLIC"] | AWS_AP_NORTHEAST_1 |
+--------------------+----------------+----------------------+---------------------+--------------------+------------------+----------------------+--------------------+

 

SQLコマンドチートシート

確認した手順としては上記で以上となります。改めて、当エントリで使ったSQLコマンドの一覧を『チートシート』的に集約させてみました。各種オブジェクト要素の名称については実際に設定するものに適宜置き換えて頂けますと幸いです。

## (1).Snowflakeアクセス用のユーザーを新規作成
% snowsql -a xxxxxxxxxxxxxxxxxxx.ap-northeast-1.aws -u cm_snowflake_admin:
USE ROLE ACCOUNTADMIN;
CREATE USER IF NOT EXISTS saiki_akari PASSWORD = 'xxxxxxxxx' COMMENT = 'for Blogging by shinyaa31.';

## (2).上記ユーザーが利用可能なロールを新規作成し、そのロールを新規作成ユーザーで利用出来るように設定
CREATE ROLE MESOKO_DB_ADMIN_ROLE COMMENT = 'for Blogging by shinyaa31.';
GRANT ROLE MESOKO_DB_ADMIN_ROLE TO USER saiki_akari;

## (3).作成したユーザーでロール切り替えが出来るか確認
% snowsql -a xxxxxxxxxxxxxxxxxxx.ap-northeast-1.aws -u saiki_akari;
SELECT CURRENT_USER(),CURRENT_ROLE();
USE ROLE MESOKO_DB_ADMIN_ROLE;
SELECT CURRENT_USER(),CURRENT_ROLE();

## (4).データベース作成
% snowsql -a xxxxxxxxxxxxxxxxxxx.ap-northeast-1.aws -u cm_snowflake_admin:
USE ROLE SYSADMIN;
CREATE DATABASE MESOKO_DB COMMENT = 'for Blogging by shinyaa31.';

## (5).作成したデータベースの所有権を作成したロールに付与
USE ROLE SECURITYADMIN;
GRANT OWNERSHIP ON DATABASE MESOKO_DB TO ROLE MESOKO_DB_ADMIN_ROLE;
GRANT OWNERSHIP ON SCHEMA MESOKO_DB.PUBLIC TO ROLE MESOKO_DB_ADMIN_ROLE;

## (6).ウェアハウス作成
USE ROLE SYSADMIN;
CREATE WAREHOUSE MESOKO_WH_X_SMALL COMMENT = 'for Blogging by shinyaa31';

## (7).作成したウェアハウスの利用権限を作成したロールに付与
USE ROLE SECURITYADMIN;
GRANT USAGE ON WAREHOUSE MESOKO_WH_X_SMALL TO ROLE MESOKO_DB_ADMIN_ROLE;
GRANT OPERATE ON WAREHOUSE MESOKO_WH_X_SMALL TO ROLE MESOKO_DB_ADMIN_ROLE;

## (8).作成したユーザーでログイン及び各種操作の確認
% snowsql -a xxxxxxxxxxxxxxxxxxx.ap-northeast-1.aws -u saiki_akari;
> USE ROLE MESOKO_DB_ADMIN_ROLE;
> USE WAREHOUSE MESOKO_WH_X_SMALL;
> USE DATABASE MESOKO_DB;

### publicスキーマでのDML動作検証
CREATE TABLE public.tabletest ( user_id NUMBER, user_name VARCHAR(100), birthday DATE, PRIMARY KEY(user_id) );
INSERT INTO public.tabletest VALUES(111, 'AAAA', SYSDATE());
INSERT INTO public.tabletest VALUES(222, 'BBBB', SYSDATE());
INSERT INTO public.tabletest VALUES(333, 'CCCC', SYSDATE());
INSERT INTO public.tabletest VALUES(444, 'DDDD', SYSDATE());
INSERT INTO public.tabletest VALUES(555, 'EEEE', SYSDATE());
SELECT * FROM public.tabletest ORDER BY user_id;
UPDATE public.tabletest SET user_name = 'ZZZZ' WHERE user_id = 444;
SELECT * FROM public.tabletest ORDER BY user_id;
DELETE FROM public.tabletest WHERE user_id = 333;
SELECT * FROM public.tabletest ORDER BY user_id;

### 独自作成スキーマでのDML動作検証
CREATE SCHEMA MESOKO_SCHEMA COMMENT = 'for Blogging by shinyaa31';
SHOW SCHEMAS;
CREATE TABLE mesoko_schema.tabletest ( user_id NUMBER, user_name VARCHAR(100), birthday DATE, PRIMARY KEY(user_id) );
INSERT INTO mesoko_schema.tabletest VALUES(111, 'AAAA', SYSDATE());
INSERT INTO mesoko_schema.tabletest VALUES(222, 'BBBB', SYSDATE());
INSERT INTO mesoko_schema.tabletest VALUES(333, 'CCCC', SYSDATE());
INSERT INTO mesoko_schema.tabletest VALUES(444, 'DDDD', SYSDATE());
INSERT INTO mesoko_schema.tabletest VALUES(555, 'EEEE', SYSDATE());
SELECT * FROM mesoko_schema.tabletest ORDER BY user_id;
UPDATE mesoko_schema.tabletest SET user_name = 'ZZZZ' WHERE user_id = 444;
SELECT * FROM mesoko_schema.tabletest ORDER BY user_id;
DELETE FROM mesoko_schema.tabletest WHERE user_id = 333;
SELECT * FROM mesoko_schema.tabletest ORDER BY user_id;
SELECT CURRENT_USER(), CURRENT_ROLE(), CURRENT_WAREHOUSE(), CURRENT_DATABASE(), CURRENT_SCHEMA(), CURRENT_SCHEMAS();

## (9).現在の立ち位置を確認
> SELECT
    CURRENT_ACCOUNT(),
    CURRENT_USER(),
    CURRENT_ROLE(),
    CURRENT_WAREHOUSE(),
    CURRENT_DATABASE(),
    CURRENT_SCHEMA(),
    CURRENT_SCHEMAS(),
    CURRENT_REGION();

 

まとめ

という訳で、Snowflakeの各種オブジェクト要素をSnowsqlでコマンド実行する事で作成し、環境を整えながら関係性を理解する内容の紹介でした。

社内の有識者にも確認を取りつつ(ありがとうございます!)、やりたいことを実現出来て理解も深まりました。Snowflakeを使い始めたという方の理解の助けになれば幸いです。