コンピューティングコストの調査

コンピューティングコスト合計は、次の全体的な使用で構成されます。

  • 仮想ウェアハウス(ユーザー管理のコンピューティングリソース)

  • Snowflakeが管理するコンピューティングリソースを使用する、自動クラスタリングやSnowpipeなどのサーバーレス機能

  • Snowflakeアーキテクチャのクラウドサービスレイヤー

このトピックでは、 Snowsight を使用するか、 ACCOUNT_USAGE および ORGANIZATION_USAGE スキーマのビューに対するクエリを記述することによって、コンピューティングコスト履歴に対する洞察を得る方法について説明します。 Snowsight を使用すると、視覚的なダッシュボードからコストに関する情報をすばやく簡単に取得できます。使用状況ビューに対するクエリを使用すると、コストデータをドリルダウンできるようになり、カスタムレポートとダッシュボードの生成に役立てることができます。

コンピューティングコストがどのように発生するかに関する詳細については、 コンピューティングコストについて をご参照ください。

注釈

クラウドサービスレイヤーはクレジットを消費しますが、これらのクレジットのすべてが実際に請求されるわけではありません。クラウドサービスの使用量は、クラウドサービスの1日の使用量が仮想ウェアハウスの1日の使用量の10%を超えた場合にのみ課金されます。 Snowsight と大多数のビューは、このクラウドサービスへの日々の調整を考慮せずに、ウェアハウス、サーバーレス機能、クラウドサービスによって消費されたクレジットの合計数を表示します。コンピュートコストとして実際に請求されたクレジットの数を調べるには、 METERING_DAILY_HISTORYビュー に対してクエリを実行します。

組織のクレジット使用状況の表示

すべてのコンピューティングリソース(仮想ウェアハウス、サーバーレス、クラウドサービス)は、Snowflakeクレジットを消費します。適切な権限を持つユーザーは、 Snowsight を使用して、特定の日、週、または月のコンピューティング使用状況の総コストを表示できます。

コンピューティングコストを調査するには、次を実行します。

  1. Snowsight にサインインします。

  2. ACCOUNTADMIN ロールに切り替えます。

  3. Admin » Cost Management に移動します。

  4. 使用状況データを表示するために使用するウェアハウスを選択します。Snowflakeは、この目的のために XS ウェアハウスを使用することをお勧めします。

  5. Consumption を選択します。

  6. 使用状況のタイプドロップダウンから Compute を選択します。

注釈

ユーザーが ACCOUNTADMIN のロールを持ち、 ORGADMIN のロールを 持たない 場合、そのユーザーは現在のアカウントのコストのみを表示できます。別のアカウントへの切り替えを可能にする Account フィルターは表示されません。

タグ別にフィルターする

組織内の理論ユニットに使用している リソースのコストを帰属させる ためにタグを使用できます。タグは、Snowflakeオブジェクトで、関連する1つ以上の値を持つことができます。適切な権限を持っているユーザーにより、コストセンターまたは他の理論ユニット(例: 開発環境、事業単位、または業種)が使用する各リソースに、タグと値のペアを適用します。リソースにタグを付けると、特定のタグと値のペアに基づいてコストを分離して、特定の理論ユニットにコストを帰属させることができるようになります。

Consumption ダッシュボードをフィルターして、特定のタグと値の組み合わせに関連したコストを表示するには、

  1. Snowsight で、 Consumption ダッシュボードを開きます。

  2. Tags ドロップダウンから、タグを選択します。

  3. タグの値のリストから値を選択します。

  4. Apply を選択します。

たとえば、ドロップダウンを使用して、 COST_CENTER タグと SALES 値を選択し、 COST_CENTER = SALES のタグがあるリソースに関連した使用状況をそれ以外の使用状況は含めずに表示することができます。

タグのあるすべてのリソースをタグの値に関係なく表示することもできます。ドロップダウンを使用してタグを選択してから、特定の値の代わりに All を選択します。

種類、サービス、リソース別に消費を表示する

コンピューティング履歴を表示する棒グラフを表示する場合は、データ By TypeBy Service、または By Resource をフィルターできます。

タイプ別

