1
/
5

-Qiita記事Part.18-【macOS】SnowflakeのCLIクライアント SnowSQLをインストールしてチュートリアルをやってみた

こんにちは、ナイトレイインターン生の星合です!
Wantedlyをご覧の方に、ナイトレイのエンジニアがどのようなことをしているか知っていただきたく、Qiitaに公開している記事をストーリーに載せています。
少しでも私たちに興味を持ってくれた方は下に表示される募集記事もご覧ください↓↓

1. はじめに

はじめまして、徳竹です。
株式会社ナイトレイで主に位置情報の分析や可視化、少しバックエンドに携わっています。

今回は、SnowflakeのCUIクライアント「SnowSQL」のインストールとチュートリアルを体験した内容を紹介します!

今回の作業環境は以下のとおりです。

【作業環境】
・ チップ Apple M1
・ macOS Ventura 13.3

※その他、Snowflake関連記事はコチラ↓

M1 Mac (Apple silicon)のTableauからSnowflakeへ接続に使うODBCドライバーは"mac64"版を選択する! - Qiita
はじめに最近(もう結構前から?)、データウェアハウスのSnowflakeがかなり注目されていますよね!そこで、今回はTableauからSnowflakeへの接続をテストしてみました!その際にハ...
https://qiita.com/se_yataro/items/21a7fcac1adcbc6ddd6b
Snowflakeで地理空間系関数(ST_*)をJOINの条件に利用すると激重になる件の解決方法 - Qiita
はじめに はじめまして、徳竹です。 株式会社ナイトレイで主に位置情報の分析や可視化等に携わっています。 データウェアハウスのSnowflakeでは地理空間データ型もサポートされており、様々な地理空間系の解析を行うことができます。 今...
https://qiita.com/se_yataro/items/55601060d69208a87523

2. SnowFlakeへのSnowSQLのインストール方法


