コンピューティングコストの調査¶
コンピューティングコスト合計は、次の全体的な使用で構成されます。
仮想ウェアハウス(ユーザー管理のコンピューティングリソース)
Snowflakeが管理するコンピューティングリソースを使用する、自動クラスタリングやSnowpipeなどのサーバーレス機能
Snowflakeアーキテクチャのクラウドサービスレイヤー
このトピックでは、 Snowsight を使用するか、 ACCOUNT_USAGE および ORGANIZATION_USAGE スキーマのビューに対するクエリを記述することによって、コンピューティングコスト履歴に対する洞察を得る方法について説明します。 Snowsight を使用すると、視覚的なダッシュボードからコストに関する情報をすばやく簡単に取得できます。使用状況ビューに対するクエリを使用すると、コストデータをドリルダウンできるようになり、カスタムレポートとダッシュボードの生成に役立てることができます。
コンピューティングコストがどのように発生するかに関する詳細については、 コンピューティングコストについて をご参照ください。
注釈
クラウドサービスレイヤーはクレジットを消費しますが、これらのクレジットのすべてが実際に請求されるわけではありません。クラウドサービスの使用量は、クラウドサービスの1日の使用量が仮想ウェアハウスの1日の使用量の10%を超えた場合にのみ課金されます。 Snowsight と大多数のビューは、このクラウドサービスへの日々の調整を考慮せずに、ウェアハウス、サーバーレス機能、クラウドサービスによって消費されたクレジットの合計数を表示します。コンピュートコストとして実際に請求されたクレジットの数を調べるには、 METERING_DAILY_HISTORYビュー に対してクエリを実行します。
クレジット使用状況の表示¶
すべてのコンピューティングリソース(仮想ウェアハウス、サーバーレス、クラウドサービス)は、Snowflakeクレジットを消費します。ユーザーは、 Snowsight を使用して、特定の日、週、または月のコンピューティング使用状況の総コストを表示できます。
コンピューティングコストを調査するには、次を実行します。
Snowsight にサインインします。
ACCOUNTADMIN ロールに切り替えます。アカウント管理者でない場合は、 コストと使用状況データにアクセス できるロールに切り替えます。
Admin » Cost Management に移動します。
使用状況データを表示するために使用するウェアハウスを選択します。Snowflakeは、この目的のために XS ウェアハウスを使用することをお勧めします。
Consumption を選択します。
使用状況のタイプドロップダウンから Compute を選択します。
注釈
ユーザーが ACCOUNTADMIN のロールを持ち、 ORGADMIN のロールを 持たない 場合、そのユーザーは現在のアカウントのコストのみを表示できます。別のアカウントへの切り替えを可能にする Account フィルターは表示されません。
タグ別にフィルターする¶
組織内の理論ユニットに使用している リソースのコストを帰属させる ためにタグを使用できます。タグは、Snowflakeオブジェクトで、関連する1つ以上の値を持つことができます。適切な権限を持っているユーザーにより、コストセンターまたは他の理論ユニット(例: 開発環境、事業単位、または業種)が使用する各リソースに、タグと値のペアを適用します。リソースにタグを付けると、特定のタグと値のペアに基づいてコストを分離して、特定の理論ユニットにコストを帰属させることができるようになります。
Consumption ダッシュボードをフィルターして、特定のタグと値の組み合わせに関連したコストを表示するには、
Snowsight で、 Consumption ダッシュボードを開きます。
Tags ドロップダウンから、タグを選択します。
タグの値のリストから値を選択します。
Apply を選択します。
たとえば、ドロップダウンを使用して、 COST_CENTER
タグと SALES
値を選択し、 COST_CENTER = SALES
のタグがあるリソースに関連した使用状況をそれ以外の使用状況は含めずに表示することができます。
タグのあるすべてのリソースをタグの値に関係なく表示することもできます。ドロップダウンを使用してタグを選択してから、特定の値の代わりに All を選択します。
種類、サービス、リソース別に消費を表示する¶
コンピューティング履歴を表示する棒グラフを表示する場合は、データ By Type、 By Service、または By Resource をフィルターできます。
- タイプ別:
リソースの消費をコンピューティング(仮想ウェアハウスとサーバーレスリソース)とクラウドサービスに分離します。このフィルターの目的のために、クラウドサービスは他のタイプのコンピューティングリソースから分離されます。
- サービス別:
リソースの消費をウェアハウスの消費と各サーバーレス機能による消費に分離します。たとえば、 WAREHOUSE_METERING はウェアハウスによって消費されたクレジットを表し、 PIPE はサーバーレスSnowpipe機能によって消費されたクレジットを表します。クラウドサービスコンピューティングは、ウェアハウスの消費に含まれます。
- リソース別:
クレジットを消費したSnowflakeオブジェクトごとにリソースの消費を分離します。たとえば、サーバーレスコストの発生したすべてのテーブルと同様に、各ウェアハウスが表示されます。
コンピューティングコストのデータのクエリ¶
Snowflakeは、使用状況とコストに関連するデータを含む2つのスキーマ、 ORGANIZATION_USAGE と ACCOUNT_USAGE を提供します。ORGANIZATION_USAGE スキーマは組織内にあるすべてのアカウントのコスト情報を提供しますが、 ACCOUNT_USAGE スキーマは単一のアカウントについて同様の情報を提供します。これらのスキーマでのビューは、カスタムレポートまたはダッシュボードを作成するための、詳細かつ分析に対応した使用状況データを提供します。
ORGANIZATION_USAGE および ACCOUNT_USAGE スキーマのほとんどのビューには、消費された クレジット に関するコンピューティングリソースのコストが含まれています。クレジットではなく通貨単位でコンピューティングコストを調査するには、 USAGE_IN_CURRENCY_DAILY ビュー に対するクエリを記述します。このビューは、クレジットの日次価格を使用して、消費されたクレジットを通貨単位のコストに変換します。
次のビューは、コンピューティングコストに関連する使用状況とコストの情報を提供します。
ビュー |
コンピューティングリソース |
説明 |
スキーマ |
---|---|---|---|
AUTOMATIC_CLUSTERING_HISTORY |
サーバーレス |
自動クラスタリングによって消費されたクレジット。 |
|
DATABASE_REPLICATION_USAGE_ HISTORY |
サーバーレス |
データベース複製で消費されるクレジット。 |
|
HYBRID_TABLE_USAGE_HISTORY |
サーバーレス |
ハイブリッドテーブルのリクエストリソースに消費されたクレジット。 |
|
LISTING_AUTO_FULFILLMENT_ REFRESH_DAILY |
ウェアハウス |
クロスクラウド自動複製で他のリージョンに複製されたデータを更新するために使用されたクレジット。 |
|
LISTING_AUTO_FULFILLMENT_ USAGE_HISTORY |
ウェアハウス |
クロスクラウド自動複製の使用によるデータ製品の他のリージョンへのフルフィルメントに関連する推定使用量。REPLICATION の SERVICE_TYPE をご参照ください。 |
|
MATERIALIZED_VIEW_REFRESH_ HISTORY |
サーバーレス |
マテリアライズドビューの更新に消費されるクレジット。 |
|
METERING_DAILY_HISTORY |
ウェアハウス サーバーレス クラウドサービス |
特定の日に、すべてのコンピューティングリソース(ウェアハウス、サーバーレス、およびクラウドサービス)によって消費されたクレジット。 特定の日にクラウドサービスのコンピューティングコストが実際に請求されたかどうかを判断するために使用できます(つまり、クラウドサービスのクレジット消費量がウェアハウスの消費量の10%超)。 |
|
METERING_HISTORY |
ウェアハウス サーバーレス クラウドサービス |
ウェアハウスおよびクラウドサービスによって消費される時間単位のクレジット。個々のウェアハウスが消費しているクレジット数を確認するには、 WAREHOUSE_METERING_HISTORY ビューをクエリします。 |
|
PIPE_USAGE_HISTORY |
サーバーレス |
Snowpipeによって消費されたクレジット。 |
|
QUERY_ACCELERATION_HISTORY |
サーバーレス |
クエリアクセラレーションサービスによって消費されたクレジット。 |
|
REPLICATION_USAGE_HISTORY |
サーバーレス |
データベース複製中に消費されたクレジットと転送されたバイト数。可能な場合は、代わりに DATABASE_REPLICATION_USAGE_HISTORY ビュー を使用します。 |
|
REPLICATION_GROUP_USAGE_ HISTORY |
サーバーレス |
特定の複製グループの複製中に消費されたクレジットと転送されたバイト数。 |
|
SEARCH_OPTIMIZATION_HISTORY |
サーバーレス |
検索最適化サービスによって消費されたクレジット。 |
|
SERVERLESS_TASK_HISTORY |
サーバーレス |
タスクによって消費されたクレジット。 |
|
SNOWPIPE_STREAMING_FILE_ MIGRATION_HISTORY |
サーバーレス |
Snowpipeストリーミングコンピューティングによって消費されるクレジット(クライアントコストは含まれません)。 |
|
USAGE_IN_CURRENCY_DAILY |
ウェアハウス サーバーレス クラウドサービス |
すべてのコンピューティングリソースによる日次のクレジット消費量と、組織の通貨単位による使用コスト。 |
|
WAREHOUSE_METERING_HISTORY |
ウェアハウス クラウドサービス |
ウェアハウスの使用に関連するクラウドサービスのコストを含む、各ウェアハウスの時間単位のクレジット使用状況。 |
注釈
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;
- クエリ: 特定の期間におけるウェアハウスごとのクレジット消費
このクエリは、特定の期間における各ウェアハウスのクレジット消費の合計を示します。これにより、他のウェアハウスよりも多くのクレジットを消費しているウェアハウスや、予想よりも多くのクレジットを消費している特定のウェアハウスを識別できます。
-- 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;
- クエリ: 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;
クラウドサービスのコンピューティング¶
- クエリ: 請求済みクラウドサービス
クラウドサービスの使用量 は、クラウドサービスの日次消費量が仮想ウェアハウスの日次使用量の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;
- クエリ: クエリの種類ごとのクラウドサービスの合計コスト
このクエリは、特定の種類のクエリによってクラウドサービスで消費されたクレジットの合計を返します。
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'
を置き換え、より長いまたは短い期間を調べたい場合は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;
- クエリ: クラウドサービスの使用率が高いウェアハウス
このクエリは、コンピューティングのクラウドサービス部分をカバーするために、十分なウェアハウス時間が使用されていないウェアハウスを示します。これは、クラウドサービスの使用率が高い(全体のクレジットの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;
- クエリ: クエリ時間の割合で並べ替えられたクラウドサービスの使用状況
このクエリは、過去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;
自動クラスタリングのコンピューティング¶
- クエリ: 自動クラスタリングのコスト履歴(日別、オブジェクト別)
このクエリは、自動クラスタリングを使用したテーブルのリストと、過去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;
- クエリ: 自動クラスタリング履歴および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;
検索最適化のコンピューティング¶
- クエリ: 検索最適化のコスト履歴(日別、オブジェクト別)
このクエリは、検索最適化を使用したテーブルの包括的リストと、過去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;
- クエリ: 検索最適化履歴および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;
マテリアライズドビューのコンピューティング¶
- クエリ: マテリアライズドビューのコスト履歴(日別、オブジェクト別)
このクエリは、マテリアライズドビューの包括的リストと、過去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;
- クエリ: マテリアライズドビュー履歴および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;
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;
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;
- クエリ: 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;
- クエリ: 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;
- クエリ: 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;
タスクのコンピューティング¶
- クエリ: タスクの総コスト
このクエリは、すべてのサーバーレスタスクの現在におけるクレジット使用状況をリストします。
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;
複製のコンピューティング¶
- クエリ: アカウント複製のコスト
このクエリは、当月にアカウント複製のために複製またはフェールオーバーグループによって使用されたクレジットをリストします。
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());
- クエリ: データベース複製のコスト履歴(日別、オブジェクト別)
このクエリは、複製されたデータベースの包括的リストと、過去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;
- クエリ: データベース複製の履歴および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;
パートナーツールのコンピューティング¶
- クエリ: パートナーツールによるクレジット消費
このクエリは、どの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;
ハイブリッドテーブルのコンピューティング¶
- クエリ: 特定の期間におけるハイブリッドテーブル別のクレジット消費
このクエリは、特定の期間における各ハイブリッドテーブルの合計クレジット消費量を表示します。これにより、他のハイブリッドテーブルよりも多くのクレジットを消費しているハイブリッドテーブルや、予想よりも多くのクレジットを消費している特定のハイブリッドテーブルを識別できます。
-- Credits used (all time = past year) SELECT object_name, SUM(credits_used) AS total_credits FROM snowflake.account_usage.hybrid_table_usage_history GROUP BY 1 ORDER BY 2 DESC; -- Credits used (past N days/weeks/months) SELECT object_name, SUM(credits_used) AS total_credits FROM snowflake.account_usage.hybrid_table_usage_history WHERE start_time >= DATEADD(day, -m, CURRENT_TIMESTAMP()) GROUP BY 1 ORDER BY 2 DESC;