- カテゴリ:
- システム関数 (システム情報) 
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS¶
テーブルの 自動クラスタリング を有効にすることに関連する推定コストを返します。この関数は次のような場合に使用されます。
- 初めてテーブルをクラスタリングする場合のコストを推定する。 
- テーブルのクラスタキーを変更するコストを推定する。 
- 可能であれば、指定されたキーを中心にクラスタ化された後のテーブルの維持に関連するコストを推定する。将来のメンテナンスコストを推定するために、 DML の履歴が必要になることもあります。 
重要
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS 関数によって返されるコストの推定はベストエフォートです。実際の実現コストは、推定コストとは最大で100%(またはまれに数倍)異なる場合があります。
構文¶
SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS( '<table_name>' ,
 [ '( <expr1> [ , <expr2> ... ] )' ] )
引数¶
- 'table_name'
- クラスタリングの推定コストを返したいテーブルの名前。 
- '(expr1 [ , expr2 ... ])'
- テーブルの提案されたクラスターキーは、各式がテーブルの列に解決される場所です。この関数は、これらの列をクラスタキーとして使用してテーブルをクラスタリングするコストを推定します。 
列名または式が1つだけ渡される場合でも、括弧内に含める必要があります。
クラスタリングキーのないテーブルでは、この引数は必須です。引数が省略された場合はエラーが返されます。
クラスタリングキーを持つテーブルでは、この引数はオプションです。引数が省略された場合、関数はテーブルの現在のクラスタリングキーを使用してテーブルをクラスタリングするコストを推定します。
戻り値¶
VARCHAR 型の値。返される文字列は JSON 形式で、次の名前と値のペアが含まれています。
- warning
- 条件がコストの推定精度やクラスターキーを選択するインパクトに影響を与える可能性があるかどうかを示します。 
- reportTime
- 関数の出力が生成された日付。 
- clusteringKey
- クラスターキーを構成する列。 
- initial
- 指定されたクラスターキーを中心にテーブルをクラスタリングする予測コストを説明します。一旦クラスタ化されたテーブルを維持するための推定コストは含まれていません。 - initialJSON オブジェクトには以下の名前と値のペアが含まれています。- unit
- 初期コストを表す単位を示します。 
- value
- テーブルをクラスター化するためのコストを示し、 - unitで表されます。
- comment
- クラスタリングの初期コストを解釈します。 
 
- maintenance
- 最初にクラスター化された後、うまくクラスター化されたテーブルを維持するための予測コストを説明します。この予測は、テーブルが変更されると再クラスター化されるため、最近の DML アクティビティに基づいています。 - 空のオブジェクトは、Snowflakeがメンテナンスコストの見積もりを提供できなかったことを示します。コストを正確に予測するために、テーブルに利用可能な DML 履歴が十分なかったり、過去1週間にサポートされた DML 型が十分なかったりした場合の多くで、Snowflakeはメンテナンスの見積もりを提供できません。 - unit
- コストを表す単位を示します。 
- value
- 初期クラスタリング後にテーブルを維持するためにかかるコストを示し、1日あたりの - unitsで表されます。
- comment
- コスト発生期間と推定の根拠となる期間を含みます。 
 
アクセス制御の要件¶
コストを推定するのに必要な権限は、テーブルを読んだりクラスターキーを変更したりするのに必要な権限と同じです。以下の権限が必要です。
- テーブルに対する SELECT と INSERT 権限、またはテーブルに対する OWNERSHIP 権限。 
- 親スキーマおよびデータベースに対する USAGE または OWNERSHIP 権限。 
使用上の注意¶
- SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS 関数によって返されるコストの推定は、テーブルからマイクロパーティションのサブセットをサンプリングし、クラスタリングの実行時間をキャプチャすることに基づいています。サンプリングされた特定のマイクロパーティションとシステム速度によって、コストの推定は関数の実行ごとに異なる可能性があります。 
- 最高の精度を得るためには、 SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS を複数回実行し、結果を平均化できます。この関数はサンプルのクラスタリングジョブを使用し、その実行時間を収集します。提供されるコストの推定は、システム速度によって変動する可能性があります。この関数を複数回実行し、その結果を平均化することで、より正確なコストの推定が可能になります。 
- メンテナンスコストの推定が不正確である最も一般的な理由は、推定に基づいた過去の DML パターンが、将来の DML パターンと一致しなかったことです。 
- Snowflakeは、大多数の場合に1回限りのコスト見積もりと、場合によってはメンテナンスコストの見積もりを提供することができます。関数がメンテナンスコストの見積もりを提供できない場合、Snowflakeは出力に理由を含めます。 
例¶
テーブル myTable のクラスタリングキーとして列 day および tenantId を定義することに関連する推定コストを返します。
SELECT SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS('myTable', '(day, tenantId)');
{
  "reportTime": "Fri, 12 Jul 2024 01:06:18 GMT",
  "clusteringKey": "LINEAR(day, tenantId)",
  "initial": {
    "unit": "Credits",
    "value": 98.2,
    "comment": "Total upper bound of one-time cost"
  },
  "maintenance": {
    "unit": "Credits",
    "value": 10.0,
    "comment": "Daily maintenance cost estimate provided based on DML history from the
    past seven days."
  }
}