
# 精度函数
HLL（HyperLogLog）主要存在三种模式Explicit，Sparse，Full。当数据规模比较小的时候会使用Explicit模式和Sparse模式， 这两种模式在计算结果上基本上没有误差。 随着distinct值越来越多，就会转换成Full模式，但结果也会存在一定误差。下列函数用于查看HLL中精度参数。
#### hll_schema_version(hll)
描述：查看当前hll中的schema version。
返回值类型：integer
示例：
```
SELECT hll_schema_version(hll_empty());
 hll_schema_version 
--------------------
           1
(1 row)
```
#### hll_type(hll)
描述：查看当前hll的类型。
返回值类型：integer
示例：
```
SELECT hll_type(hll_empty());
 hll_type 
----------
        1
(1 row)
```
#### hll_log2m(hll)
描述：查看当前hll的log2m数值，此值会影响最后hll计算distinct误差率，误差率计算公式为：
![](https://support.huaweicloud.com/sqlreference-911-dws/figure/zh-cn_image_0000001495204945.png "点击放大")
返回值类型：integer
示例：
```
SELECT hll_log2m(hll_empty());
 hll_log2m 
-----------
        11
(1 row)
```
#### hll_regwidth(hll)
描述：查看hll数据结构中桶的位数大小。
返回值类型：integer
示例：
```
SELECT hll_regwidth(hll_empty());
 hll_regwidth
--------------
            5
(1 row)
```
#### hll_expthresh(hll)
描述：得到当前hll中expthresh大小，hll通常会由Explicit模式到Sparse模式再到Full模式，这个过程称为promotion hierarchy策略。可以通过调整expthresh值的大小改变策略，比如expthresh为0的时候就会跳过Explicit模式而直接进入Sparse模式。当显式指定expthresh的取值为1-7之间时，该函数得到的是 2^expthresh^。
返回值类型：record
示例：
```
SELECT hll_expthresh(hll_empty());
 hll_expthresh 
---------------
 (-1,160)
(1 row)
SELECT hll_expthresh(hll_empty(11,5,3));
 hll_expthresh 
---------------
 (8,8)
(1 row)
```
#### hll_sparseon(hll)
描述：是否启用sparse模式，0是关闭，1是开启。
返回值类型：integer
示例：
```
SELECT hll_sparseon(hll_empty());
 hll_sparseon
--------------
            1
(1 row)
```
