DX攻略部がリニューアルしました!

Snowflake 使い方完全版:初心者が最初の30分で押さえるポイント

こんにちは、DX攻略部のkanoです。

はじめてSnowflakeを触る方向けに、無料トライアルの開始からデータ取り込み、基本的なSQL実行、コストの考え方までを最短距離で解説します。

読みながらSnowsightというブラウザ画面を開き、実際に手を動かす前提で進みます。

本記事では左メニューの「Catalog」、「Projects」、「Admin」など新しいグループ構成を前提に進めます。

ナビゲーションは段階的に更新中のため、アカウントにより表記が一部異なる場合があるので、適宜公式サイトで最新情報を確認しておきましょう。

DX攻略部では、Snowflake×Streamlitを活用した統合BI基盤構築支援サービスを行っています。

記事の内容を確認して、Snowflakeを自社に活用してみたいと考えた方は、下記のボタンをクリックしてぜひDX攻略部にご相談ください!

DX攻略部へのお問い合わせ

目次

Snowflakeの全体像を秒速でつかむ

Snowflakeはクラウド上にあるデータウェアハウスです。

分析用のデータを置いておく場所と、計算を実行するエンジンを持ち、必要な時だけ動かして料金が発生するというのが大きな特徴です。

操作は主にSnowsightというブラウザ画面から行い、ワークシートでSQLを実行し、カタログ(Catalog)でデータベースやスキーマを探せます。

まずは「何ができるか」、「どこを触るか」という点からチェックしていきましょう。

何ができるかの要点整理(クラウドDWH=分析用のデータ置き場)

Snowflakeは大量のCSVやログを安全に保管し、SQLで集計や抽出ができます。

オンプレのサーバ準備は不要で、数分で使い始められるので敷居が低いのも魅力です。

バックアップや拡張もクラウド任せにできるため、運用負荷が小さい点も特徴といえるでしょう。

筆者
SQLは「データベースに何をしてほしいか」を伝えるための言語です。主にリレーショナルデータベース(表形式でデータを管理する仕組み)に対して、データの取得・追加・更新・削除や、表自体の作成・変更を指示します。SQLの特徴は「どう計算するか」ではなく「何が欲しいか」を宣言するという点なので覚えておきましょう。

特徴のカンタン比較(スケール自由・課金は使った分だけ)

Snowflakeの計算リソースは必要な時にだけ起動し、使わない時は自動停止できます。

このため「使っていないのに課金され続ける」を避けやすい仕組みです。

保存領域と計算は別々に課金される点も覚えておきましょう。

Snowsightの位置づけ(ブラウザで操作できる管理画面)

SnowsightはSnowflakeの標準画面です。

アカウントの管理、ファイルの取り込み、SQLの実行、結果の確認までをブラウザだけで完結できます。

左メニューは「Work with data」「Discover & collaborate(Catalog系)」「Manage(Admin系)」などのグループに整理されています。あなたの環境が新ナビであれば、データベースの探索は「Catalog→Database Explorer」から入るのが近道です。

本記事ではSnowsight中心で操作を説明しますので、初めて触るという方も1つずつ進めていきましょう。

Snowflake導入ガイド準備から運用開始までをやさしく解説

無料トライアルの始め方

ここではSnowflakeをサインアップして初回ログイン直後の見え方を把握します。

選択項目は多く見えますが、最初に触る項目は限られているので落ち着いて進めていきましょう。

サインアップの流れとリージョン選択の目安

メール登録後、クラウドベンダとリージョンを選びます。

基本は自社の主要ユーザに地理的に近いリージョンを選べばよく、よく分からなければ推奨の初期値で開始して構いません。

UIの最初の見方(ホーム、Worksheets、Databases)

ログインするとホームにおすすめ機能が並びます。

SQLを実行する画面はWorksheets、データの入れ物はDatabasesから確認します。

Snowflakeの画面

最初はこの2つだけ覚えれば十分です。

サンプルデータの有無を確認

初めて使う際はサンプルデータがあると試しやすいです。

サンプルデータ

サンプルデータの確認やオブジェクト探索は左メニュー「Catalog→Database Explorer」、SQLの実行は「Projects→Worksheets」から行います。

