SAMPLE 采样函数
SAMPLE 采样函数功能是处理大量数据分析的关键工具,主要用于快速缩减查询范围。
- 语法结构
SELECT SAMPLE(<column_list>, <N ROWS>/<K PERCENT>) FROM <table> [WHERE ...] [GROUP BY ...] [ORDER BY ...] [LIMIT ...] [OFFSET ...]
<column_list>
: 选择的列名列表。<N ROWS>/<K PERCENT>
: 指定返回的样本数量(N 行)或百分比(K%)。功能特点
SAMPLE 函数会在表过滤再执行采样。
返回表中 N 个随机样本,或 K%的随机样本。
- 当指定 N 行时,N 为 1-1000 的正整数。
- 当指定 K%时,K 的取值范围为 0.01-99.99 的,代表每行被选中的概率,结果每次可能不同,且行数不固定。比如表有 10000 行,执行 SAMPLE(a, 50 PERCENT); 由于每行都是有 50% 的概率被选中,类似于掷了 1 万次硬币,正反面的概率每次都是 50%,但是最终的结果可能是 350 次正面,650 次反面。
- 支持多列采样,如 SELECT SAMPLE(a,b,c, 100 ROWS) FROM t1;。
可与 WHERE 子句、GROUP BY 子句等结合使用。
应用示例
SELECT SAMPLE(a, 100 ROWS) FROM t1; -- 返回 100 个随机样本
SELECT SAMPLE(a, 0.2 PERCENT) FROM t1; -- 返回约 0.2% 的样本
SELECT SAMPLE(a, 100 ROWS) FROM t1 WHERE a > 1; -- 先过滤后采样
SELECT a, SAMPLE(b, 100 ROWS) FROM t1 GROUP BY a; -- 分组后采样