类别:

系统函数 (系统信息)

SYSTEM$CLUSTERING_DEPTH

根据指定的列(或为表定义的群集密钥)计算表的平均深度。填充的表(即包含数据的表)的平均深度始终为 1 或更大。平均深度越小,表与指定列相关的聚类就越好。

有关微分区和群集密钥的更多信息,请参阅 了解 Snowflake 表结构

另请参阅:

SYSTEM$CLUSTERING_INFORMATION

语法

SYSTEM$CLUSTERING_DEPTH( '<table_name>' , '( <col1> [ , <col2> ... ] )' [ , '<predicate>' ] )
Copy

实参

table_name

要计算其群集深度的表。

col1 [ , col2 ... ]

表中用于计算群集深度的列:

  • 对于没有群集密钥的表,必须使用此实参。如果省略此实参,将返回错误信息。

  • 对于具有群集密钥的表,此实参是可选的;如果省略此实参,Snowflake 将使用定义的群集密钥计算深度。

备注

无论是否为表定义了群集密钥,都可以使用此实参为表中的任何列计算深度。

predicate

该子句筛选要为其计算群集深度的列中的值范围。请注意,predicate 在子句的开头不使用 WHERE 关键字。

使用说明

  • 所有实参都是字符串(即它们必须放入单引号内)。

  • 如果 predicate 包含字符串,则该字符串必须放入单引号内,然后必须使用单引号对其进行转义。例如:

    SYSTEM$CLUSTERING_DEPTH( ... , 'col1 = 100 and col2 = ''A''' )

示例

使用为表定义的群集密钥计算表的群集深度:

SELECT SYSTEM$CLUSTERING_DEPTH('TPCH_ORDERS');

+----------------------------------------+
| SYSTEM$CLUSTERING_DEPTH('TPCH_ORDERS') |
|----------------------------------------+
| 2.4865                                 |
+----------------------------------------+
Copy

使用表中的两列计算表的群集深度:

SELECT SYSTEM$CLUSTERING_DEPTH('TPCH_ORDERS', '(C2, C9)');

+----------------------------------------------------+
| SYSTEM$CLUSTERING_DEPTH('TPCH_ORDERS', '(C2, C9)') |
+----------------------------------------------------+
| 23.1351                                            |
+----------------------------------------------------+
Copy

与上一个示例相同,但在其中一个列上有一个谓词:

SELECT SYSTEM$CLUSTERING_DEPTH('TPCH_ORDERS', '(C2, C9)', 'C2 = 25');

+----------------------------------------------------+
| SYSTEM$CLUSTERING_DEPTH('TPCH_ORDERS', '(C2, C9)') |
+----------------------------------------------------+
| 11.2452                                            |
+----------------------------------------------------+
Copy
语言: 中文