- 카테고리:
- 시스템 함수 (시스템 정보) 
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 ... ])’
- 테이블에 대해 제안된 클러스터 키는 각 식이 테이블 열로 확인되는 곳입니다. 이 함수는 이러한 열을 클러스터 키로 사용하여 테이블을 클러스터링하는 비용을 추정합니다. 
전달하는 열 이름이나 식이 하나뿐이더라도 괄호로 묶어야 합니다.
이 인자는 클러스터링 키가 없는 테이블에 필수적입니다. 인자가 생략되면 오류가 반환됩니다.
클러스터링 키가 있는 테이블의 경우 이 인자는 선택 사항입니다. 인자를 생략하면 함수는 테이블의 현재 클러스터링 키를 사용하여 테이블을 클러스터링하는 데 드는 비용을 추정합니다.
반환¶
VARCHAR 형식의 값입니다. 반환된 문자열은 JSON 형식이며 다음 이름/값 페어를 포함합니다.
- warning
- 조건이 비용 추정 정확도나 클러스터 키 선택의 효과에 영향을 미칠 수 있는지 여부를 나타냅니다. 
- reportTime
- 함수의 출력이 생성된 날짜입니다. 
- clusteringKey
- 클러스터 키를 구성하는 열입니다. 
- initial
- 지정된 클러스터 키를 중심으로 테이블을 클러스터링하는 데 필요한 예상 비용을 설명합니다. 테이블을 클러스터링한 후 유지 관리하기 위한 추정 비용은 포함되지 않습니다. - initialJSON 오브젝트에는 다음 이름/값 페어가 포함됩니다.- unit
- 초기 비용을 표현하는 단위를 나타냅니다. 
- value
- unit으로 표현된 테이블 클러스터링 비용을 나타냅니다.
- comment
- 클러스터링의 초기 비용을 해석합니다. 
 
- maintenance
- 테이블을 처음 클러스터링한 후, 제대로 클러스터링된 테이블을 유지하기 위한 예상 비용을 설명합니다. 테이블이 변경됨에 따라 다시 클러스터링되므로 이러한 예측은 최근의 DML 활동을 기반으로 합니다. - 빈 오브젝트는 Snowflake가 유지 관리 비용 견적을 제공할 수 없음을 나타냅니다. 대부분의 경우 테이블에 사용 가능한 DML 기록이 충분하지 않거나 지난 주에 지원된 DML 유형이 충분하지 않아 비용을 정확하게 예측할 수 없기 때문에 Snowflake가 유지 관리 견적을 제공할 수 없습니다. - unit
- 비용을 표현하는 단위를 나타냅니다. 
- value
- 초기 클러스터링 후 테이블 유지 관리에 드는 비용을 나타내며, 일당 - units로 나타냅니다.
- comment
- 비용이 발생한 기간과 추정의 기준이 되는 기간을 포함합니다. 
 
액세스 제어 요구 사항¶
비용을 추정하는 데 필요한 권한은 테이블을 읽고 클러스터 키를 변경하는 데 필요한 권한과 동일합니다. 다음과 같은 권한이 필요합니다.
- 테이블에 대한 SELECT 및 INSERT 권한, 또는 테이블에 대한 OWNERSHIP 권한. 
- 상위 스키마 및 데이터베이스에 대한 USAGE 또는 OWNERSHIP 권한. 
사용법 노트¶
- SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS 함수가 반환하는 비용 추정치는 테이블에서 마이크로 파티션의 하위 세트를 샘플링하고 클러스터링 실행 시간을 캡처하는 데 기반합니다. 샘플링된 특정 마이크로 파티션과 시스템 속도에 따라, 함수 실행 간의 비용 추정치는 다를 수 있습니다. 
- 가능한 최선의 결과를 얻으려면 SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS를 여러 번 실행하고 결과의 평균을 구하면 됩니다. 이 함수는 샘플 클러스터링 작업을 사용하고 실행 시간을 수집합니다. 제공되는 비용 추정치는 시스템 속도에 따라 변동될 수 있습니다. 함수를 여러 번 실행하고 결과의 평균을 구하면 더 정확한 비용 추정치를 얻을 수 있습니다. 
- 유지 관리 비용 추정이 부정확한 가장 흔한 이유는 추정에 근거한 과거 DML 패턴이 미래의 DML 패턴과 일치하지 않았기 때문입니다. 
- Snowflake는 대부분의 경우 일회성 비용 견적을, 일부의 경우 유지 관리 비용 견적을 제공할 수 있습니다. 함수가 유지 관리 비용 견적을 제공할 수 없는 경우 Snowflake는 출력에 이유를 포함합니다. 
예¶
day 및 tenantId 열을 myTable 테이블의 클러스터링 키로 정의하는 것과 관련된 예상 비용을 반환합니다.
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."
  }
}