LoginSignup
3
0
お題は不問!Qiita Engineer Festa 2023で記事投稿!

【macOS】SnowflakeのCLIクライアント SnowSQLをインストールしてチュートリアルをやってみた

Last updated at Posted at 2023-06-26

はじめに

今回は、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が実行できるようになります。

※以下、公式ドキュメントから引用+追記

  1. ~/.zshrc ファイルを開きます(ない場合は作成します)。
    → zshrcファイルはテキストエディットやVScodeなどのテキストエディタで開いてOKです。

  2. 次の行を追加します。
    alias snowsql=/Applications/SnowSQL.app/Contents/MacOS/snowsql
    → snowsqlという名前で実行ファイルのエイリアスを登録

  3. ファイルを保存します。
    これで、SnowSQLのインストールは完了です!

SnowSQLを使ったチュートリル

SnowSQLのインストールが完了したので、チュートリアルをやってみましょう!
チュートリアルに沿って進めていきたいと思います。

まずは、サンプルファイルgetting-started.zipをダウンロードして、/tmpフォルダを作成し、その中にダウンロードしたファイルを解凍して準備しておきます。
スクリーンショット_2023_06_26_14_38.png

SnowSQLへのログイン

それではターミナルで以下のコマンドを実行して、SnowSQLにログインしましょう。

$ snowsql -a <account_identifier> -u <user_name>

SnowSQLへログインする際の account_identifierとuser_nameは以下のとおりです。
account_identifier → 組織名-アカウント名
user_name → 各自のユーザー名
スクリーンショット_2023_06_26_14_00.png

次のプロンプトでパスワードが要求されるので、SnowSight(SnowflakeのWebUI)にログインする際のパスワードを入力します。
ログインが完了すると下記キャプチャのように表示されると思います。
スクリーンショット_2023_06_26_14_07.png

Snowflakeオブジェクトを作成する

このあとのチュートリアルの大まかな流れは以下のとおりです。

  • チュートリアル用のデータベース、テーブル、ウェアハウスを作成する。
  • ダウンロードしたサンプルファイルをSnowflakeにステージングする。(→テーブルにデータをロードするための場所=ステージにデータをアップロードする。)
  • ステージングしたデータをテーブルに取り込む。
  • クエリを試してみる。
  • チュートリアル用に作成したデータベース、テーブル、ウェアハウスなどをクリーンアップする。

データベースの作成

それでは早速チュートリアル用のデータベース等を作成していきます。
まずはデータベースの作成です。下記のコマンドを実行します。

CREATE OR REPLACE DATABASE sf_tuts;

また、下記コマンドで現在のデータベースとスキーマを確認できます。

SELECT CURRENT_DATABASE(), CURRENT_SCHEMA();

スクリーンショット_2023_06_26_14_21.png

テーブルの作成・ウェアハウスの作成

テーブルとウェアハウスについても、チュートリアルページのコマンドを実行して作成しましょう。

■テーブル作成

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;

スクリーンショット_2023_06_26_14_25.png

サンプルデータをステージングする

ダウンロードしたデータを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;

スクリーンショット_2023_06_26_14_36.png

ステージングしたデータをテーブルにコピーする

ステージにあげたサンプルデータを先に作成したテーブルにコピーしましょう。
下記のコマンドを実行します。

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です!

スクリーンショット_2023_06_26_14_51.png

テーブルに対してクエリを試してみる

チュートリアルに紹介されているクエリをそれぞれ試していきます!

データ取得

SELECT * FROM emp_basic;

スクリーンショット_2023_06_26_14_55.png

データの追加(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');

スクリーンショット_2023_06_26_14_57.png

LIKE関数を用いた抽出

SELECT email FROM emp_basic WHERE email LIKE '%.uk';

スクリーンショット_2023_06_26_14_58.png

日付に基づいた抽出

SELECT first_name, last_name, DATEADD('day',90,start_date) FROM emp_basic WHERE start_date <= '2017-01-01';

スクリーンショット_2023_06_26_15_00.png

データベースとウェアハウスをクリーンアップする

最後にチュートリアル用に作成したデータベース等をクリーンアップします。
下記コマンドを実行してデータベースとウェアハウスを削除します。

DROP DATABASE IF EXISTS sf_tuts;

DROP WAREHOUSE IF EXISTS sf_tuts_wh;

クリーンアップが完了したら、!exitコマンドを実行してSnowSQLを抜けて、チュートリアルは終了です。

スクリーンショット_2023_06_26_15_03.png

チュートリアルを通じて、一連の流れが体験できるので非常におすすめです!
また、SnowSQLはサジェストも効きますし、キャプチャのとおりシンタックスハイライトもしてくれるので、使いやすい雰囲気です。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0