카테고리:

시스템 함수 (시스템 정보)

SYSTEM$CLUSTERING_INFORMATION

테이블에 있는 하나 이상의 열을 기반으로 하는 테이블에 대해 평균 클러스터링 깊이를 포함한 클러스터링 정보를 반환합니다.

참고 항목:

SYSTEM$CLUSTERING_DEPTH

구문

SYSTEM$CLUSTERING_INFORMATION( '<table_name>'
    [ , { '( <expr1> [ , <expr2> ... ] )' | <number_of_errors> } ] )
Copy

인자

table_name

클러스터링 정보를 반환하려는 테이블입니다.

(expr1 [ , expr2 ... ])

클러스터링 정보가 반환되는 열 이름 또는 식:

  • 클러스터링 키가 없는 테이블의 경우, 이 인자가 필요합니다. 이 인자를 생략하면 오류가 반환됩니다.

  • 클러스터링 키가 있는 테이블의 경우, 이 인자는 선택 사항입니다. 인자가 생략되면 Snowflake는 정의된 클러스터링 키를 사용하여 클러스터링 정보를 반환합니다.

전달하는 열 이름이나 식이 하나뿐이더라도 괄호로 묶어야 합니다.

참고

이 인자를 사용하여, 테이블에 대해 클러스터링 키가 정의되었는지 여부와 관계없이 테이블의 모든 열에 대한 클러스터링 정보를 반환할 수 있습니다.

즉, 이를 사용하여, 향후 사용할 클러스터링을 결정하는 데 도움을 받을 수 있습니다.

number_of_errors

함수에서 반환되는 클러스터링 오류의 수입니다. 이 인자를 생략하면 가장 최근 오류 10개가 반환됩니다.

사용법 노트

  • 함수의 두 번째 인자는 열 이름/식 또는 오류 수를 지정합니다. 한 번의 함수 호출에 두 인자를 모두 포함할 수는 없습니다.

  • 테이블 이름, 열 이름, 식은 문자열이므로 작은따옴표로 묶어야 합니다.

출력

함수는 VARCHAR 형식의 값을 반환합니다.

반환된 문자열은 JSON 형식이며 다음 이름/값 페어를 포함합니다.

cluster_by_keys

클러스터링 정보를 반환하는 데 사용되는 테이블의 열로, 테이블의 모든 열일 수 있습니다.

notes

이 열에는 클러스터링을 보다 효율적으로 만들기 위한 제안 사항이 포함될 수 있습니다. 예를 들어, 클러스터링 열의 카디널리티가 매우 높은 경우, 이 필드에 경고가 포함될 수 있습니다.

이 열은 비어 있을 수 있습니다.

효율적으로 클러스터하는 방법에 대한 자세한 내용은 클러스터링 키 선택 전략 을 참조하십시오.

total_partition_count

테이블을 구성하는 총 마이크로 파티션 수입니다.

total_constant_partition_count

지정된 열의 값이 일정한 상태에 도달한(즉, 마이크로 파티션은 재클러스터링의 이점을 크게 얻지 못함) 총 마이크로 파티션 수입니다. 테이블의 일정한 마이크로 파티션 수는 쿼리 정리에 영향을 줍니다. 숫자가 높을수록, 테이블에서 실행된 쿼리에서 더 많은 마이크로 파티션을 제거할 수 있으며, 이는 성능에 대해 상응하는 영향을 미칩니다.

average_overlaps

테이블의 각 마이크로 파티션에 대해 중첩되는 마이크로 파티션의 평균 수입니다. 높은 숫자는 테이블이 잘 클러스터되지 않았음을 나타냅니다.

average_depth

테이블에 있는 각 마이크로 파티션의 평균 중첩 깊이입니다. 높은 숫자는 테이블이 잘 클러스터되지 않았음을 나타냅니다.

이 값은 SYSTEM$CLUSTERING_DEPTH 서도 반환됩니다.

partition_depth_histogram

