はじめに:なぜクレジット消費の分析が必要なの?
こんにちは!Snowflakeを使い始めると、最初は「便利!速い!」とテンションが上がりますが、しばらく経って気になり始めるのがクレジット(=利用料金)の消費量ですよね。「あれ?今月思ったより使ってる…」と慌てた経験、ありませんか?
そんなときに大活躍するのが、Snowflakeが標準で用意してくれている ACCOUNT_USAGEスキーマ です。これを使えば「どのウェアハウスが」「いつ」「どれくらい」クレジットを消費したかを SQL でズバッと可視化できます。本記事では、データベース初心者の方でも今日から使えるように、基本の考え方と実用SQLをまとめました!

ACCOUNT_USAGEって何?
ACCOUNT_USAGE は、Snowflakeの共有データベース SNOWFLAKE の中にあるスキーマで、アカウント全体の利用履歴(ログイン、クエリ、ストレージ、クレジット消費など)を ビュー(VIEW) として閲覧できる仕組みです。
ビューは「実態のテーブルではなく、SQLで定義された見せ方」のことで、ビューとマテリアライズドビューの違いでも解説しています。ACCOUNT_USAGE のビューはあらかじめ Snowflake が用意してくれているので、私たちは SELECT するだけでOK!
アクセスにはACCOUNTADMINが基本
ACCOUNT_USAGE はデフォルトで ACCOUNTADMINロール のみアクセス可能です。他のロールに見せたい場合は GRANT IMPORTED PRIVILEGES で権限を渡します。
USE ROLE ACCOUNTADMIN;
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE COST_ANALYST;
クレジット分析でよく使う主要ビュー
たくさんビューがありますが、まずは以下の3つを押さえればOKです。
- WAREHOUSE_METERING_HISTORY:ウェアハウスごとの1時間単位のクレジット消費
- METERING_DAILY_HISTORY:サービス種別×日単位のクレジット消費(ざっくり把握用)
- QUERY_HISTORY:個々のクエリ実行履歴(誰が何のクエリで使ったか)
※データは最大45分〜3時間ほど遅延して反映される点に注意してください(リアルタイムではありません)。

実践!クレジット消費を可視化するSQL
① ウェアハウスごとの月次クレジット消費
SELECT
WAREHOUSE_NAME,
DATE_TRUNC('MONTH', START_TIME) AS MONTH,
SUM(CREDITS_USED) AS TOTAL_CREDITS
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE START_TIME >= DATEADD('MONTH', -3, CURRENT_DATE)
GROUP BY 1, 2
ORDER BY MONTH DESC, TOTAL_CREDITS DESC;
「直近3か月で、どのウェアハウスが食いしん坊さんか」が一目瞭然です。
② ユーザー別のクレジット消費トップ10
SELECT
USER_NAME,
SUM(CREDITS_USED_CLOUD_SERVICES) +
SUM(CREDITS_USED_CLOUD_SERVICES) AS APPROX_CREDITS,
COUNT(*) AS QUERY_COUNT
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE START_TIME >= DATEADD('DAY', -30, CURRENT_DATE)
GROUP BY USER_NAME
ORDER BY QUERY_COUNT DESC
LIMIT 10;
「クエリを大量に投げているのは誰か?」が分かるので、研修や最適化の対象を絞り込めます。
③ Snowsightのダッシュボードでグラフ化
Snowsight 左メニューの「Projects → Dashboards」から新規ダッシュボードを作成し、上記SQLをタイル化すれば棒グラフや折れ線グラフでチームに共有できます。毎週月曜の朝にチェックする習慣をつけると、無駄使いに早く気づけますよ。
よくあるユースケースと注意点
- 急にクレジットが跳ねた日を特定:WAREHOUSE_METERING_HISTORY を時間単位で見て、原因クエリを QUERY_HISTORY で深掘り。マルチクラスタウェアハウスのクラスタ起動状況も確認しましょう。
- キャッシュヒット率の確認:同じクエリでもキャッシュが効けば0クレジット。Snowflakeのキャッシュの違いもあわせてチェック!
- 遅いクエリの最適化候補抽出:クエリ最適化ベストプラクティスと組み合わせると効果絶大です。
注意点として、ACCOUNT_USAGE のデータ保持期間は1年間。長期分析したい場合は別テーブルにコピーしておきましょう。
まとめ
ACCOUNT_USAGE ビューは、Snowflake のコスト管理における「健康診断ツール」のような存在です。最初はWAREHOUSE_METERING_HISTORYとQUERY_HISTORYの2つだけでも十分に強力。まずはコピペで試して、自分のアカウントのクセを掴むところから始めてみてください!
参考リンク
関連記事
- Snowflakeクエリ最適化ベストプラクティス10選|初心者向け早見ガイド – クレジット節約の第一歩はクエリ最適化から。
- Snowflakeマルチクラスタウェアハウス入門|同時実行クエリを増やす仕組み – クラスタ数の増減はクレジット消費に直結します。
- Snowflakeの3つのキャッシュの違い|リザルト・ウェアハウス・メタデータをやさしく解説 – キャッシュを活かしてクレジットを節約。
- Snowflakeクエリプロファイル入門|遅いクエリのボトルネックを見抜く方法 – 高コストクエリの原因特定にどうぞ。

