Snowflake

Snowflake ACCOUNT_USAGE

2026-03-26
更新: 2026-03-27
NicheeLab編集部

SNOWFLAKE.ACCOUNT_USAGEは、Snowflakeが提供する共有データベースSNOWFLAKE内のスキーマで、アカウント内のあらゆるメタデータ・利用履歴・監査ログを最大365日間保持します。 クエリ履歴、ログイン履歴、ストレージ使用量、クレジット消費、アクセス監査など、 運用監視とガバナンスに不可欠な情報を一元的に提供します。

主要ビュー一覧

ビュー名内容保持期間遅延
QUERY_HISTORY全クエリの実行履歴(SQL文・実行時間・バイト数等)365日最大45分
LOGIN_HISTORYログイン試行の記録(成功/失敗・IP・クライアント)365日最大2時間
STORAGE_USAGE日次のストレージ使用量(アクティブ/Time Travel/Fail-safe)365日最大3時間
WAREHOUSE_METERING_HISTORYウェアハウスのクレジット消費履歴365日最大3時間
ACCESS_HISTORY列レベルのデータアクセス監査365日最大3時間
TABLES全テーブルのメタデータ(行数・サイズ・クラスタリング等)ドロップ後365日最大3時間
COLUMNS全カラムの定義情報ドロップ後365日最大2時間
GRANTS_TO_ROLESロールに付与された権限の履歴365日最大2時間
GRANTS_TO_USERSユーザーに付与されたロールの履歴365日最大2時間
DATA_TRANSFER_HISTORYリージョン間データ転送の履歴365日最大2時間

ACCOUNT_USAGE vs INFORMATION_SCHEMA 比較表

比較項目ACCOUNT_USAGEINFORMATION_SCHEMA
データソースSNOWFLAKE共有データベース各データベース内のスキーマ
保持期間365日(1年間)7〜14日(テーブル関数による)
データ反映遅延45分〜3時間なし(リアルタイム)
スコープアカウント全体当該データベースのみ
ドロップ済みオブジェクト含む(365日間)含まない
必要権限IMPORTED PRIVILEGES on SNOWFLAKE DB対象オブジェクトへの権限
アクセス方法SELECT文(通常のビュー)テーブル関数(TABLE()構文)

アクセス権限の設定

-- ACCOUNTADMINで監視用ロールにアクセスを許可
USE ROLE ACCOUNTADMIN;

CREATE ROLE IF NOT EXISTS monitoring_role;

GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE
  TO ROLE monitoring_role;

-- 監視担当ユーザーにロールを付与
GRANT ROLE monitoring_role TO USER monitoring_user;

QUERY_HISTORY活用例

-- 過去7日間で最もコストの高いクエリ TOP 20
SELECT
  query_id,
  user_name,
  warehouse_name,
  warehouse_size,
  execution_time / 1000 AS exec_sec,
  bytes_scanned / POWER(1024, 3) AS gb_scanned,
  partitions_scanned,
  partitions_total,
  ROUND(partitions_scanned / NULLIF(partitions_total, 0) * 100, 1) AS scan_pct,
  query_text
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE start_time >= DATEADD(DAY, -7, CURRENT_TIMESTAMP())
  AND execution_status = 'SUCCESS'
  AND warehouse_name IS NOT NULL
ORDER BY execution_time DESC
LIMIT 20;

-- ユーザー別クエリ実行統計
SELECT
  user_name,
  COUNT(*) AS total_queries,
  AVG(execution_time) / 1000 AS avg_exec_sec,
  SUM(bytes_scanned) / POWER(1024, 4) AS tb_scanned,
  SUM(credits_used_cloud_services) AS cloud_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE start_time >= DATEADD(DAY, -30, CURRENT_TIMESTAMP())
GROUP BY user_name
ORDER BY total_queries DESC;

LOGIN_HISTORY活用例

-- ログイン失敗の検出(不正アクセスの兆候)
SELECT
  user_name,
  client_ip,
  reported_client_type,
  error_code,
  error_message,
  event_timestamp
FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
WHERE is_success = 'NO'
  AND event_timestamp >= DATEADD(DAY, -7, CURRENT_TIMESTAMP())
ORDER BY event_timestamp DESC;

-- ユーザー別ログインパターン分析
SELECT
  user_name,
  COUNT_IF(is_success = 'YES') AS success_count,
  COUNT_IF(is_success = 'NO') AS fail_count,
  COUNT(DISTINCT client_ip) AS distinct_ips,
  LISTAGG(DISTINCT reported_client_type, ', ') AS client_types
FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
WHERE event_timestamp >= DATEADD(DAY, -30, CURRENT_TIMESTAMP())
GROUP BY user_name
HAVING fail_count > 5
ORDER BY fail_count DESC;

STORAGE_USAGE活用例

-- ストレージ使用量の推移(日次)
SELECT
  usage_date,
  ROUND(storage_bytes / POWER(1024, 4), 2) AS active_tb,
  ROUND(failsafe_bytes / POWER(1024, 4), 2) AS failsafe_tb,
  ROUND(stage_bytes / POWER(1024, 4), 2) AS stage_tb
FROM SNOWFLAKE.ACCOUNT_USAGE.STORAGE_USAGE
WHERE usage_date >= DATEADD(MONTH, -3, CURRENT_DATE())
ORDER BY usage_date;

WAREHOUSE_METERING_HISTORY活用例

-- ウェアハウス別の日次クレジット消費
SELECT
  start_time::DATE AS usage_date,
  warehouse_name,
  SUM(credits_used) AS total_credits
