文档

采样函数

更新时间:

采样函数允许从一张表中选择随机样本作为输入,而非将整张表作为输入。

语法

SAMPLE [BLOCK] (sample_percent[, dummy_arg]) [SEED (seed_value)]

参数

参数

说明

BLOCK

采样的基本单位。

  • 如果没有BLOCK关键字,采样的基本单位为行。

  • 如果有BLOCK关键字,采样的基本单位为BLOCK,即一个BLOCK内的数据或者全部被选中,或者全部不被选中。

sample_percent

采样的百分比,其取值范围为[0, 100]。

dummy_arg

可选参数,为了兼容性而存在,目前对采样结果没有任何实际影响;若选择传入此参数,其值必须大于等于1。

seed_value

可选参数,表示采样时使用的随机种子,在其他参数及条件均相同的情况下,指定相同的随机种子可以保证两次采样得到相同的结果。

返回类型

返回的是原表经采样后的一个子集,其行数小于等于原表。

示例

  • 建表及插入数据。

    CREATE TABLE sample_table_test (id int, name text);
    INSERT INTO sample_table_test 
      SELECT i, repeat(i::text, 10) FROM generate_series(0, 10000) s(i);
  • 以BLOCK为基本单位,从表sample_table_test中采样10%的数据,传入了无用的第二个参数1,指定了随机种子10。

    SELECT COUNT(*) FROM sample_table_test SAMPLE BLOCK (10, 1) SEED (10);
    
    # 输出一行873,可复现
    说明

    sample_pecent指定的是每次采样的概率,并不意味着采样结果一定是该比例,但大致应在该比例附近。

  • 以行为基本单位,从表sample_table_test中采样5%的数据,没有指定随机种子。

    SELECT COUNT(*) FROM sample_table_test SAMPLE (5);
    
    # 输出一行485,没有指定随机种子,难复现
  • 本页导读 (0)
文档反馈