Snowflakeは、データ分析基盤の構築において高い評価を受けている、代表的なSaaS型のデータウェアハウスです。優れたスケーラビリティやコスト効率の良さ、マルチクラウド環境への対応などが特徴で、世界中の多岐にわたる企業で導入されています。

しかし、Snowflakeに興味があり導入を検討しているものの、「どこから学び始めればよいか分からない」「そもそもどのようなツールなのか知らない」といった方も多いでしょう。本記事では、そういった方々に向けて、Snowflakeの概要や特徴、基本的なSQL操作について解説します。

Snowflakeの基本構造と仕組みを理解する

このセクションでは、Snowflakeの概要やアーキテクチャ、ほかのDWHとの違いについて解説します。

Snowflakeとは?

Snowflakeは、Snowflake社が提供するSaaS型のDWH(データウェアハウス)およびデータレイクプラットフォームです。DWHやデータレイクとしての一般的な機能のみならず、Snowparkによるプログラミング実行機能やStreamlitによる簡易アプリ作成機能など、独自の機能が多く提供されています。

Snowflakeの特徴は、ストレージとコンピューティングを分離したアーキテクチャを採用している点です。これにより、以下のようなメリットを創出しています。

  • スケールアップ/ダウンの柔軟性
  • 同時並行処理への強さ
  • データシェアリング機能の実現

また、Snowflakeはマルチクラウド環境を採用しています。したがって、AWSやAzure、GCPといった、他の業界標準のDWHともデータ連携させることが可能です。これにより、万が一特定のDWHでトラブルが生じた際も、動作環境を別のDWHに切り替えられるようになります。

Snowflakeのアーキテクチャ

初期のDWHでは、複数ノードが同一のストレージにアクセスする「シェアード・エブリシング」と呼ばれるアーキテクチャを採用していました。しかしこの方式では、アクセスの競合が発生するため、処理性能や拡張性に限界がありました。

この課題を解決したのが、各ノードが独立したストレージを持つ「1対1の対応関係」を取る「シェアード・ナッシング」のアーキテクチャです。この方式では、ストレージでのアクセスの競合を起こさず、ノード拡張も容易です。一方、新たな課題として、データ分散やノード障害の対応などに手間がかかる側面がありました。

そこでSnowflakeのDWHでは、「マルチクラスター・シェアード・データ・アーキテクチャ」と呼ばれる、独自のアーキテクチャをとりました。これは、「ストレージ層」「コンピュート層」「クラウドサービス層」の3層アーキテクチャにより、DWHの複数の役割を明確に分離した概念です。

  • クラウドサービス層
    システム全体の制御を行う部分です。ユーザー認証やアクセス制御、クエリ解析、メタデータ管理、バックアップやリカバリの自動化を実行します。
  • コンピュート層
    仮想ウェアハウスと呼ばれるコンピューティングリソースにより、実際のクエリ処理やデータ変換などを行う部分です。必要に応じて複数のクラスターが並行稼働し、負荷の分散やそれによるパフォーマンス向上を図ります。
  • ストレージ層
    データの保存を担う部分です。Amazon S3やAzure Blob Storageなどのクラウドストレージを基盤としており、ここにテーブルデータなどが保管されています。

これにより、複数のユーザーが同時に処理を行っても互いに干渉せず、安定したパフォーマンスを維持できます。また、処理リソースは必要なときだけ柔軟にスケールアップ/ダウンできるため、コスト効率にも優れています。

Snowflakeが選ばれる理由

Snowflakeの大きな特長として、スケーラビリティの高さとコスト効率が挙げられます。

独自の3層アーキテクチャにより、ストレージと分離してコンピュートリソースを自由に拡張・縮小できます。仮想ウェアハウスはXS〜6XLまでの10段階でサイジングでき、容易にスケールアップ/ダウンさせることが可能です。さらに、クエリの同時実行数に応じて、稼働するクラスター数を自動調節する機能も備わっています。

またSnowflakeは、実際にクエリを実行した分のみ課金される従量課金制を採用しているため、無駄なコスト発生が抑制されます。加えて、ワークロードごとに仮想ウェアハウスを作成し、それぞれに最適なサイズを割り当てることも可能です。

【Snowflake導入事例】開発期間を4ヶ月短縮し、開発コストを50%削減。保守作業管理を円滑にし、現場の施工スケジュールに貢献したSaaS中心に構成するデータ基盤の全容とは
https://primenumber.com/cases/nttsmileenergy