リソースの消費をコンピューティング(仮想ウェアハウスとサーバーレスリソース)とクラウドサービスに分離します。このフィルターの目的のために、クラウドサービスは他のタイプのコンピューティングリソースから分離されます。

サービス別

リソースの消費をウェアハウスの消費と各サーバーレス機能による消費に分離します。たとえば、 WAREHOUSE_METERING はウェアハウスによって消費されたクレジットを表し、 PIPE はサーバーレスSnowpipe機能によって消費されたクレジットを表します。クラウドサービスコンピューティングは、ウェアハウスの消費に含まれます。

リソース別

クレジットを消費したSnowflakeオブジェクトごとにリソースの消費を分離します。たとえば、サーバーレスコストの発生したすべてのテーブルと同様に、各ウェアハウスが表示されます。

コンピューティングコストのデータのクエリ

Snowflakeは、使用状況とコストに関連するデータを含む2つのスキーマ、 ORGANIZATION_USAGEACCOUNT_USAGE を提供します。ORGANIZATION_USAGE スキーマは組織内にあるすべてのアカウントのコスト情報を提供しますが、 ACCOUNT_USAGE スキーマは単一のアカウントについて同様の情報を提供します。これらのスキーマでのビューは、カスタムレポートまたはダッシュボードを作成するための、詳細かつ分析に対応した使用状況データを提供します。

ORGANIZATION_USAGE および ACCOUNT_USAGE スキーマのほとんどのビューには、消費された クレジット に関するコンピューティングリソースのコストが含まれています。クレジットではなく通貨単位でコンピューティングコストを調査するには、 USAGE_IN_CURRENCY_DAILY ビュー に対するクエリを記述します。このビューは、クレジットの日次価格を使用して、消費されたクレジットを通貨単位のコストに変換します。

次のビューは、コンピューティングコストに関連する使用状況とコストの情報を提供します。

ビュー

コンピューティングリソース

説明

スキーマ

AUTOMATIC_CLUSTERING_HISTORY

サーバーレス

自動クラスタリングによって消費されたクレジット。

ORGANIZATION_USAGE ACCOUNT_USAGE

DATABASE_REPLICATION_USAGE_ HISTORY

サーバーレス

データベース複製で消費されるクレジット。

ACCOUNT_USAGE

LISTING_AUTO_FULFILLMENT_ REFRESH_DAILY

ウェアハウス

クロスクラウド自動複製で他のリージョンに複製されたデータを更新するために使用されたクレジット。

DATA_SHARING_USAGE

LISTING_AUTO_FULFILLMENT_ USAGE_HISTORY

ウェアハウス

クロスクラウド自動複製の使用によるデータ製品の他のリージョンへのフルフィルメントに関連する推定使用量。REPLICATION の SERVICE_TYPE をご参照ください。

ORGANIZATION_USAGE

MATERIALIZED_VIEW_REFRESH_ HISTORY

サーバーレス

マテリアライズドビューの更新に消費されるクレジット。

ORGANIZATION_USAGE ACCOUNT_USAGE

METERING_DAILY_HISTORY

ウェアハウス

サーバーレス

クラウドサービス

特定の日に、すべてのコンピューティングリソース(ウェアハウス、サーバーレス、およびクラウドサービス)によって消費されたクレジット。

特定の日にクラウドサービスのコンピューティングコストが実際に請求されたかどうかを判断するために使用できます(つまり、クラウドサービスのクレジット消費量がウェアハウスの消費量の10%超)。

ORGANIZATION_USAGE ACCOUNT_USAGE

METERING_HISTORY

ウェアハウス

サーバーレス

クラウドサービス

ウェアハウスおよびクラウドサービスによって消費される時間単位のクレジット。個々のウェアハウスが消費しているクレジット数を確認するには、 WAREHOUSE_METERING_HISTORY ビューをクエリします。

ACCOUNT_USAGE

PIPE_USAGE_HISTORY

サーバーレス

Snowpipeによって消費されたクレジット。

ORGANIZATION_USAGE ACCOUNT_USAGE

QUERY_ACCELERATION_HISTORY

サーバーレス