ワークシートを開いたら、実行に使うロールとウェアハウスを選んでおきましょう。

検索しても見つからない時は、管理者ロールでサンプルデータベースを共有元から作成します。

USE ROLE ACCOUNTADMIN;
CREATE DATABASE IF NOT EXISTS SNOWFLAKE_SAMPLE_DATA
FROM SHARE SFC_SAMPLES.SAMPLE_DATA;
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE_SAMPLE_DATA TO ROLE PUBLIC;
作成後にCatalogのDatabase Explorerを更新すれば表示されます。
関連記事

こんにちは、DX攻略部のkanoです。 「Snowflakeを導入するか悩んでいる」、「実際の操作画面を触りながら使いこなせるか試したい」、「Snowflakeを導入したけど基本や応用を学びたい」 Snowflakeの導入を検討[…]

Snowflakeのトレーニングのアイキャッチ画像

先に理解しておきたい基本用語

言葉が分かると迷いが減ります。

ここではSnowflakeで使う頻度が高い用語に絞って説明しますので、最初に確認しておきましょう。

ウェアハウス(計算するエンジン)

SQLを動かすための計算リソースで、サイズをSやMなどで選べます。

実行時だけ起動し、停止中は計算の課金がかかりません。

ワークシート単位でどのウェアハウスを使うか指定します。

データベースとスキーマ(データをしまう棚と引き出し)

データベースは大きな棚、スキーマは棚の中の引き出しというイメージです。

データベースの中にスキーマ、スキーマの中にテーブルやビューが入る階層です。

探索はDatabase Explorerから行い、テーブルやビューはこの引き出しの中に作成します。

ロールと権限(誰が何をできるかの鍵)

ユーザに与える権限のまとまりがロールです。

読み取り専用や作成可能といった違いをロールで管理します。

安全に運用する基本になります。

ステージ(ファイルの一時置き場)

CSVなどのファイルを一時的に置く場所です。

内部ステージを使うとSnowsightからそのままアップロードできます。

関連記事

こんにちは、DX攻略部のkanoです。 データを意思決定に生かしたいのに、どこから着手すべきか迷う声は少なくありません。 そういった場合、Snowflake導入支援を依頼することを検討してみましょう。 Snowflakeは[…]

導入支援のアイキャッチ画像

3つの初期設定で最小構成を作ろう

まずは1人利用を想定した最小構成を作ります。

「ロールの選択」、「ウェハウスの作成」、「オートサスペンド設定」の3つを設定しましょう。

これでSQLを実行し、データを取り込める状態になります。

ロールをSYSADMINに切り替える理由

オブジェクトを作る初期作業には権限が必要です。

最初はSYSADMINに切り替えて必要な入れ物を作り、完了後は通常の作業用ロールに戻すのが安全です。

オブジェクト作成が必要な操作を行う場合は、権限のあるロールに切り替えて開始します。

ワークシート右上のロールセレクタで変更しましょう。

ウェアハウス作成とサイズの目安

SnowsightのWorksheetsから画面右上でウェアハウスを作成します。

ウェハウスの作成

名前はWH_XSなど分かりやすく。最初は一番小さいサイズで十分で、後から拡張できます。

オートサスペンド設定でムダ課金を防ぐ

非操作が続いたら自動停止する時間を短めに設定します。

1分から5分程度がおすすめで、再開は自動なので使い勝手は変わりません。

関連記事

こんにちは、DX攻略部のkanoです。 企業がDX(デジタルトランスフォーメーション)を推進するとき、データ基盤の選定とそのコスト見通しは最初の関門になります。 Snowflakeはクラウド型データウェアハウスとして高い評価を得ています[…]

Snowflake価格のアイキャッチ画像

CSVをSnowsightから取り込む

自分のデータで練習したい場合は、対象スキーマを開いてテーブルを作成します。

最初は自動推測を使って問題なく、後で型を直せます。

取り込み時は区切り文字やヘッダ行、文字コードを確認しましょう。

内部ステージを経由してロードする基本

Snowsightのスキーマ画面からステージやファイルフォーマットを作成し、アップロード後にテーブル作成→COPYでロードする流れが標準です。

ロード後は件数や先頭行を確認して整合性をチェックします。