Snowflakeの導入前に知っておくべきポイント

求められる基本知識・スキル

Snowflakeをスムーズに導入・活用するためには、以下の3つの基礎知識・スキルを押さえておくことが重要です。

  • SQLスキル
    Snowflakeのデータ操作は基本的にSQLで行われます。SELECT文やJOIN、GROUP BYなどの基本文法を理解しておくことで、データ抽出や集計、テーブル作成などの操作がスムーズになります。
  • データベースに関する知識
    データをどのように格納し、どのような単位で管理するかを決定する際、RDB(リレーショナルデータベース)についての理解が求められます。また、テーブルを設計する際には、数値や文字列などのデータ型やデータの正規化に関する知識が必要です。
  • 各種オブジェクトの概念理解
    Snowflakeには、データベース、スキーマ、テーブル、ビュー、仮想ウェアハウスなどの各種オブジェクトが存在します。効率的なリソース管理やクエリ実行には、これらの役割や関係性への理解が欠かせません。

料金体系とコストコントロールの考え方

Snowflakeの利用コストは、「コンピューティング」「ストレージ」「データ転送」のいずれかによって発生します。

コンピューティングコス

コンピューティングで発生するコストは、以下の3つに分けられます。

  • 仮想ウェアハウス
    仮想ウェアハウスの使用時間に応じて決まる料金です。タイプとサイズごとに設定されている時間単価(クレジット)×起動していた時間で算出され、クレジット単価は、クラウドサービス、リージョン、エディションで決まります。一般に、全体の利用コストのうち、この仮想ウェアハウスの割合が最も大きくなります。
  • サーバーレス
    Snowflakeのサーバーレス機能では、ユーザーが仮想ウェアハウスを用意しなくても、Snowflake側が自動的にコンピューティングリソースを割り当てて処理を実行します。これにかかる処理時間に応じて課金されるのが、サーバーレス料金です。
  • クラウドサービス
    クラウドサービス層において、メタデータ管理やユーザー認証、クエリ最適化などに伴い発生する料金です。クラウドサービスの日次消費量が仮想ウェアハウスの日次使用量の10%を超えた場合にのみ請求される料金であるため、一般的な利用では請求対象外になるケースが多いです。

コンピューティングコストについての詳細はこちら

ストレージコスト

基本的にはデータベースのテーブルとステージの保存容量です。ストレージ料金についてはクレジットを挟まず、1ヶ月の平均ストレージ容量(TB)×ストレージ単価($/TB)で算出されます。

ストレージ料金は、1ヶ月で1TBを保存しても$25と安価であるため、コスト割合としては比較的小さくなります。(リージョン:AWS Tokyo、エディション:キャパシティプランの場合)

ストレージコストについての詳細はこちら

データ転送コスト

Snowflakeから外部サービスにデータ転送する際に発生する料金です。しかし、ストレージよりもさらに低コストとなる場合が多く、一般的に全体コストの中で占める割合は小さいです。

データ転送コストについての詳細はこちら

クラウド環境の選択

Snowflakeは独自の環境ではなく、「AWS」「Microsoft Azure」「Google Cloud」のクラウド環境を借りてサービス提供されています。そのため、Snowflakeの利用開始にあたっては、どのクラウド環境を使用するかをはじめに選択する必要があります。

どのクラウド環境を使用するかで基本的な機能はほとんど変わりませんが、リージョンによってサポート環境が異なります。2025年4月現在、東京リージョンでサポートされているクラウド環境は、AWSとMicrosoft Azureです。

その他地域のクラウドリージョンを確認したい方はこちら

Snowflake無料トライアルの登録手順

Snowflakeでは30日間の無料トライアルが提供されています。Snowflakeの導入を検討している方は、トライアルを活用して機能やパフォーマンス、操作性を実感しましょう。

まず、Snowflakeの無料トライアル登録サイトへアクセスします。このサイトから、「氏名」「仕事用メールアドレス」「電話番号」「サインアップの理由」などを入力します。

続いて、「会社名」「ジョブタイトル」を入力し、「エディション」「クラウドプロバイダー」「地域(リージョン)」を選択します。

その後、アカウント登録に使用したメールアドレスに認証メールが届きます。このメール内の「CLICK TO ACTIVATE」をクリックし、認証を行います。

最後に「ユーザー名」「パスワード」を設定して、初期設定は完了です。