SnowSQL のインストール | Snowflake Documentation
このトピックでは、 SnowSQL をダウンロードして、サポートされているすべてのプラットフォームにインストールする方法について説明します。 このトピックの内容: このセクションでは、インストーラーパッケージをダウンロード、検証、実行して、Linuxに SnowSQL をインストールする方法について説明します。 デフォルトでは、インストーラーはパッチバージョンが自動的にアップグレードされるように SnowSQL を設定します。自動アップグレード機能の情報については、 自動アップグレードとは何ですか? (こ
https://docs.snowflake.com/ja/user-guide/snowsql-install-config#installing-snowsql-on-macos-using-homebrew-cask

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のインストールは完了です!

3. SnowSQLを使ったチュートリル


前提条件 | Snowflake Documentation
このチュートリアルでは、データをロードおよびクエリするためにデータベース、テーブル、仮想ウェアハウスが必要です。これらのSnowflake オブジェクト を作成するには、必要なアクセス制御 権限 を持つ ロール とSnowflake ユーザー が必要です。さらに、チュートリアルの SQL ステートメントを実行するには、 が必要です。最後に、チュートリアルでは、ロードするサンプルデータを含む ...
https://docs.snowflake.com/ja/user-guide/getting-started-tutorial-prerequisites


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

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

4. SnowSQLへのログイン

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

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

SnowSQLへログインする際の account_identifierとuser_nameは以下のとおりです。
account_identifier → 組織名-アカウント名
user_name → 各自のユーザー名

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

5. 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;

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

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

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

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

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

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

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

データ取得

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';

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

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

DROP DATABASE IF EXISTS sf_tuts;

DROP WAREHOUSE IF EXISTS sf_tuts_wh;

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

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

10. 最後に

私たちの会社、ナイトレイでは一緒に事業を盛り上げてくれるGISチームメンバーを募集しています!
現在活躍中のメンバーは開発部に所属しながらセールス部門と密に動いており、
慣れてくれば顧客とのフロントに立ち進行を任されるなど、顧客に近い分やりがいを感じやすいポジションです。

このような方は是非Wantedlyからお気軽にご連絡ください(もしくは recruit@nightley.jp まで)

✔︎ GISの使用経験があり、観光・まちづくり・交通系などの分野でスキルを活かしてみたい
✔︎ ビッグデータの処理が好き!(達成感を感じられる)
✔︎ 社内メンバーだけではなく顧客とのやり取りも実はけっこう好き
✔︎ 地理や地図が好きで仕事中も眺めていたい

一つでも当てはまる方は是非こちらの記事をご覧ください 。
二つ当てはまった方は是非エントリーお待ちしております(^ ^)

「位置情報×モビリティ.まちづくりetc事業領域拡大の為GISエンジニア募集」


GISエンジニア
位置情報×モビリティ.まちづくりetc事業領域拡大の為GISエンジニア募集
私たちナイトレイは位置情報データの解析を得意としており、コロナ禍前までは「観光地にどのような国籍の人達が来ているのか」などの情報を位置情報データから読み解き、地方公共団体やインバウンド対策を行う企業様に多くのサービスやレポートをご提供してきました。 そして今、コロナ禍において世界中で海外旅行のあり方が変化する中、ナイトレイの位置情報データを解析する技術で日本人の生活者・旅行者の行動データを分析し、観光領域のみならず、まちづくりやMaaS領域にも活かしています。 「ロケーションデータで人々の生活を豊かに、社会をよりスマートに。」というMISSIONの下、独自技術をWEBツール化し、ロケーションデータを手軽に活用出来るようにすることで、ロケーションデータ解析を通じた経済的な地域活性化を目指しています。 
 ナイトレイではWEBツールのご提供のみならず、顧客の要望に沿った調査・分析も行っています。 携帯端末データ・アプリGPSデータ・決済データなどを組み合わせ、多角的に地域を分析できます。 このようなデータの掛け合わせによる調査・分析力が評価され、まちづくりやMaaS領域の取り組みも増えています。 ▼まちづくり(スマートシティプロジェクト) https://nightley.jp/archives/13772/ ▼MaaS領域の取り組み(Hondaと車両走行データの連携を開始) https://nightley.jp/archives/13870/ 位置情報データの活用の幅は広く、これからどんどん事業領域は広がります。 是非あなたのGIS×「好きなこと」をナイトレイで生かしてください!
株式会社ナイトレイ


「裁量が大きい会社でAWSの知識を活かす!インフラ周りの設計・監視好き募集中」


サーバーサイドエンジニア
裁量が大きい会社でAWSの知識を活かす!インフラ周りの設計・監視好き募集中
ナイトレイは、2011年の創業時から位置情報ビッグデータの可能性に着目し、観光分析・インバウンド対策・まちづくり・MaaSの領域で分析ダッシュボード 、分析レポーティング、カスタマイズ提案などの形で地域活性化支援ソリューションを提供してきました。 とある観光地に「どのような人達が来ているのか」「もっとこうしたらこんな人達が来てくれるのではないか」といった疑問をロケーションビッグデータから読み解き、自治体や民間企業とともに戦略を立てるなど、社会をよりスマートにする取り組みを行っています。 ▍旅行者/居住者分析サービス「CITY INSIGHT」  https://cityinsight.nightley.jp/  ・Webツール提供  ・データ分析支援サービス  ・解析データカスタマイズ  ・カスタマイズレポーティング 調査データの提示に終わらず、データに基づく「課題の解決手段」をご提案しています。
株式会社ナイトレイ


▼ナイトレイとは?


株式会社ナイトレイの会社情報 - Wantedly
株式会社ナイトレイの魅力を伝えるコンテンツと、住所や代表・従業員などの会社情報です。ナイトレイは、ロケーションビッグデータ解析技術を用いた地域活性化支援サービスを得意としています。 当社は独自のロケーションビッグデータ解析技術をWEBツール化したものを手軽に利用出来るようにし、テクノロジーの力で地域を変えていくという想いを持っています。 ...
https://www.wantedly.com/companies/nightley
株式会社ナイトレイからお誘い
この話題に共感したら、メンバーと話してみませんか?
株式会社ナイトレイでは一緒に働く仲間を募集しています
1 いいね!
1 いいね!

同じタグの記事

今週のランキング

Shusuke Hoshiaiさんにいいねを伝えよう
Shusuke Hoshiaiさんや会社があなたに興味を持つかも