SAMPLE 采样函数

SAMPLE 采样函数功能是处理大量数据分析的关键工具,主要用于快速缩减查询范围。

  1. 语法结构
  1. 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 子句等结合使用。

  • 应用示例

  1. SELECT SAMPLE(a, 100 ROWS) FROM t1; -- 返回 100 个随机样本
  2. SELECT SAMPLE(a, 0.2 PERCENT) FROM t1; -- 返回约 0.2% 的样本
  3. SELECT SAMPLE(a, 100 ROWS) FROM t1 WHERE a > 1; -- 先过滤后采样
  4. SELECT a, SAMPLE(b, 100 ROWS) FROM t1 GROUP BY a; -- 分组后采样