その後、以下のウェブインターフェースに自動で遷移します。

残りのクレジットやトライアル終了日は、左のメニュー欄の一番下に表示されています。

トライアル期間終了後、アカウントは一時停止状態となります。ログイン自体は可能ですが、仮想ウェアハウスの実行やデータのロード、クエリの実行などの機能は使用できなくなります。

有料アカウントへの移行は以下のような手順で行います。

  1. Snowflakeにログインします。
  2. 左メニューの残りクレジットが表示されているところから、「アップグレード」を選択します。
  3. 「支払い方法」から、クレジットカード情報を入力します。
  4. 必要に応じて、エディションやクラウドプロバイダー、リージョンの設定を確認・変更します。

これにより、トライアルアカウントが有料アカウントに変換され、引き続きSnowflakeのサービスを利用できます。

【Snowflake導入事例】ひとりデータチームから、複数サービスの垣根を越えてETLとデータを活用できるようになるまでの道のり(dely株式会社)
https://primenumber.com/cases/dely

ウェブインターフェースでの基本操作

ロールの切り替え

Snowflakeでは、主に以下の5種類のロールを各ユーザーに定義できます。

  • ACCOUNTADMIN:システムの最上位ロール
  • SECURITYADMIN:セキュリティ権限の付与・取消を行えるロール
  • USERADMIN:ユーザーとロールの管理専用のロール
  • SYSADMIN:DWH・データベースの作成権限を持つロール
  • PUBLIC:権限を持たないロール

また、これらのロールにくわえ、ユーザーが自由に設定できる「カスタムロール」も存在します。

これらのロールの階層と権限の継承は、以下のような構造です。

アクセス制御についての詳細はこちら

左下のアカウント欄から「ロールを切り替え」をクリックすることで、各ロールの変更を実行できます。

ウェアハウスの作成・編集

新しいウェアハウスを作成する際は、左のメニューから「管理者」「ウェアハウス」の順に選択し、右上の「ウェアハウス」ボタンをクリックします。

まず、ウェアハウスの名前を決定します。ここでは、営業部向けの作成を想定し、「SALES_WH」とします。

次に、ウェアハウスのサイズを指定できます。サイズはXS〜6XLの10種類存在し、サイズが大きいほどウェアハウスの性能も高いです。ただし、サイズの増大に応じて、時間あたりに請求されるクレジットも多くなります。

また、「自動再開」「自動一時停止」「マルチクラスターウェアハウス」などのオプションを選択することも可能です。全ての設定が完了したら、右下の「ウェアハウスを作成」ボタンをクリックします。

ただし、このままでは他のメンバーが使用できないため、権限を付与する必要があります。「SALES_WH」の欄を選択し、「権限」ボタンをクリックします。

たとえば、権限を付与する対象のロールとして「PUBLIC」を選択し、付与する権限の種類として「USAGE」を選択します。

これにより、PUBLICロールのユーザーに、このウェアハウスを使用する権限を付与できます。

なお、初期段階では「COMPUTE_WH」「SNOWFLAKE_LEARNING_WH」などのウェアハウスが作成されています。ウェアハウスについての編集を行いたい場合は、そのウェアハウスの表示欄を右にスライドし、設定ボタンから「編集」をクリックします。

データベースの作成

新しいデータベースを作成する際は、左のメニューから「データ」「データベース」の順に選択し、右上の「データベース」ボタンをクリックします。

次に、データベースの名前を決定します。たとえば、営業部向けのデータベースを作成したい場合、「SALES」と入力します。

これにより、新しいデータベースが作成されます。

他のメンバーが使用できるよう、ウェアハウスと同様に権限付与を行います。「SALES」の欄を選択し、「権限」ボタンをクリックします。

たとえば、権限を付与する対象のロールとして「PUBLIC」を選択し、付与する権限の種類として「USAGE」を選択します。

これにより、PUBLICロールのユーザーへ、このデータベースを使用する権限を付与できます。

また、特定のデータベースを選択すれば、そのデータベース内のテーブルに含まれるデータの詳細を確認することも可能です。

テーブルの作成

既存のデータベースに新しいテーブルを作成する際は、左のメニューから「プロジェクト」「ワークシート」の順に選択し、右側の「+」ボタンをクリックします。

次に、データベースとして事前に作成した「SALES」を選択し、スキーマが「PUBLIC」になっていることを確認します。

また、事前に作成した「SALES_WH」をウェアハウスとして選択します。

