snowflakeを初めて使ってみて　備忘録

# はじめに

私は初めてプロジェクト参画する前にsnowflakeの無料トライアルを用いて学習を行い、プロジェクトに参画した中で**苦労した点が2つ**ありました:scream:

* SQLをサイトで学習してみたけど、細かいデータベースの見方や、使い方がわからない

* お客様環境と無料トライアルとの違いがありすぎる

ということで、snowflakeを初めて触る人向けに記事を記載することにしました！

今回の記事のアジェンダは以下の通りです :writing_hand_tone1:

* snowflakeの基本構成をハンズオン形式で簡単なSELECT文を実行
* お客様環境と無料トライアルの違い



# まず、snowflakeって？
Snowflakeは、米国Snowflake Inc.が提供するクラウドベースの**データプラットフォーム**です。


データプラットフォームとは・・・
企業が保有するデータを**統合・管理・分析**するツールです:information_desk_person_tone1:


# snowflakeを使ってみよう
## 今回やってみること
顧客番号が、**5220063**の人を選んで、削除してみましょう！

* データベースの確認
* ワークシートの作成
* 実行する

の流れで行います！

## 無料トライアルアカウント作成

30日間無料でトライアルアカウントを使用できます。
メールアドレスがあれば作成できます！

その他の設定は基本スキップで問題ありません！
データベースはAWSにしてみました:ok_woman:

https://signup.snowflake.com/?utm_cta=website-login-page-trial&_fsi=7rsxSv1f&_ga=2.7744818.1880873939.1725500723-1327980796.1724639725&_gac=1.95151854.1724979377.CjwKCAjwuMC2BhA7EiwAmJKRrCg9DbDjfWAvLNF2KE5AV4gp-QzVRH3Wluc7RiFRvLsiB7VMAgb3-BoCF9AQAvD_BwE&referrer=snowsight


英語が苦手な人は設定必須！
myprofile　⇒　language
で日本語設定ができます

![スクリーンショット 2024-12-09 174059.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3881582/0a7563b8-12d3-90b7-0901-62aa50cf29a5.png)

![スクリーンショット 2024-12-09 174326.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3881582/86622579-0ee5-fade-cf5c-539b84cbb99a.png)



## データベースの確認
snowflakeではサンプルデータを用意してくれています！

ログインしたら、snowflakeにあるデータベースを確認してみましょう。
データベースのタブから確認できます。


今回、実行に使用するデータベース、スキーマ
データベース：**SNOWFLAKE_SAMPLE_DATA**
スキーマ：**TPCH_SF100**

:::note info
データベース > SNOWFLAKE_SAMPLE_DATA > TPCH_SF100 >データプレビュー
からどんなデータが入っているか確認できます。
:::



![スクリーンショット 2024-12-10 141151.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3881582/703ff435-2aa0-e7c4-7a3c-2c605c59895f.png)

:::note warn
プロジェクトの際はテーブル定義書を確認します。
:::

CUSTOMERというテーブルにC_CUSTKEYで定義されている列があることがわかります。

## ワークシートの作成

次はワークシートを作成してみましょう。
プロジェクト ＞ ワークシート ＞ 右上の＋ボタンのSQLワークシートを作成をクリック


![スクリーンショット 2024-12-10 142321.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3881582/cef9afdf-6f33-1a64-9432-4d276ecc3537.png)

デフォルトではワークシートを作成した時間になっているので、ダブルクリックして**シート名を変更**しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3881582/d9ba40f1-4528-8ed0-9366-cf8a32b39aa0.png)

:::note warn
ワークシートは**そのワークシートでやったこと_自分の名前**などで保存しておくと他のメンバーが見ても作成者が何をしたのか理解しやすいので変えるように意識しましょう。

:::

今回はTESTと名前を付けてみました。


## 実行する

### データベースとスキーマを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3881582/f329b740-4542-2519-6e58-d8aaf41ebdac.png)

### 権限とウェアハウスを指定

今回はACCONTADMINという権限を付与して、ウェアハウスはCOMPUTE_WHとします。

:::note warn
ウェアハウスの指定については**お客様環境との違い**でお話しします

:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3881582/9131d9ff-3b46-1ccb-9e99-0801bbb029d0.png)

### SQL文を記載し、実行します。

```
SELECT * FROM CUSTOMER WHERE C_CUSTKEY = 5220063;
```

実行する際は、**実行する部分を選択してから、実行ボタンを押しましょう！**

:::note warn
理由は下の**お客様環境との違い**の章で説明します

:::


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3881582/a60ed0be-e122-34b7-9e9f-0506b358544b.png)

:::note info
無事、顧客番号が、5220063の人を選ぶことができましたね！

:::

# お客様環境との違い

私がお客様環境と無料トライアルを使用する際に感じた違いを

*  データ分析基盤の三層構造
* 実行の仕方

の観点でお話します:raised_hand:
## データ分析基盤の三層構造

今回使用したsnowflakeではサンプルデータがもともと入っていました。
しかし、実際のお客様環境は様々なシステムとたくさんのデータを連携しています。
どこに何のデータがあるかを分類する必要があります。
そこで活用されている考え方が**データ分析基盤の三層構造**です。


プロジェクト使用したのは**DS層,CWH層,DM層**の3つです。
* **DS(Data Sourse)**
データの読み込みや書き出しを行うためのデータベース
* **CWH(Central Ware House)**
企業全体にわたるデータを中央に集中化したデータウェアハウス
* **DM(Data Mart)**
特定の目的に使用するデータのみを抽出して格納するデータベース

:::note info
ウェアハウスを分類することで、どこの処理にそれくらいのコストがかかっているかや役割の分担などをスムーズに行うことができます。
:::



## 実行の仕方
右上の▶ボタンは実行ボタンですが、ワークシート上からすべてを実行してしまいます。

:::note alert
お客様環境で新しくテーブルを作成したり、違う時間でタスクを作成してしまうと**本番環境に影響を及ぼす可能性**があります:fearful:

:::


実行する際は、**実行したいSQL文の部分をマウスでドラッグして選択してから、実行ボタンを押しましょう**。
この手順を守ることで、意図しないクエリの実行を避けることができます。


# おわりに
今回snowflakeについてまとめてみて、初めて使用する人に説明するにはどうするべきかや調べなおしや嘘を言っていないかの確認など意外と考えることが多く、苦労しました。

記事にしてみることで知識が整理されたり、新たな疑問に気付いたりすることができたので、今後も投稿していきたいと思います。

学習方法について時間があれば追記したいです:fearful: