采樣函數允許從一張表中選擇隨機樣本作為輸入,而非將整張表作為輸入。
語法
SAMPLE [BLOCK] (sample_percent[, dummy_arg]) [SEED (seed_value)]
參數
參數 | 說明 |
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,沒有指定隨機種子,難復現
文檔內容是否對您有幫助?