更新时间:2024-07-24 GMT+08:00

TABLESAMPLE

有BERNOULLI和SYSTEM两种采样方法。

这两种采样方法都不允许限制结果集返回的行数。

BERNOULLI

每一行都将基于指定的采样率选择到采样表中。当使用Bernoulli方法对表进行采样时,将扫描表的所有物理块并跳过某些行(基于采样百分比和运行时计算的随机值之间的比较)。结果中包含一行的概率与任何其他行无关。这不会减少从磁盘读取采样表所需的时间。如果进一步处理采样输出,则可能会影响总查询时间。

SELECT * FROM users TABLESAMPLE BERNOULLI (50);

SYSTEM

此采样方法将表划分为数据的逻辑段,并按此粒度对表进行采样。此采样方法要么从特定数据段中选择所有行,要么跳过它(基于采样百分比与运行时计算的随机值之间的比较)。系统采样中行的选择依赖于使用的connector。例如,如果使用Hive数据源,这将取决于数据在HDFS上的布局。这种采样方法不能保证独立的抽样概率。

SELECT * FROM users TABLESAMPLE SYSTEM (75);