テーブル作成方法の選択(自動推測か手動定義か)

アップロード後にCreate Tableを選ぶと、列名や型を自動推測できます。

最初は自動で作成し、必要があれば後で型を直す方が早く進みます。

文字コードや区切り文字のつまずき対策

文字化けが起きたらUTF-8で保存し直します。

区切り文字はカンマが標準ですが、タブやセミコロンの場合は取り込み設定で変更します。

関連記事

こんにちは、DX攻略部のkanoです。 近年、データを起点とした意思決定(データドリブン経営)がDX(デジタルトランスフォーメーション)の主戦場になりました。 しかし「社内外に散在する大量データをどうまとめ、どう活かすか」は多くの企業が[…]

Snowflakeとはのアイキャッチ画像

はじめてのテーブル作成と更新

より確実に理解するため、UIで作る方法とSQLで作る方法の双方を体験しておくと後々便利です。

CREATE TABLEの基本形

最小の例は次の通りです。

CREATE OR REPLACE TABLE TRAINING.RAW.CUSTOMERS (
CUSTOMER_ID NUMBER,
NAME VARCHAR,
SIGNUP_DATE DATE
);
列名と型を定義するだけでテーブルは作成できるのでチャレンジしてみましょう。

データ型の選び方のコツ(NUMBERとVARCHARの使い分け)

数値演算する列はNUMBER、自由入力の文字はVARCHAR、日付はDATEが基本です。

迷ったらVARCHARで取り込み、あとで変換する方法もあります。

COPYコマンドでロードして検証

内部ステージに置いたCSVをロードします。

COPY INTO TRAINING.RAW.CUSTOMERS
FROM @TRAINING.RAW.%CUSTOMERS
FILE_FORMAT = (TYPE = CSV SKIP_HEADER = 1);

ファイルフォーマットの設定はCSVに合わせてください。

はじめてのSQL実行

では、SQLを使って基本の抽出、集計、整形をひと通り試してみましょう。

以下はいずれもワークシートで実行します。

実行前の準備(ロール・コンテキスト設定)

実行に必要な権限と対象を先に指定すると、エラーが減ります。

— 使うロールとウェアハウス、データベース、スキーマを指定
USE ROLE SYSADMIN; — 権限は環境に合わせて
USE WAREHOUSE <あなたのWH名>;
USE DATABASE SNOWFLAKE_SAMPLE_DATA;
USE SCHEMA TPCH_SF1;

実際の画面で操作すると以下のような形になります。

Snowflake操作画面

今回はサンプルデータを使って、COMPUTE_WHというウェアハウス名を使ったので、画像のような形になりました。

SELECTとWHEREで必要な行だけ見る

SELECTとWHEREで必要な行だけを見るためのコマンドは以下になります。

— 条件で絞り込む(数値・文字・日付の代表例)
— 数量が30以上
SELECT L_ORDERKEY, L_QUANTITY
FROM LINEITEM
WHERE L_QUANTITY >= 30
LIMIT 10;

— 顧客名にBUILDINGを含む(大文字小文字を無視)
SELECT C_CUSTKEY, C_NAME
FROM CUSTOMER
WHERE C_NAME ILIKE ‘%BUILDING%’
LIMIT 10;

— 1996年の注文だけ
SELECT O_ORDERKEY, O_ORDERDATE
FROM ORDERS
WHERE O_ORDERDATE BETWEEN ‘1996-01-01’ AND ‘1996-12-31’
ORDER BY O_ORDERDATE
LIMIT 10;

ILIKEは大文字小文字を無視した部分一致で、%は任意の文字列を表します。

NULLは「不明」を意味し、値が入っている行だけを対象にしたい場合はWHERE 列 IS NOT NULLを追加しましょう。

実際に打ち込んでみると、以下のようにデータが確認できました。

Snowflakeの実行画面

必要な列だけ選び、条件で絞り込みたい場合の参考にしてみてください。

GROUP BYと集計関数で集約

件数や合計、平均などを出すときはGROUP BYと集計関数を使います。
日付は月単位に丸めるとレポートが作りやすくなります。

