はじめに
今回は、SnowflakeのCUIクライアント「SnowSQL」のインストールとチュートリアルを体験した内容を紹介します!
今回の作業環境は以下のとおりです。
【作業環境】
・ チップ Apple M1
・ macOS Ventura 13.3
※その他、Snowflake関連記事はコチラ↓
SnowFlakeへのSnowSQLのインストール方法
macへのSnowSQLのインストールは上記のドキュメントを参考に進めていきます。
まずはSnowSQLをHomebrewを使ってインストールしましょう!
といっても、既にHomebrewを導入していれば下記のコマンドを実行すればOKです。
brew install --cask snowflake-snowsql
エイリアスの追記
続いて、インストールが完了したらzshrcファイルを編集し、SnowSQL 実行可能ファイルのエイリアスを登録しましょう!
エイリアスを登録することで、ターミナルで SnowSQLが実行できるようになります。
※以下、公式ドキュメントから引用+追記
-
~/.zshrc
ファイルを開きます(ない場合は作成します)。
→ zshrcファイルはテキストエディットやVScodeなどのテキストエディタで開いてOKです。 -
次の行を追加します。
alias snowsql=/Applications/SnowSQL.app/Contents/MacOS/snowsql
→ snowsqlという名前で実行ファイルのエイリアスを登録 -
ファイルを保存します。
これで、SnowSQLのインストールは完了です!
SnowSQLを使ったチュートリル
SnowSQLのインストールが完了したので、チュートリアルをやってみましょう!
チュートリアルに沿って進めていきたいと思います。
まずは、サンプルファイルgetting-started.zip
をダウンロードして、/tmp
フォルダを作成し、その中にダウンロードしたファイルを解凍して準備しておきます。
SnowSQLへのログイン
それではターミナルで以下のコマンドを実行して、SnowSQLにログインしましょう。
$ snowsql -a <account_identifier> -u <user_name>
SnowSQLへログインする際の account_identifierとuser_nameは以下のとおりです。
account_identifier → 組織名-アカウント名
user_name → 各自のユーザー名
次のプロンプトでパスワードが要求されるので、SnowSight(SnowflakeのWebUI)にログインする際のパスワードを入力します。
ログインが完了すると下記キャプチャのように表示されると思います。
Snowflakeオブジェクトを作成する
このあとのチュートリアルの大まかな流れは以下のとおりです。
- チュートリアル用のデータベース、テーブル、ウェアハウスを作成する。
- ダウンロードしたサンプルファイルをSnowflakeにステージングする。(→テーブルにデータをロードするための場所=ステージにデータをアップロードする。)
- ステージングしたデータをテーブルに取り込む。
- クエリを試してみる。
- チュートリアル用に作成したデータベース、テーブル、ウェアハウスなどをクリーンアップする。
データベースの作成
それでは早速チュートリアル用のデータベース等を作成していきます。
まずはデータベースの作成です。下記のコマンドを実行します。
CREATE OR REPLACE DATABASE sf_tuts;
また、下記コマンドで現在のデータベースとスキーマを確認できます。
SELECT CURRENT_DATABASE(), CURRENT_SCHEMA();
テーブルの作成・ウェアハウスの作成
テーブルとウェアハウスについても、チュートリアルページのコマンドを実行して作成しましょう。
■テーブル作成
CREATE OR REPLACE TABLE emp_basic (
first_name STRING ,
last_name STRING ,
email STRING ,
streetaddress STRING ,
city STRING ,
start_date DATE
);
■ウェアハウス作成
CREATE OR REPLACE WAREHOUSE sf_tuts_wh WITH
WAREHOUSE_SIZE='X-SMALL'
AUTO_SUSPEND = 180
AUTO_RESUME = TRUE
INITIALLY_SUSPENDED=TRUE;
サンプルデータをステージングする
ダウンロードしたデータをSnowflakeにステージングします。
Snowflakeに記載のとおり、ステージとはテーブルにデータをロード・アンロードするための場所で、今回はそこにサンプルデータをアップロードしていきます。
mac環境なので以下のコマンドを実行してアップロードします。
PUT file:///tmp/employees0*.csv @sf_tuts.public.%emp_basic;
※/tmp/employees0*.csv
部分は、サンプルデータを解凍したフォルダ名に置き換えてください。今回はユーザーディレクトリ直下に配置したので/Users/ユーザー名/tmp/employees0*.csv
に置き換えています。
ステージングの状況は下記コマンドで確認できます。
LIST @sf_tuts.public.%emp_basic;
ステージングしたデータをテーブルにコピーする
ステージにあげたサンプルデータを先に作成したテーブルにコピーしましょう。
下記のコマンドを実行します。
COPY INTO emp_basic
FROM @%emp_basic
FILE_FORMAT = (type = csv field_optionally_enclosed_by='"')
PATTERN = '.*employees0[1-5].csv.gz'
ON_ERROR = 'skip_file';
以下のように結果にコピー結果が表示されればOKです!
テーブルに対してクエリを試してみる
チュートリアルに紹介されているクエリをそれぞれ試していきます!
データ取得
SELECT * FROM emp_basic;
データの追加(INSERT)
INSERT INTO emp_basic VALUES
('Clementine','Adamou','cadamou@sf_tuts.com','10510 Sachs Road','Klenak','2017-9-22') ,
('Marlowe','De Anesy','madamouc@sf_tuts.co.uk','36768 Northfield Plaza','Fangshan','2017-1-26');
LIKE関数を用いた抽出
SELECT email FROM emp_basic WHERE email LIKE '%.uk';
日付に基づいた抽出
SELECT first_name, last_name, DATEADD('day',90,start_date) FROM emp_basic WHERE start_date <= '2017-01-01';
データベースとウェアハウスをクリーンアップする
最後にチュートリアル用に作成したデータベース等をクリーンアップします。
下記コマンドを実行してデータベースとウェアハウスを削除します。
DROP DATABASE IF EXISTS sf_tuts;
DROP WAREHOUSE IF EXISTS sf_tuts_wh;
クリーンアップが完了したら、!exit
コマンドを実行してSnowSQLを抜けて、チュートリアルは終了です。
チュートリアルを通じて、一連の流れが体験できるので非常におすすめです!
また、SnowSQLはサジェストも効きますし、キャプチャのとおりシンタックスハイライトもしてくれるので、使いやすい雰囲気です。