次に、テーブルを作成するためのSQLクエリを記述します。今回は例として、顧客テーブルと受注テーブルを作成します。SQLクエリの記述が完了したら、右上のボタンから「すべて実行」を選択します。

クエリが正常に実行されたことを確認します。

正常に実行されていれば、データベース内にテーブルが作成されます。

データのロード

事前に作成したテーブルにデータをロードする手順をご紹介します。Snowflakeでは、構造化データと非構造化データにくわえ、内部ステージ/外部ステージからのロードも可能です。ウェブインターフェースを使用したデータのロードについて、より詳しく知りたい方は以下の公式ドキュメントをご覧ください。

ウェブインターフェイスを使用したデータのロード | Snowflake Documentation

構造化データ・半構造化データ

左のメニューから「データベース」を選択し、データベース選択画面から「SALES」「PUBLIC」「テーブル」「CUSTOMERS」の順にタブを展開します。CUSTOMERSテーブルに遷移したら、右上の「データをロード」ボタンをクリックします。

まず、ウェアハウスが「SALES_WH」になっていることを確認します。

ロードしたいデータをファイル参照、もしくはドラッグ&ドロップで選択します。また、内部ステージの中でも「名前付き内部ステージ」であれば、ドラッグ&ドロップによりロード可能です。

データがロードされていることと、データベースとして「SALES」、スキーマとして「PUBLIC」が指定されていることを確認したら、「次へ」をクリックします。

ロードするファイル形式を選択します。ここでは、CSVやTSVなどの構造化データやJSONやXMLなどの半構造化データを指定可能です。また、以下のデータのように一行目がタイトル行となっている場合は、「最初の行にはヘッダーが含まれます」を選択します。

テーブルビューを確認し問題がなければ、右下の「ロード」ボタンをクリックします。

データのロードが成功した場合、以下のように「データが正常にロードされました」と表示されます。

外部ステージ

Snowflakeでは、選択しているクラウド環境に関わらず、Amazon S3、Google Cloud Storage、Microsoft Azureの外部ステージからデータをロードできます。

基本的なSQL操作

Snowflakeのウェブインターフェースでは、ワークシートを使用してSQLを実行できます。ここでは、基本的なSQL文を3つご紹介します。

SELECT

SELECTは、テーブルから特定の列やデータを抽出したい場合に使用するSQLです。「顧客の名前とメールアドレスだけを一覧で見たい」「注文データの中から、注文日と金額だけを表示したい」といったケースで使用します。

SELECTの基本的なフォーマットは以下の通りです。

SELECT * FROM <テーブル名>;

また、SELECT文では便利なオプションがいくつか存在します。ここでは、主なオプションを4つご紹介します。ただし、以下で紹介する構文は、Snowflake独自の拡張機能であり、PostgreSQLやMySQLなどの標準SQLでは使用できません。

EXCLUDE

()内で指定したカラムを除き、それ以外のすべてのカラムを出力できます。

SELECT * 
EXCLUDE(CUSTOMER_ID) 
FROM CUSTOMERS; 

RENAME

()内で指定したカラム名を変更し、すべてのカラムを出力できます。()内では、「<変更前カラム名> AS <変更後カラム名>」の形で記述します。

SELECT * 
RENAME(CUSTOMER_ID AS CUSTOMER_NUMBER) 
FROM CUSTOMERS; 

ILIKE

カラム名を文字列検索し、マッチした全カラムを出力します。「’% <カラム名> %’」の形で指定します。

SELECT * 
ILIKE '%NAME%' 
FROM CUSTOMERS;

REPLACE

特定のカラムの値を変更したうえで全カラムを出力できます。以下の例では、to_char 関数で文字列に変換し、演算子||で「円」という文字列を結合しています。

SELECT * 
REPLACE(to_char(UNIT_PRICE) ||'円' AS UNIT_PRICE)  
FROM ORDERS;

INNER JOIN

INNER JOINは、2つ以上のテーブルを共通する項目でつなげて、関連する情報を一緒に表示するためのSQLです。

たとえば、顧客情報(CUSTOMERSテーブル)と注文情報(ORDERSテーブル)を紐付けたい場合、以下のように記述します。

SELECT
 A.ORDER_ID,
 A.ORDER_DATE,
 A.UNIT_PRICE,
 B.CUSTOMER_ID,
 B.FIRST_NAME,
 B.LAST_NAME,
 B.EMAIL,
 B.PHONE,
 B.COUNTRY