— 月次の受注件数
SELECT DATE_TRUNC(‘month’, O_ORDERDATE) AS YM, COUNT(*) AS CNT
FROM ORDERS
GROUP BY YM
ORDER BY YM;

— 国別の顧客数トップ10
SELECT C_NATIONKEY, COUNT(*) AS CNT
FROM CUSTOMER
GROUP BY C_NATIONKEY
ORDER BY CNT DESC
LIMIT 10;

— 集計の代表関数
SELECT
COUNT(*) AS 件数,
SUM(L_EXTENDEDPRICE) AS 合計金額,
AVG(L_QUANTITY) AS 平均数量,
MIN(L_QUANTITY) AS 最小数量,
MAX(L_QUANTITY) AS 最大数量
FROM LINEITEM;

WHEREは集計前の明細にかける条件、HAVINGは集計後の結果にかける条件です。

GROUP BYに含めていない列は、そのままSELECTに書けません(集計関数で包むか、式の結果に別名を付けてGROUP BY 別名を使います)。

月ごとの件数など、よくある集計がすぐに出せるので便利なコマンドです。

ORDER BYとLIMITで結果を整える

並べ替えと件数制限で、結果を読みやすく整え、数列で順序を指定すると安定した並びになります。
ORDER BYとLIMITで結果を整える方法は実行してみましょう。

— 金額の高い順、金額が同じなら日付の古い順
SELECT O_ORDERKEY, O_ORDERDATE, O_TOTALPRICE
FROM ORDERS
ORDER BY O_TOTALPRICE DESC, O_ORDERDATE ASC
LIMIT 20;

— 別名で並べ替える(式に名前を付けて使うと読みやすい)
SELECT
DATE_TRUNC(‘month’, O_ORDERDATE) AS YM,
SUM(O_TOTALPRICE) AS SUM_AMT
FROM ORDERS
GROUP BY YM
ORDER BY SUM_AMT DESC
LIMIT 12;

— NULLの並びを制御する(SnowflakeはNULLS FIRST/NULLS LASTを指定可能)
SELECT C_NAME, C_ACCTBAL
FROM CUSTOMER
ORDER BY C_ACCTBAL DESC NULLS LAST
LIMIT 20;

重い結果はまずLIMITで小さく確認し、期待どおりならLIMITを外して本実行します。

並び順が不安定に見えるときは、2列以上でORDER BYを指定して同値時の優先順位を決める方法がおすすめです。

必要ない列は出力しないほど読みやすく、スキャン量も抑えられます。

ここまでで「抽出→絞り込み→集計→整形」の基本が一通りそろいました。

次の段階として結合(JOIN)や条件分岐(CASE WHEN)を組み合わせると、日常的なレポートの大半が作れるようになります。

実行履歴とクエリの保存

Snowsightは実行履歴を残してくれます。

よく使うSQLはWorksheetに名前を付けて保存し、再利用しましょう。

よく使うオブジェクトの活用

同じ計算や絞り込みを繰り返すなら、オブジェクト化して管理すると楽になります。

ビューで再利用可能な見せ方を作る

ビューで見せ方を固定しておくと便利です。
CREATE OR REPLACE VIEW TRAINING.RAW.ACTIVE_CUSTOMERS AS
SELECT * FROM TRAINING.RAW.CUSTOMERS
WHERE SIGNUP_DATE >= DATEADD(‘day’, -90, CURRENT_DATE());

複雑な条件をビューにすると、次回からSELECTするだけで済みます。

セキュアビューの考え方(閲覧制御)

機密列を隠したい場合はセキュアビューを使います。

ビュー越しにのみ見せることで、元テーブルへの直接アクセスを制限できます。

一時テーブルとトランジェントテーブルの違い

一時テーブルはセッション限定の作業用、トランジェントは復旧機能を弱めてコストを抑えたい長期作業用という位置づけです。

削除し忘れ防止の観点でも一時テーブルは便利です。

コストの基本と節約の型

コストは難しく感じがちですが、Snowflakeの最初に押さえる型は少数です。

型さえ守れば不意の請求を避けられます。

コストを抑えるためにも基本の型を把握しておきましょう。

クレジット課金の仕組み(計算と保存は別)

計算はウェアハウスの起動時間に応じて、保存はデータ量に応じて課金されます。

