【Snowflake】テーブル作成手順をSnowCLIとSnowSQLで比較してみる

【Snowflake】テーブル作成手順をSnowCLIとSnowSQLで比較してみる | Tableau-id Press -タブロイド-
snowflake-logo-1200x630-960x504-1

こんにちは。ozawaです。

今日はSnowCLIを用いて、ローカルのcsvからテーブルを作成してみようと思います。

ここで、ローカルのcsvからテーブルを作成する手順のおさらいです。

① ローカルのcsvをSTAGEにアップ

② テーブルをCREATE

③ STAGEからテーブルをINSERT

これらの手順をSnowCLIで確認していきます。

また、SnowSQLでも同様の操作ができるので、SnowCLIとSnoSQLの操作を照らし合わせてみます。

 

ローカルcsvからテーブルを作成(SnowSQL vs SnowCLI)

今回は、以下のような都道府県コード・名称を格納したcsvから、テーブルを作ってみます。

⓪ 環境に入る

SnowSQLの場合

SnowSQLコマンドの初回時、アカウント名やユーザ名、DB名等を入力します。

snowsql -a xxxxx.ap-northeast-1.aws -u USER -d OZAWADB -s PUBLIC -r ROLE -w WH

SnowCLIの場合

「snow connection add」コマンドで、SnowSQLと同様にアカウント名やユーザ名、DB名等を入力します。

snow connection add 

※ 接続方法の詳細は、mimuraさんのこちらのブログを参照ください!!

① ローカルcsvをSTAGEにアップ

ローカルcsvをSTAGEにアップするために、名前付きSTAGEを作成し、名前付きSTAGEにcsvをアップしていきます。

SnowSQLの場合

名前付きSTAGEを作成するには、CREATE STAGEを使用し、名前付きSTAGEにcsvをアップする作業はPUTコマンドを使用します。

//「TEST」STAGEを作成
CREATE STAGE @TEST;

//ローカルのtest.csvファイルをSTAGEにアップ
PUT "C:\xxxxx\test.csv" @TEST;

SnowCLIの場合

CREATE STAGEの代わりに「snow object stage」コマンドを使用し、PUTコマンドの代わりにアップ作業では「snow object stage copy」コマンドを使用します。

//「TEST」STAGEを作成
$ snow object stage create test; //ローカルのtest.csvファイルをSTAGEにアップ
$ snow object stage copy C:/xxxxx/test.csv @test

② テーブルを作成する

csvデータのINSERT場所を作るために、テーブルをCREATEします。

SnowSQLの場合

CREATE TABLE文を叩きます。

//「TEST」テーブルを作成
CREATE TABLE TEST (PREF_CODE CHAR(2), PREF_NAME VARCHAR(4));

SnowCLIの場合

SnowCLIにはテーブル作成の特定コマンドがないので、「snow sql -q <QUERY>」でCREATE TABLE文を呼び出します。

//「TEST」テーブルを作成
snow sql -q 'CREATE TABLE TEST_CLI (PREF_CODE CHAR(2), PREF_NAME VARCHAR(4))'


③ STAGEからテーブルにデータをINSERT

テーブルを作成し、STAGE上にcsvファイルを格納できたので、csvファイルデータをテーブルに流し込みます。

SnowSQLの場合

COPY INTOでTESTテーブルにデータを挿入します。

今回のcsvがヘッダ有・SJISだったので、FILE_FORMATで設定を追加します。

COPY INTO TEST FROM @TEST FILE_FORMAT = (SKIP_HEADER = 1, ENCODING = 'SHIFTJIS');

SnowCLIの場合

COPY INTO文もSnowCLIには特定コマンドがないので、「snow sql -q <QUERY>」を使用します。

snow sql -q 'COPY INTO TEST FROM @TEST FILE_FORMAT = (SKIP_HEADER = 1, ENCODING = 'SHIFTJIS')'

COPY INTO文もSnowCLIには特定コマンドがないので、「snow sql -q <QUERY>」を使用します。

 

以上の手順を踏むと、Snowflake上にテーブルを展開できます。

SnowCLIとSnowSQLの所感

CREATE TABLEやCOPY INTOの作業のように、SnowCLIには、まだ整備されていないコマンドが多くあります。

また、今回のテーブル作成手順の中では、実はSnowSQLのほうが記述したクエリの文字数が少ないので、基本的なSnowflake動作に関しては、SnowSQLのほうがやや楽という点はあります。

SnowCLIの本領が発揮されるのが、Snowpark(関数やプロシージャ)やStreamlit、Container、Appといった操作手順が多いオブジェクトになります。

SnowCLIにはこれらのオブジェクトの専用コマンドが用意されており、少ない手順で作業できます。

SnowCLIによるAppの開発手順や、Streamlitの開発手順のブログを参照ください。

おわりに

truestarでは、Snowflake導入検討、導入支援や環境構築まで幅広くサポート可能です。
Snowflakeに゙興味がある、導入済みだけどもっとうまく活用したい等々ありましたら、ぜひこちらから相談ください!

また、truestarではSnowflake Marketplaceにて、加工済みオープンデータを無償提供するPrepper Open Data Bank、全国の飲食店の情報を集めたデータセットの販売を行っております。(サービスリンク

これまでのSnowflakeに関する記事はこちら