- 类别:
系统函数 (系统信息)
SYSTEM$CLUSTERING_DEPTH¶
根据指定的列(或为表定义的群集密钥)计算表的平均深度。填充的表(即包含数据的表)的平均深度始终为 1
或更大。平均深度越小,表与指定列相关的聚类就越好。
有关微分区和群集密钥的更多信息,请参阅 了解 Snowflake 表结构。
语法¶
SYSTEM$CLUSTERING_DEPTH( '<table_name>' , '( <col1> [ , <col2> ... ] )' [ , '<predicate>' ] )
实参¶
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 | +----------------------------------------+
使用表中的两列计算表的群集深度:
SELECT SYSTEM$CLUSTERING_DEPTH('TPCH_ORDERS', '(C2, C9)'); +----------------------------------------------------+ | SYSTEM$CLUSTERING_DEPTH('TPCH_ORDERS', '(C2, C9)') | +----------------------------------------------------+ | 23.1351 | +----------------------------------------------------+
与上一个示例相同,但在其中一个列上有一个谓词:
SELECT SYSTEM$CLUSTERING_DEPTH('TPCH_ORDERS', '(C2, C9)', 'C2 = 25'); +----------------------------------------------------+ | SYSTEM$CLUSTERING_DEPTH('TPCH_ORDERS', '(C2, C9)') | +----------------------------------------------------+ | 11.2452 | +----------------------------------------------------+