この二つは独立しており、計算を止めても保存の料金は発生するので注意しましょう。

小さなウェアハウスから始めて様子を見る

Snowflakeを利用する際、最初は最小サイズで十分です。

継続してSnowflakeを使っていく中で、遅いと感じた時だけ一段階上げる方針にします。

大きすぎるサイズは無駄になりやすため、小さなウェハウスから様子を見て使う形がおすすめです。

オートサスペンド(自動停止)とオートリジューム(自動起動)の使いどころ

短時間で停止する設定にし、クエリ実行時の自動起動を有効にします。

設定はウェアハウス作成時や編集画面から行えるので、これだけで多くの無駄を防げます。

関連記事

こんにちは、DX攻略部のkanoです。 Snowflakeと連携するBIツール選びは「誰が何をどの頻度で見るか」を固めると迷いません。 本記事は初心者の方でも読み進めやすいように、SnowflakeとBIツール連携の基礎、選定基準、主要[…]

SnowflakeのBiツールのアイキャッチ画像

チームで使う最小権限設計

後から人が増えても困らないよう、最初からシンプルなルールを作っておきます。

どのツールにも言えることですが、最初の設計をしっかりと行っておくことが、後々のトラブルを防ぐことにつながるのです。

ロール階層の考え方(最小権限の原則)

作成権限を持つ管理ロール、閲覧中心の閲覧ロールなど、役割ごとにロールを分けます。

必要最小限の権限だけを付与するのが基本です。

Explorerや検索に出ない場合は権限不足の可能性が高いので設定を見直しましょう。

開発者と閲覧者の分離

データを作る人と見る人を分けると事故が減ります。

閲覧者にはビュー経由でデータを見せると安全です。

オブジェクト所有者の移譲と運用のコツ

テーブルやビューの所有者が退職や異動で不在になると困ります。

チーム用ロールを所有者にしておき、個人所有を避けると運用が安定します。

筆者
誰か1人に管理を押し付けていると、その人が退職や異動するとなったときに大変です。チーム用ロールを所有者にしておくことで、トラブルを防げます。

つまずきやすいポイントQ&A

Snowflakeを使う際に、現場でよくあるつまずきを先に知っておくと解決が早くなります。

導入事例なども参考にして、Snowflakeに関する知見を高めていきましょう。

権限不足で作成できない時の確認手順

現在のロールを確認し、対象データベースやスキーマへの権限があるかをチェックします。

権限確認の画面

足りない場合は管理ロールに切り替えるか、権限付与を依頼します。

文字化けや桁落ちのチェック項目

CSVの文字コードをUTF-8に統一し、数値列に余計なカンマや空白が入っていないかを確認します。

取り込み時のFILE_FORMATで区切りやヘッダ行の設定を合わせます。

ウェアハウスが動かず実行できない時の対処

ウェアハウスが停止中かサイズ不足の可能性があります。

起動状態を確認し、必要に応じてサイズを一段階上げ、オートリジュームが無効なら有効化しましょう。

関連記事

こんにちは、DX攻略部のmukkukoです。 今回は、弊社で運営支援を行っているSnowflake導入の成功事例について解説します。 利益率を向上させるためには、自社でのあらゆるデータを蓄積し、分析を行わなければなりません。 […]

Snowflake導入事例のアイキャッチ画像

まとめ

Snowflakeは「入れ物を作る」、「CSVを取り込む」、「SQLを実行する」の三歩を押さえるだけで、今日から分析を始められます。

最新のSnowsightでは「Catalog→Database Explorer」でオブジェクトを探し、「Projects→Worksheets」でSQLを実行するのが基本動線です。

Snowsightを使えばブラウザだけで完結し、ウェアハウスの自動停止設定をしておけばコストも抑えやすいです。

次の一歩は外部ストレージとの連携や、ビューを使った共有の整備です。

Snowflakeは、まずは小さく始め、動かしながら必要な範囲を広げていきましょう。

DX攻略部では、Snowflake×Streamlitを活用した統合BI基盤構築支援サービスを行っていますので、Snowflake導入を検討している企業様はぜひDX攻略部にご相談ください!

DX攻略部へのお問い合わせ