クエリアクセラレーションサービスによって消費されたクレジット。

ACCOUNT_USAGE

REPLICATION_USAGE_HISTORY

サーバーレス

データベース複製中に消費されたクレジットと転送されたバイト数。可能な場合は、代わりに DATABASE_REPLICATION_USAGE_HISTORY ビュー を使用します。

ORGANIZATION_USAGE ACCOUNT_USAGE

REPLICATION_GROUP_USAGE_ HISTORY

サーバーレス

特定の複製グループの複製中に消費されたクレジットと転送されたバイト数。

ACCOUNT_USAGE

SEARCH_OPTIMIZATION_HISTORY

サーバーレス

検索最適化サービスによって消費されたクレジット。

ACCOUNT_USAGE

SERVERLESS_TASK_HISTORY

サーバーレス

タスクによって消費されたクレジット。

ACCOUNT_USAGE

SNOWPIPE_STREAMING_FILE_ MIGRATION_HISTORY

サーバーレス

Snowpipeストリーミングコンピューティングによって消費されるクレジット(クライアントコストは含まれません)。

ACCOUNT_USAGE

USAGE_IN_CURRENCY_DAILY

ウェアハウス

サーバーレス

クラウドサービス

すべてのコンピューティングリソースによる日次のクレジット消費量と、組織の通貨単位による使用コスト。

ORGANIZATION_USAGE

WAREHOUSE_METERING_HISTORY

ウェアハウス

クラウドサービス

ウェアハウスの使用に関連するクラウドサービスのコストを含む、各ウェアハウスの時間単位のクレジット使用状況。

ORGANIZATION_USAGE ACCOUNT_USAGE

注釈

Snowflake Information Schema のビューとテーブル関数も、コストに関連する使用状況データを提供します。ACCOUNT_USAGE スキーマを推奨しますが、状況によってはInformation Schemaの方が高速になる場合があります。

クエリ例

次のクエリは、 ACCOUNT_USAGE ビューのデータをドリルダウンして、コンピューティングコストに対する洞察を得るようにします。

注釈

Account Usageスキーマのビューに対して実行するクエリは、組織の使用状況スキーマで対応するビューを使用して、組織全体のコストに対する洞察を得るように変更できます。たとえば、どちらのスキーマにも WAREHOUSE_METERING_HISTORY ビューが含まれています。

SQL の包括的な例を表示するには、以下のクエリの名前をクリックします。

ウェアハウスのコンピューティング
クラウドサービスのコンピューティング
自動クラスタリングのコンピューティング
検索最適化のコンピューティング
マテリアライズドビューのコンピューティング
Query Acceleration Serviceの計算
Snowpipeのコンピューティング
Snowpipe Streamingのコンピューティングおよびクライアントコスト
タスクの計算
複製のコンピューティング
パートナーツールのコンピューティング

ウェアハウスのコンピューティング

クエリ: 過去m日間における時間ごとのSnowflakeの平均支出(全ウェアハウスにわたる)

このクエリは、過去m日間の消費傾向(ピーク、谷)を理解するのに役立つように、毎時の総クレジット消費を示します。これは、消費量が急増する時間帯を特定するのに役立ちます。

SELECT start_time,
  warehouse_name,
  credits_used_compute
FROM snowflake.account_usage.warehouse_metering_history
WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP())
  AND warehouse_id > 0  -- Skip pseudo-VWs such as "CLOUD_SERVICES_ONLY"
ORDER BY 1 DESC, 2;

-- by hour
SELECT DATE_PART('HOUR', start_time) AS start_hour,
  warehouse_name,
  AVG(credits_used_compute) AS credits_used_compute_avg
FROM snowflake.account_usage.warehouse_metering_history
WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP())
  AND warehouse_id > 0  -- Skip pseudo-VWs such as "CLOUD_SERVICES_ONLY"
GROUP BY 1, 2
ORDER BY 1, 2;
Copy
クエリ: 特定の期間におけるウェアハウスごとのクレジット消費

このクエリは、特定の期間における各ウェアハウスのクレジット消費の合計を示します。これにより、他のウェアハウスよりも多くのクレジットを消費しているウェアハウスや、予想よりも多くのクレジットを消費している特定のウェアハウスを識別できます。