테이블의 각 마이크로 파티션에 대한 중첩 깊이 분포를 나타내는 히스토그램입니다. 히스토그램에는 너비가 있는 버킷이 포함되어 있습니다.

  • 0 에서 16 까지 1 씩 증가합니다.

  • 16 보다 큰 버킷의 경우, 이전 버킷 너비의 두 배로 증가합니다(예: 32, 64, 128, …).

clustering_errors

각각 timestamperror 이름/값 페어가 있는 JSON 오브젝트로 구성된 배열입니다. error 는 자동 클러스터링이 데이터를 다시 클러스터링할 수 없는 이유를 설명합니다.

기본적으로 가장 최근 오류 10개가 배열로 반환됩니다. 오류를 더 많이 또는 더 적게 반환하려면 함수의 두 번째 인자로 숫자를 지정하십시오.

마이크로 파티션 중첩 및 깊이, 그리고 이러한 요소가 쿼리 정리에 미치는 영향에 대한 자세한 내용은 Snowflake 테이블 구조 이해하기 섹션을 참조하십시오.

가장 최근의 클러스터링 오류 5개를 반환합니다.

SELECT SYSTEM$CLUSTERING_INFORMATION('t1', 5);
Copy

테이블의 두 열을 사용하여 테이블에 대한 클러스터링 정보를 반환합니다.

SELECT SYSTEM$CLUSTERING_INFORMATION('test2', '(col1, col3)');
Copy
+--------------------------------------------------------------------+
| SYSTEM$CLUSTERING_INFORMATION('TEST2', '(COL1, COL3)')             |
|--------------------------------------------------------------------|
| {                                                                  |
|   "cluster_by_keys" : "LINEAR(COL1, COL3)",                        |
|   "total_partition_count" : 1156,                                  |
|   "total_constant_partition_count" : 0,                            |
|   "average_overlaps" : 117.5484,                                   |
|   "average_depth" : 64.0701,                                       |
|   "partition_depth_histogram" : {                                  |
|     "00000" : 0,                                                   |
|     "00001" : 0,                                                   |
|     "00002" : 3,                                                   |
|     "00003" : 3,                                                   |
|     "00004" : 4,                                                   |
|     "00005" : 6,                                                   |
|     "00006" : 3,                                                   |
|     "00007" : 5,                                                   |
|     "00008" : 10,                                                  |
|     "00009" : 5,                                                   |
|     "00010" : 7,                                                   |
|     "00011" : 6,                                                   |
|     "00012" : 8,                                                   |
|     "00013" : 8,                                                   |
|     "00014" : 9,                                                   |
|     "00015" : 8,                                                   |
|     "00016" : 6,                                                   |
|     "00032" : 98,                                                  |
|     "00064" : 269,                                                 |
|     "00128" : 698                                                  |
|   },                                                               |
|   "clustering_errors" : [ {                                        |
|      "timestamp" : "2023-04-03 17:50:42 +0000",                    |
|      "error" : "(003325) Clustering service has been disabled.\n"  |
|      }                                                             |
|   ]                                                                |
| }                                                                  |
+--------------------------------------------------------------------+

이 예는 다음과 같은 이유로 test2 테이블이 잘 클러스터되지 않았음 을 나타냅니다.

  • 마이크로 파티션 총 1156 개 중 일정한 마이크로 파티션 0 개.

  • 중첩되는 마이크로 파티션의 평균이 높습니다.

  • 마이크로 파티션 전반에 걸친 평균 중첩 깊이가 높습니다.

  • 대부분의 마이크로 파티션은 히스토그램의 하단에 그룹화되어 있으며 대부분의 마이크로 파티션은 64 에서 128 사이의 중첩 깊이를 가집니다.

  • 이전에는 자동 클러스터링이 비활성화되었습니다.

제한 사항

테이블에 2백만 개 이상의 파티션이 있는 경우:

  • 함수의 결과는 테이블 파티션의 하위 세트를 기반으로 합니다.

  • 출력의 total_partition_count 필드 값은 2백만입니다.