日志服务 估算函数

approx_distinct 函数用于估算字段值中不重复值的个数,估算结果标准误差为2.3%。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

这篇说说估算函数的基本语法及示例。

函数名称 函数语法 说明
approx_distinct 函数 approx_distinct(x) 估算 x 列的唯一值的个数。
approx_percentile函数 approx_percentile(x,percentage) 对于 x 列进行正序排序,返回大约处于 percentage 位置的值。
 approx_percentile(x,array[percentage01, percentage02…]) 对于 x 列进行正序排序,返回大约处于 percentage01、percentage02 位置的值。

一、语法

approx_distinct(x)

二、参数说明

参数 说明
x 参数值为任意数据类型。

三、返回值类型

bigint 类型。

四、示例

使用 count 函数计算 PV,使用 approx_distinct 函数估算不重复的 client_ip 字段值作为 UV。

* | SELECT count(*) AS PV, approx_distinct(ip) AS UV

五、approx_percentile 函数

approx_percentile 函数用于对目标字段的值进行正序排列,返回大约处于 percentage 位置的数值。采用 T-Digest 算法进行估算,误差较低,能够满足绝大多数统计分析需求,如有需要,可使用 * | select count_if(x<(select approx_percentile(x,percentage))),count(*) 分别精确统计低于 percentage 的字段值个数和总数来验证该统计误差。

六、语法

·返回处于 percentage 位置的数值,返回结果为 double 类型。

approx_percentile(x, percentage)

·返回处于 percentage01、percentage02 位置的数值,返回结果为 array 类型。

approx_percentile(x, array[percentage01,percentage02…])

七、参数说明

参数 说明
x 参数值为 double 类型。
percentage 百分比值,取值范围为[0,1]。

八、返回值类型

double 类型或 array 类型。

九、示例

1. 对 resTotalTime 列进行排列后,返回大约处于50%位置的 resTotalTime 字段的值。

* | select approx_percentile(resTotalTime,0.5)

2. 对 resTotalTime 列进行排列后,返回处于20%、40%及60%位置的 resTotalTime 字段的值。

* | select approx_percentile(resTotalTime, array[0.2,0.4,0.6])

赞 (0)
上一篇 4天前
下一篇 4天前