FROM SNOWFLAKE.ACCOUNT_USAGE.WAREHOUSE_METERING_HISTORY
WHERE start_time >= DATEADD(MONTH, -1, CURRENT_TIMESTAMP())
GROUP BY 1, 2
ORDER BY total_credits DESC;

権限監査

-- 過去30日間の権限変更履歴
SELECT
  created_on,
  privilege,
  granted_on,
  name AS object_name,
  granted_to,
  grantee_name,
  granted_by
FROM SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_ROLES
WHERE created_on >= DATEADD(DAY, -30, CURRENT_TIMESTAMP())
  AND deleted_on IS NULL
ORDER BY created_on DESC;

運用ベストプラクティス

  • 監視専用ロールを作成してIMPORTED PRIVILEGESを付与:ACCOUNTADMINの乱用を避け、最小権限の原則を徹底する
  • リアルタイム情報はINFORMATION_SCHEMA、長期分析はACCOUNT_USAGE:遅延が許容できないアラートにはINFORMATION_SCHEMAのテーブル関数を使い、トレンド分析にはACCOUNT_USAGEの365日データを活用する
  • 定期レポートをDynamic TableやTaskで自動化:QUERY_HISTORYやWAREHOUSE_METERING_HISTORYの集計をDynamic Tableで宣言し、Snowsightダッシュボードと連携する
  • ORGANIZATION_USAGEでマルチアカウントのコスト管理:複数アカウントを運用する組織では、ORGANIZATION_USAGEで全体のクレジット消費を一元管理し、チャージバックレポートを生成する

問題で確認

Security & Governance

問題 1

セキュリティチームが過去90日間のログイン失敗履歴を分析して不正アクセスの兆候を検出したい。INFORMATION_SCHEMA.LOGIN_HISTORY()テーブル関数を使用したところ、14日以前のデータが取得できなかった。最も適切な対応はどれか。

  1. INFORMATION_SCHEMAのDATA_RETENTION_TIME_IN_DAYSを90日に設定する
  2. SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORYビューに切り替えて過去90日間のデータを取得する
  3. Time Travel機能を使ってINFORMATION_SCHEMAの過去のスナップショットを参照する
  4. Snowsightのアクティビティログから手動でCSVエクスポートする

正解: B

INFORMATION_SCHEMAのテーブル関数は保持期間が7〜14日に限定されるため、90日前のデータは取得できません。SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORYビューは365日間の履歴を保持しているため、過去90日間の分析に対応できます。AのDATA_RETENTION_TIME_IN_DAYSはTime Travel用のパラメータでありINFORMATION_SCHEMAの保持期間には影響しません。CのTime TravelはINFORMATION_SCHEMAには適用できません。

よくある質問

ACCOUNT_USAGEのデータ反映が遅延する理由は何ですか?

ACCOUNT_USAGEスキーマのビューは、Cloud Services Layerで集約・最適化された後にSNOWFLAKE共有データベースに書き込まれるため、実際のイベント発生から最大45分〜2時間(ビューによって異なる)の遅延があります。たとえばQUERY_HISTORYは最大45分、LOGIN_HISTORYは最大2時間、STORAGE_USAGEは最大3時間の遅延が発生します。リアルタイムに近い情報が必要な場合はINFORMATION_SCHEMAのテーブル関数を使用してください。ただしINFORMATION_SCHEMAの保持期間は7〜14日に限定されます。

ACCOUNT_USAGEにアクセスするにはどのロールが必要ですか?

デフォルトではACCOUNTADMINロールのみがSNOWFLAKE.ACCOUNT_USAGEスキーマへのアクセス権を持っています。他のロールにアクセスを許可するには、ACCOUNTADMINで GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE <role_name> を実行します。セキュリティ上の理由から、すべてのユーザーにACCOUNTADMINを付与するのではなく、監視専用のカスタムロールを作成して必要なビューのみにアクセスさせることが推奨されます。

ORGANIZATION_USAGEとACCOUNT_USAGEの違いは何ですか?

ACCOUNT_USAGEは単一アカウント内のメタデータ・利用履歴を提供するのに対し、ORGANIZATION_USAGEはOrganization配下の全アカウントの利用状況を横断的に集約します。ORGANIZATION_USAGEにはUSAGE_IN_CURRENCY_DAILY(日次の利用金額)やWAREHOUSE_METERING_HISTORY(全アカウントのウェアハウスクレジット)などのビューが含まれ、組織全体のコスト管理やチャージバックに活用されます。ORGADMINロールでのみアクセス可能です。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Snowflake

Snowflake資格一覧|全11試験(SnowPro)の難易度・費用

Snowflake認定資格(SnowPro)全11試験の一覧・難易度・費用・出題範囲を徹底解説。...

Snowflake

Snowflake試験の難易度ランキング|全11資格を徹底比較

Snowflake(SnowPro)認定全11試験の難易度をランキング形式で比較。学習時間・合格に必要なスキルから分析。...

Snowflake

Snowflake資格の勉強方法|効率的な学習ルートと合格のコツ

Snowflake認定資格(SnowPro)に最短で合格するための勉強方法。公式リソース・学習スケジュールを徹底ガイド。...

Snowflake

SnowPro Core試験完全解説|出題範囲・問題例・合格戦略

SnowPro Core Certification(COF-C03)を徹底解説。出題範囲・100問の試験形式・合格ライ...

Snowflake

SnowPro Platform Associate完全解説|入門試験の攻略

SnowPro Associate: Platform Certification(SOL-C01)を徹底解説。最も簡単...

Snowflakeの記事一覧 (102件)
© 2026 NicheeLab All rights reserved.