-- Credits used (all time = past year)
SELECT warehouse_name,
  SUM(credits_used_compute) AS credits_used_compute_sum
FROM snowflake.account_usage.warehouse_metering_history
GROUP BY 1
ORDER BY 2 DESC;

-- Credits used (past N days/weeks/months)
SELECT warehouse_name,
  SUM(credits_used_compute) AS credits_used_compute_sum
FROM snowflake.account_usage.warehouse_metering_history
WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP())
GROUP BY 1
ORDER BY 2 DESC;
Copy
クエリ: m日間におけるウェアハウスの平均使用状況

このクエリは、週およびウェアハウスごとにグループ化された日次の平均クレジット消費を返します。これは、過去1年からの週にわたるウェアハウスのクレジット消費の異常を特定するために使用できます。

WITH cte_date_wh AS (
  SELECT TO_DATE(start_time) AS start_date,
    warehouse_name,
    SUM(credits_used) AS credits_used_date_wh
  FROM snowflake.account_usage.warehouse_metering_history
  GROUP BY start_date, warehouse_name
)

SELECT start_date,
  warehouse_name,
  credits_used_date_wh,
  AVG(credits_used_date_wh) OVER (PARTITION BY warehouse_name ORDER BY start_date ROWS m PRECEDING) AS credits_used_m_day_avg,
  100.0*((credits_used_date_wh / credits_used_m_day_avg) - 1) AS pct_over_to_m_day_average
FROM cte_date_wh
  QUALIFY credits_used_date_wh > 100  -- Minimum N=100 credits
    AND pct_over_to_m_day_average >= 0.5  -- Minimum 50% increase over past m day average
ORDER BY pct_over_to_m_day_average DESC;
Copy

クラウドサービスのコンピューティング

クエリ: 請求済みクラウドサービス

クラウドサービスの使用量 は、クラウドサービスの日次消費量が仮想ウェアハウスの日次使用量の10%を超えた場合にのみ請求されます。このクエリは、特定の日に実際に請求されたクラウドサービスの使用量を、請求金額の高い順に返します。

SELECT
    usage_date,
    credits_used_cloud_services,
    credits_adjustment_cloud_services,
    credits_used_cloud_services + credits_adjustment_cloud_services AS billed_cloud_services
FROM snowflake.account_usage.metering_daily_history
WHERE usage_date >= DATEADD(month,-1,CURRENT_TIMESTAMP())
    AND credits_used_cloud_services > 0
ORDER BY 4 DESC;
Copy
クエリ: クエリの種類ごとのクラウドサービスの合計コスト

このクエリは、特定の種類のクエリによってクラウドサービスで消費されたクレジットの合計を返します。

SELECT query_type,
  SUM(credits_used_cloud_services) AS cs_credits,
  COUNT(1) num_queries
FROM snowflake.account_usage.query_history
WHERE true
  AND start_time >= TIMESTAMPADD(day, -1, CURRENT_TIMESTAMP)
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10;
Copy
クエリ: 特定の種類のクエリに対するクラウドサービスのコスト

このクエリは、特定の種類のすべてのクエリによってクラウドサービスで消費されたクレジットの合計を返します。別の種類のクエリに焦点を当てたい場合は 'COPY' を置き換え、より長いまたは短い期間を調べたい場合は day を置き換えます。

SELECT *
FROM snowflake.account_usage.query_history
WHERE true
  AND start_time >= TIMESTAMPADD(day, -1, CURRENT_TIMESTAMP)
  AND query_type = 'COPY'
ORDER BY credits_used_cloud_services DESC
LIMIT 10;
Copy
クエリ: クラウドサービスの使用率が高いウェアハウス

このクエリは、コンピューティングのクラウドサービス部分をカバーするために、十分なウェアハウス時間が使用されていないウェアハウスを示します。これは、クラウドサービスの使用率が高い(全体のクレジットの10%超)ウェアハウスを分離することにより、追加の調査の出発点を提示します。調査の候補には、クローニング、S3内のファイルのリスト、パートナーツール、セッションパラメーターの設定などに関する問題が含まれます。

