采样分析

最近更新时间:2024-08-15 15:04:21

我的收藏

操作场景

使用 统计分析 功能时,若原始日志条数非常多或统计分析语句(SQL)较为复杂,统计分析可能出现缓慢甚至超时的情况。此时可使用采样分析功能对原始日志进行采样,再进行统计分析。
日志服务通过随机采样的方式对原始日志进行采样,根据统计学相关原理,在合理的采样率及较大的样本数下,采样后的统计结果相比全量精确统计误差较低,能够满足大多数海量数据的统计分析需求。

采样方式

统计分析默认为“精确分析”,即不采样。需要采样时,可选择如下两类采样方式:
自动采样:根据原始日志条数多少自动决定采样率,使得样本数约为100万,以该样本进行统计分析。例如原始日志为100亿条时,使用自动采样获取100万样本,对应的采样率为1:10,000。
固定采样率采样:人工设定采样率,根据该采样率从原始日志中获取样本。例如原始日志为100亿条时,按照1:100,000采样,样本数为10万。采样率最大为1(即不采样),最小为1:1000,000。
无论采用哪种采样方式,在统计分析结果中均可查看最终实际的采样率。

估算真实值

采样分析结果能够很大程度上反应真实值,根据值的计算方式,可参见如下方法估算实际值:
平均值相关的计算方式:例如avggeometric_mean等,直接以样本统计结果代表真实值。
和值相关的计算方式:例如count(*)sumcount_if等,以样本统计结果除以采样率代表真实值。例如,按照1:10,000的采样率统计接口 pv(count(*)),样本统计结果为232,则真实值约为232 / (1:10000) = 2320000。
例如按照1:10,000采样时,检索分析语句为:
* | select count(*)/(1.0/10000) as pv,avg(response_time) as response_time_avg
pv 计算: count(*)为统计日志条数,属于和值计算,需以样本统计结果除以采样率代表真实值。其中,(1.0/10000)即为采样率,计算获得的 pv 为真实 pv 的估算值。
response_time_avg 计算:avg(response_time)为计算响应时间response_time的平均值,属于平均值计算,可直接作为真实 response_time_avg 的估算值。

采样分析准确度

统计学上使用置信水平和置信区间衡量采样结果的准确度,置信水平代表采样结果的可信度,置信区间代表指定置信水平下真实值所在的区间。例如某一样本统计结果置信水平为95%,置信区间为[212,478],则真实值有95%的概率位于212 - 478之间。
置信水平越高,置信区间越大。常用置信水平为95%(统计学中一般认为概率低于5%为小概率事件),对应的置信区间计算方式为:


其中,x̅ 为样本平均值,s 为样本标准差,n 为样本数。
例如使用自动采样进行统计分析:
* | select avg(response_time) as x,count(response_time) as n,stddev_samp(response_time) as s
样本统计分析结果为:
x:即样本平均值,544.4656932942215;
n:即样本数,995097;
s:即样本标准差,1382.618439585749。
则置信水平为95%时,avg(response_time)的真实值位于[541.75,547.18]内,而实际上该案例通过精确统计得到的avg(response_time)为545.16,估算值非常接近真实值。
说明:
以上为严格的采样准确度衡量方式,实际使用过程中,样本数大于1000时,采样获得的结果一般具备较高的准确度。
按维度统计分析时(即group by),由于样本会按指定维度拆分为多个组,并在每个组内分别计算统计值,此时单个组内的样本数将低于总样本数,会导致样本数较少的组的统计值准确度较低。 例如使用采样进行统计分析:
* | select avg(response_time) as response_time,count(*) as sampleCount,url group by url order by count(*) desc
样本统计分析结果为:
url
response_time
sampleCount
/user
45.23
7845
/user/list
78.45
6574
/user/login
45.85
5235
/user/logout
45.48
1245
/book/new
125.78
987
/book/list
17.23
658
/book/col
10.21
23
/order
12.13
2
其中,/book/col/order两个 url 的样本数过低,统计结果准确度较低,不具备参考性。如需对这两个 url 获取更加准确的统计结果,可提高整体的采样率,或单独对其进行统计分析。例如:
url:"/book/col" OR url:"/order" | select avg(response_time) as response_time,count(*) as sampleCount,url group by url order by count(*) desc

操作步骤

1. 登录 日志服务控制台
2. 在左侧导航栏中,单击检索分析,进入日志主题检索分析页面。
3. 在页面顶部,选择需要检索分析的日志主题。
4. 输入检索分析语句(需包含 SQL)后,在右侧检索分析按钮左侧设定是否需要采样分析以及对应的采样率。
交互模式:



语句模式:



5. 单击右侧

执行检索分析。完成检索分析后,图表顶部将显示本次分析采用的采样率。