FROM ORDERS A
INNER JOIN CUSTOMERS B
 ON A.CUSTOMER_ID = B.CUSTOMER_ID;

このクエリを実行すると、以下のようにCUSTOMERSテーブルとORDERSテーブルが、1行に結合して表示されます。

GROUP BY

GROUP BYは、ある項目ごとにデータをまとめて、合計や平均、件数などを計算するSQLです。

たとえば、「国ごとに顧客を分類したい」ケースの場合、INNER JOINとGROUP BYを用いて、以下のように記述できます。

SELECT COUNTRY FROM CUSTOMERS
GROUP BY COUNTRY;

このクエリを実行すると、以下のように国ごとに分類され、国の一覧を重複なく表示できます。

他サービスとのデータ連携事例

Snowflakeと他の外部サービスをデータ連携させれば、データ活用をさらに効率化できます。ここでは、主なデータ連携事例を3つご紹介します。

クラウドストレージとの連携

Amazon S3、Google Cloud Storage、Microsoft Azureに保存されたファイルをSnowflakeにロードし、分析用のデータとして活用できます。ウェブインターフェースのステージ機能を使えば、ストレージ内のファイルを指定してバッチ処理を実行することが可能です。

これにより、ログデータやセンサーデータなど、クラウドストレージ内に格納されている膨大なデータを高速に取り込めます。また、部署によって異なるストレージを複数使用している場合、それらをSnowflakeに集約して一元管理できれば、データの整合性を維持するのに役立ちます。

クラウドストレージからSnowflakeにデータをロードする際に、「ストレージ統合」の設定が必要です。これは、Snowflakeが外部ストレージに安全かつ自動でアクセスできるようにするためです。

Amazon S3のストレージ統合についての詳細はこちら

Google Cloud Storageのストレージ統合についての詳細はこちら

Microsoft Azureのストレージ統合についての詳細はこちら

BIツールとの連携

TableauやLooker、Power BIなどのBIツールと接続すれば、Snowflakeをデータソースとしてダッシュボードやレポートを作成できます。Snowflakeの高速なクエリエンジンにより、数百万行の膨大なデータでもスムーズに可視化することが可能です。

Snowflakeのウェブインターフェースにも、ビジュアル化機能は組み込まれていますが、より高度な分析をしたい場合はBIツールの活用がおすすめです。またBIツールでは、ユーザーごとのアクセス制御や、部門別・ロール別のダッシュボード共有も可能であるため、チームでの情報共有をより柔軟に行えます。

ETLツールとの連携

CRMやSFA、広告媒体など、社内で多様なSaaSを使用している場合、Snowflakeにデータを統合するのは、非常に大きな工数を要します。そこでETLツールを使えば、データの抽出からSnowflakeへの格納までを一貫して自動化できます。

また、ETLツールを使えばGUIベースの操作のみで、データの整形ロジックを実装することが可能です。Snowflake上でSQLを記述する必要がないため、非エンジニアの方でも扱えるようになります。これにより、データ活用のスピードと柔軟性が向上するでしょう。

【Snowflake導入事例】TROCCOとSnowflakeのデータ基盤で、事業成長にあわせたスケーラビリティのあるデータ基盤を実現〜不動産業界のデータ活用における更なる成長への布石〜
https://primenumber.com/cases/ga-technologies

まとめ

本記事では、Snowflakeの概要や基本的な操作、代表的なデータ連携の事例について解説しました。

Snowflakeは、高速かつスケーラブルなクラウドデータウェアハウスとして、多くの企業で活用されています。独自のアーキテクチャや機能を理解し、組織のデータ活用を推進させましょう。

なお、Snowflakeと外部システムをデータ連携させたい場合は、ETLツールの活用が非常に有効です。ETLツールを使えば、データの抽出・加工・書き込み処理をGUI上で直感的に設計でき、SQLやプログラミングの知識がなくても柔軟なデータパイプラインを構築できます。

分析基盤向けデータ統合自動化サービス「TROCCO」は、primeNumber社が提供する日本発のETLツールです。ETL・データ転送に加え、データマートの自動生成やジョブスケジューリング、データガバナンスまで幅広く対応しており、Snowflakeとの連携にも強みを持ちます。自社のデータ活用を加速させたいと考えている方は、ぜひ一度primeNumberにご相談ください。

primeNumber編集長

primeNumberのブログを担当している編集長