SELECT
  warehouse_name,
  SUM(credits_used) AS credits_used,
  SUM(credits_used_cloud_services) AS credits_used_cloud_services,
  SUM(credits_used_cloud_services)/SUM(credits_used) AS percent_cloud_services
FROM snowflake.account_usage.warehouse_metering_history
WHERE TO_DATE(start_time) >= DATEADD(month,-1,CURRENT_TIMESTAMP())
    AND credits_used_cloud_services > 0
GROUP BY 1
ORDER BY 4 DESC;
Copy
クエリ: クエリ時間の割合で並べ替えられたクラウドサービスの使用状況

このクエリは、過去1分間に実行されたすべてのクエリを返し、クエリの合計実行時間(コンパイル時間対キュー時間など)の割合で並べ替えます。

SELECT *
FROM snowflake.account_usage.query_history
WHERE true
  AND start_time >= TIMESTAMPADD(minute, -60, CURRENT_TIMESTAMP)
ORDER BY compilation_time DESC,
  execution_time DESC,
  list_external_files_time DESC,
  queued_overload_time DESC,
  credits_used_cloud_services DESC
LIMIT 10;
Copy

自動クラスタリングのコンピューティング

クエリ: 自動クラスタリングのコスト履歴(日別、オブジェクト別)

このクエリは、自動クラスタリングを使用したテーブルのリストと、過去30日間にサービスを介して消費したクレジット量を日別に表示します。クレジットの消費に不規則性があるか、一貫して消費量が多い場合は、さらに調査する必要があることを表します。

SELECT TO_DATE(start_time) AS date,
  database_name,
  schema_name,
  table_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.automatic_clustering_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2,3,4
ORDER BY 5 DESC;
Copy
クエリ: 自動クラスタリング履歴およびm日平均

このクエリは、自動クラスタリングによって消費された日次の平均クレジットを、前年の週ごとにグループ化して表示します。1年間の日次平均の異常を特定するのに役立ちます。これにより、消費の急増や予期しない変化をさらに調査することができます。

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.automatic_clustering_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week',date),
      AVG(credits_used) AS avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy

検索最適化のコンピューティング

クエリ: 検索最適化のコスト履歴(日別、オブジェクト別)

このクエリは、検索最適化を使用したテーブルの包括的リストと、過去30日間にサービスを介して消費したクレジット量を日別に表示します。クレジットの消費に不規則性があるか、一貫して消費量が多い場合は、さらに調査する必要があることを表します。

SELECT TO_DATE(start_time) AS date,
  database_name,
  schema_name,
  table_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.search_optimization_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2,3,4
ORDER BY 5 DESC;
Copy
クエリ: 検索最適化履歴およびm日平均

このクエリは、検索最適化によって消費された日次の平均クレジットを、前年の週ごとにグループ化して表示します。1年間の日次平均の異常を特定するのに役立ちます。これにより、消費の急増や予期しない変化をさらに調査することができます。

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.search_optimization_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week', date),
  AVG(credits_used) as avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy

マテリアライズドビューのコンピューティング

クエリ: マテリアライズドビューのコスト履歴(日別、オブジェクト別)

このクエリは、マテリアライズドビューの包括的リストと、過去30日間にサービスを介して消費したクレジット量を日別に表示します。クレジットの消費に不規則性があるか、一貫して消費量が多い場合は、さらに調査する必要があることを表します。

SELECT TO_DATE(start_time) AS date,
  database_name,
  schema_name,
  table_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.materialized_view_refresh_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2,3,4
ORDER BY 5 DESC;
Copy
クエリ: マテリアライズドビュー履歴およびm日平均

このクエリは、マテリアライズドビューによって消費された日次の平均クレジットを、前年の週別にグループ化して表示します。1年間の日次平均の異常を特定するのに役立ちます。これにより、消費の急増や予期しない変化をさらに調査することができます。

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.materialized_view_refresh_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week',date),
  AVG(credits_used) AS avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy

Query Acceleration Serviceの計算

クエリ: ウェアハウス別のQuery Acceleration Serviceのコスト

