11日目: 手を動かそう!Snowflakeアカウント作成からデータロードまで
はじめに:いよいよSnowflakeを体験しよう
昨日までで、クラウドデータウェアハウスの革新的なアーキテクチャ、特にSnowflakeの「ストレージとコンピュートの分離」について深く理解しました。理論だけでは終わらせません。今日からは、実際に手を動かしてSnowflakeのパワーを体験していきましょう。
11日目の今日は、Snowflakeのトライアルアカウントを作成し、簡単なテーブルを作成、そして外部のCSVファイルからデータをロードする一連の流れをハンズオン形式で解説します。これまでのOracleやMySQLの経験と照らし合わせながら、Snowflakeのシンプルさとパワフルさを実感してください。
1. Snowflakeアカウントの作成(無料トライアル)
Snowflakeは、30日間の無料トライアルを提供しています。クレジットカードの登録は不要で、すぐに始められます。
手順1:公式サイトにアクセス
まず、Snowflakeの公式サイトにアクセスし、画面右上の「Free Trial」ボタンをクリックします。
手順2:必要事項の入力
以下の情報を入力し、アカウントを作成します。
- First Name, Last Name: 氏名
- Company: 会社名(個人利用の場合は「Personal」などでOK)
- Email: メールアドレス
- Country/Region: 国
- Cloud Provider: Snowflakeをホストするクラウドプロバイダー(AWS, Azure, GCP)を選択します。どれを選んでも機能は同じです。
- Region: リージョンを選択します。日本国内であれば「Tokyo」を選択するのが一般的です。
手順3:メール認証とパスワード設定
登録したメールアドレスに認証メールが届きます。「Click to Activate」ボタンをクリックして、パスワードを設定します。これでアカウント作成は完了です。
手順4:ログインとワークシートの確認
設定したパスワードでログインすると、SnowflakeのWeb UI(Webインターフェース)が表示されます。左側のメニューから「Worksheets」を選択してください。ここが、SQLクエリを実行するための開発環境になります。
2. 仮想ウェアハウスとデータベースの作成
SnowflakeでSQLを実行するためには、まず処理を行うためのコンピュートリソースである「仮想ウェアハウス」と、データを格納するための「データベース」を作成する必要があります。
手順1:仮想ウェアハウスの作成
Snowflakeでは、デフォルトで「COMPUTE_WH」というウェアハウスが作成されていますが、ここでは練習用に新しく作成してみましょう。ワークシートに以下のクエリを入力して実行します。
-- 仮想ウェアハウスを作成
CREATE WAREHOUSE my_warehouse WITH
WAREHOUSE_SIZE = 'XSMALL'
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE;
-
WAREHOUSE_SIZE: 処理能力を決定します。XSMALLは最も小さいサイズで、学習には十分です。 -
AUTO_SUSPEND: ウェアハウスが使用されない状態が60秒続くと、自動的に停止し、コストの発生を止めます。 -
AUTO_RESUME: 次のクエリが実行されると、自動的に再開します。
手順2:データベースとスキーマの作成
次に、データを格納するためのデータベースとスキーマを作成します。
-- データベースを作成
CREATE DATABASE my_database;
-- 作成したデータベースを使用
USE DATABASE my_database;
-- スキーマを作成
CREATE SCHEMA public;
-- 作成したスキーマを使用
USE SCHEMA public;
OracleやMySQLのハンズオンで学んだように、スキーマはテーブルを論理的にグループ化する役割を担います。
3. CSVファイルからのデータロード
いよいよ、外部のCSVファイルをSnowflakeにロードしてみましょう。データロードは、データウェアハウスにおける最も基本的な作業の一つです。
ここでは、仮想的な従業員データをCSVファイルとして用意し、それをロードする手順を解説します。
手順1:ステージの作成
Snowflakeにデータをロードする際には、一度「ステージ(Stage)」と呼ばれる中間的な場所にファイルを配置します。これは、Snowflakeの内部ストレージや、AWS S3、Azure Blob Storageなどのクラウドストレージを指します。
ここでは、Snowflakeの内部ステージを使用します。
-- 内部ステージを作成
CREATE OR REPLACE STAGE my_internal_stage;
手順2:CSVファイルのアップロード
Web UIのワークシート画面で「Database」を選択し、my_database -> public -> my_internal_stage を選択します。
「Upload」ボタンをクリックし、手元のPCにあるCSVファイル(例:employees.csv)をアップロードします。
employees.csvの内容例
employee_id,first_name,last_name,department
101,John,Doe,Sales
102,Jane,Smith,Marketing
103,Peter,Jones,Engineering
104,Mary,Williams,Sales
手順3:テーブルの作成
アップロードしたCSVファイルをロードするためのテーブルを作成します。
CREATE TABLE employees (
employee_id INT,
first_name VARCHAR,
last_name VARCHAR,
department VARCHAR
);
手順4:CSVファイルからテーブルへのデータロード
COPY INTOというコマンドを使って、ステージに置いたCSVファイルからテーブルにデータをロードします。
COPY INTO employees
FROM @my_internal_stage/employees.csv
FILE_FORMAT = (TYPE = 'CSV' FIELD_DELIMITER = ',' SKIP_HEADER = 1);
-
@my_internal_stage/employees.csv: ステージにアップロードしたファイルへのパスを指定します。 -
FILE_FORMAT: ロードするファイルの形式を指定します。SKIP_HEADER = 1は、CSVファイルの1行目をヘッダーとしてスキップする設定です。
このコマンドを実行すると、CSVファイルの内容がemployeesテーブルにロードされます。
4. ロードしたデータの確認と簡単な分析
データがロードされたら、SELECT文を使って確認してみましょう。
-- ロードした全データを表示
SELECT * FROM employees;
-- 部署ごとの従業員数を集計
SELECT
department,
COUNT(*) AS employee_count
FROM
employees
GROUP BY
department
ORDER BY
employee_count DESC;
これらのSQLクエリは、これまでOracleやMySQLで使ってきたものと全く同じです。Snowflakeの強力な点は、このシンプルなSQLで、数テラバイト、数ペタバイトといった膨大なデータでも高速に分析できることです。
まとめ:Snowflakeの体験は、データエンジニアの第一歩
今日のハンズオンを通じて、あなたはSnowflakeの基本的な操作を学びました。
- アカウント作成:数分で分析環境が手に入る手軽さ。
- 仮想ウェアハウス:処理能力を柔軟に調整できる画期的な仕組み。
-
COPY INTOコマンド:高速なデータロード。
この体験は、データエンジニアとしての新しいキャリアの第一歩です。従来のデータベースの知識を活かしつつ、クラウドネイティブなデータウェアハウスのシンプルさとパワーを理解することは、今後のキャリアにおいて大きな武器となります。
明日からは、この体験をさらに深掘りし、より実践的なSnowflakeの使い方を学んでいきます。
- 明日(12日目): 複雑なデータも怖くない!JSON/半構造化データのロードと活用
- 13日目: Snowflakeの真骨頂!スケーラビリティとコスト管理の最適化
- 14日目: 2週間の総まとめ!データエンジニアとして未来を切り拓くために