このクエリは、アカウント内の各ウェアハウスが、Query Acceleration Serviceに使用するクレジットの合計数を返します(月度累計)。

SELECT warehouse_name,
       SUM(credits_used) AS total_credits_used
  FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_ACCELERATION_HISTORY
  WHERE start_time >= DATE_TRUNC(month, CURRENT_DATE)
  GROUP BY 1
  ORDER BY 2 DESC;
Copy

SnowpipeおよびSnowpipe Streamingのコンピューティング

クエリ: データインジェストの累積使用状況(Snowpipeおよび「コピー」)

このクエリは、ファイルの平均サイズ、合計行数、合計量、インジェスト方法(コピーまたはSnowpipe)を表示する、Snowflakeにある各テーブルの全ロードに対する日次集計の概要を返します。ファイルサイズが小さすぎたり大きすぎたりして最適なインジェストができない場合は、追加の調査/最適化が必要になる場合があります。ボリュームをクレジット消費にマッピングすると、ロードされた TB あたりのクレジットをより多く消費しているテーブルを特定できます。

SELECT TO_DATE(last_load_time) AS load_date,
  status,
  table_catalog_name AS database_name,
  table_schema_name AS schema_name,
  table_name,
  CASE
    WHEN pipe_name IS NULL THEN 'COPY'
    ELSE 'SNOWPIPE'
  END AS ingest_method,
  SUM(row_count) AS row_count,
  SUM(row_parsed) AS rows_parsed,
  AVG(file_size) AS avg_file_size_bytes,
  SUM(file_size) AS total_file_size_bytes,
  SUM(file_size)/POWER(1024,1) AS total_file_size_kb,
  SUM(file_size)/POWER(1024,2) AS total_file_size_mb,
  SUM(file_size)/POWER(1024,3) AS total_file_size_gb,
  SUM(file_size)/POWER(1024,4) AS total_file_size_tb
FROM snowflake.account_usage.copy_history
GROUP BY 1,2,3,4,5,6
ORDER BY 3,4,5,1,2;
Copy
クエリ: Snowpipeのコスト履歴(日別、オブジェクト別)

このクエリは、パイプの包括的リストと、過去30日間にサービスを介して消費したクレジット量を日別に表示します。クレジットの消費に不規則性があるか、一貫して消費量が多い場合は、さらに調査する必要があることを表します。

SELECT TO_DATE(start_time) AS date,
  pipe_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.pipe_usage_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2
ORDER BY 3 DESC;
Copy
クエリ: Snowpipe履歴およびm日平均

このクエリは、Snowpipeによって消費された1日の平均クレジットを、前年の週ごとにグループ化して表示します。1年間の日次平均の異常を特定するのに役立ちます。これにより、消費の急増や予期しない変化をさらに調査することができます。

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.pipe_usage_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week',date),
  AVG(credits_used) AS avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy
クエリ: Snowpipe Streamingの総コスト

このクエリは、Snowpipe Streamingのコンピューティングコストとクライアントコストの両方を含む、Snowpipe Streamingの現在のクレジット使用状況をリストします。

SELECT start_time,
  end_time,
  SUM(credits_used) AS total_credits,
  name,
  IFF(CONTAINS(name,':'),'streaming client cost', 'streaming compute cost') AS streaming_cost_type
FROM SNOWFLAKE.ACCOUNT_USAGE.METERING_HISTORY
WHERE service_type ='SNOWPIPE_STREAMING'
GROUP BY ALL;
Copy

タスクの計算

クエリ: タスクの総コスト

このクエリは、すべてのサーバーレスタスクの現在におけるクレジット使用状況をリストします。

SELECT start_time,
  end_time,
  task_id,
  task_name,
  credits_used,
  schema_id,
  schema_name,
  database_id,
  database_name
FROM snowflake.account_usage.serverless_task_history
ORDER BY start_time, task_id;
Copy

複製のコンピューティング

クエリ: アカウント複製のコスト

このクエリは、当月にアカウント複製のために複製またはフェールオーバーグループによって使用されたクレジットをリストします。

SELECT start_time, 
  end_time, 
  replication_group_name, 
  credits_used, 
  bytes_transferred
FROM snowflake.account_usage.replication_group_usage_history
WHERE start_time >= DATE_TRUNC('month', CURRENT_DATE());
Copy
クエリ: データベース複製のコスト履歴(日別、オブジェクト別)

このクエリは、複製されたデータベースの包括的リストと、過去30日間に複製サービスを介して消費したクレジット量を日別に表示します。クレジットの消費に不規則性があるか、一貫して消費量が多い場合は、さらに調査する必要があることを表します。

SELECT TO_DATE(start_time) AS date,
  database_name,
  SUM(credits_used) AS credits_used
FROM snowflake.account_usage.database_replication_usage_history
WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP())
GROUP BY 1,2
ORDER BY 3 DESC;
Copy
クエリ: データベース複製の履歴およびm日平均

このクエリは、複製によって消費された1日の平均クレジットを、前年の週ごとにグループ化して表示します。これは、日次平均の異常を特定して、消費量の急増や変化を調査するために役立ちます。

WITH credits_by_day AS (
  SELECT TO_DATE(start_time) AS date,
    SUM(credits_used) AS credits_used
  FROM snowflake.account_usage.database_replication_usage_history
  WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP())
  GROUP BY 1
  ORDER BY 2 DESC
)

SELECT DATE_TRUNC('week',date),
  AVG(credits_used) AS avg_daily_credits
FROM credits_by_day
GROUP BY 1
ORDER BY 1;
Copy

パートナーツールのコンピューティング

クエリ: パートナーツールによるクレジット消費

このクエリは、どのSnowflakeのパートナーツール/ソリューション(例: BI、 ETL)が最も多くのクレジットを消費しているかを特定します。これは、予想よりも多くのクレジットを消費しているパートナーソリューションを特定するのに役立ちます。これは、追加の調査の出発点となる可能性があります。

-- This Is Approximate Credit Consumption By Client Application
WITH
  client_hour_execution_cte AS (
    SELECT
      CASE
        WHEN client_application_id LIKE 'Go %' THEN 'Go'
        WHEN client_application_id LIKE 'Snowflake UI %' THEN 'Snowflake UI'
        WHEN client_application_id LIKE 'SnowSQL %' THEN 'SnowSQL'
        WHEN client_application_id LIKE 'JDBC %' THEN 'JDBC'
        WHEN client_application_id LIKE 'PythonConnector %' THEN 'Python'
        WHEN client_application_id LIKE 'ODBC %' THEN 'ODBC'
        ELSE 'NOT YET MAPPED: ' || CLIENT_APPLICATION_ID
      END AS client_application_name,
      warehouse_name,
      DATE_TRUNC('hour',start_time) AS start_time_hour,
      SUM(execution_time)  AS client_hour_execution_time
    FROM snowflake.account_usage.query_history qh
      JOIN snowflake.account_usage.sessions se
        ON se.session_id = qh.session_id
    WHERE warehouse_name IS NOT NULL
      AND execution_time > 0
      AND start_time > DATEADD(month,-1,CURRENT_TIMESTAMP())
    GROUP BY 1,2,3
  ),
  hour_execution_cte AS (
    SELECT start_time_hour,
      warehouse_name,
      SUM(client_hour_execution_time) AS hour_execution_time
    FROM client_hour_execution_cte
    GROUP BY 1,2
  ),
  approximate_credits AS (
    SELECT A.client_application_name,
      C.warehouse_name,
      (A.client_hour_execution_time/B.hour_execution_time)*C.credits_used AS approximate_credits_used
    FROM client_hour_execution_cte A
      JOIN hour_execution_cte B
        ON A.start_time_hour = B.start_time_hour and B.warehouse_name = A.warehouse_name
      JOIN snowflake.account_usage.warehouse_metering_history C
        ON C.warehouse_name = A.warehouse_name AND C.start_time = A.start_time_hour
  )

SELECT client_application_name,
  warehouse_name,
  SUM(approximate_credits_used) AS approximate_credits_used
FROM approximate_credits
GROUP BY 1,2
ORDER BY 3 DESC;
Copy