VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

SAMPLE抽样采集语法

功能描述

Vastbase支持在SELECT语句中使用TABLESAMPLE子句,允许从表中的随机数据样本中进行选择,而不是从整个表中选择。

注意事项

无。

语法格式

TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ];

参数说明

  • sampling_method

    采样方法。

    • BERNOULLI:随机抽取表的数据行数据,抽样级别为数据行级别。使用全表扫描的采样方法,按采样参数百分比返回。相比于SYSTEM 具有更好的随机性,但是性能要差很多。

    • SYSTEM:块级采样方法,随机抽取表的数据块上的数据,按采样参数百分比返回(被采样到的数据块内的所有记录都将被返回)。因此离散度不如BERNOULLI,但是效率高很多。

    • SYSTEM_ROWS:tsm_system_rows模块提供了表采样方法SYSTEM_ROWS,它可以用SELECT命令的TABLESAMPLE子句中。这种表采样方法接受一个整数参数,它是要读取的最大行数。得到的采样将总是包含正好这么多行,除非该表中没有足够的行,在那种情况下整个表都会被选择出来。和内建的SYSTEM采样方法一样, SYSTEM_ROWS执行块级别的采样,所以采样不是完全随机的,而是服从于聚簇效果,特别是只要求少量行时。

    SYSTEM_ROWS不支持 REPEATABLE子句。

  • argument

    要采样的表的百分数,表示为一个0到100之间的百分数。取这个参数可以是任意的实数值表达式(除了BERNOULLI以及SYSTEM采样,其他的采样方法可能接受更多或者不同的参数)。

  • REPEATABLE(seed)

    采样随机种子,如果种子一样多,那么多次采样得到的结果是一样的。如果忽略REPEATABLE则每次都是使用新的seed值,得到不同的结果。seed取值为任何非空浮点值。

示例

1、创建测试表并插入数据。

create table test_sample (id int4,message text);
insert into test_sample(id,message) select n,md5(random()::text) from generate_series(1,1000000) n;

2、使用SYSTEM采样方法进行选择。

select * from test_sample tablesample system(0.1);

返回结果如下,则表示采样成功(以下仅展示部分查询结果):

   id   |             message
--------+----------------------------------
 108681 | de5d879fcd627af8a0fae0d4e8c99952
 108682 | 348e18ff6e162f774569eb0107882023
 108683 | 67520adbc0d5b6e0a98238559740abf0
 108684 | 9046cc4117baba71ee616de9e389b065
 108685 | 8300ccfb5072ae931be4d2eb82d8048a
 108686 | 08189d0630f699d10f7cf62bec2837a8
 108687 | 9035049b7ae8d70fbde7169b95ba91ec
 108688 | a8d7edb1dd058b2fc2a06d34dc036721
 108689 | 0a08c43a8d052f9e4cb6d66192b5aca5
 108690 | 3e0b3d680e2c78382210170c35d97da4
 108691 | 82b8edbaddd56a3533c166bf6110f11c
 108692 | 2174f782ee8087a4a99744581e1c90df
 108693 | 83682dfb7cb7ab64af11959226996b9e
 108694 | 82cac0957b88e4851d5503dcf2ddedb9
 108695 | 98d40852958d68f8dd469259a07953d3
 108696 | 2c3df1ff75d2bf40cf2ef130427f0099
 108697 | 306165368949c2add290394af980b20c
 108698 | 985a277365a31ae767a53af700220ff6
 108699 | 450ad7e79ded9887bf77adad59d1e30d
 108700 | 224dc5087e8238f885d68d7edb8c0a1c
 108701 | 0ce5ebfab7b11070689d31b1808038c1
 108702 | 5ac2d7bedfe0eb9026916c13e4b32b53
 108703 | 4fbe39926d7177b4ce1a418cdc1b3b1c
 108704 | 9305630170cd961cce5d391dcdbc47f2
 108705 | d0cfef23d155a8644c4f36fd235b60d2
 108706 | 1fa533a6e707a7aae2957ef9ad65414c
 108707 | 532bacb8035fbcd5e15ddd05180ad4a0
 108708 | ed7a3959905c1a5654dc00fc0456c81f
 108709 | e42540d240bb61539eaea8359943eee1
 108710 | 63f390eb4c546b8eb616bc36f8d184ab
 108711 | 01282b0d264b64711dc75a9e26f2cfa6
 108712 | 2e62cd74be4073a5b8c1c5d5dbd613f1
 108713 | 9a46e4b8b64c3d25b9a8b6c64e7f6931
 108714 | c94a77af8e839dd0237560bb4b9e74ba
 108715 | baa94146612c4723c4f8d10b95cef519
 108716 | 5142bc434e8795a83fef656392cbb67f

3、使用SYSTEM采样方法进行选择。

 select ctid,* from test_sample tablesample BERNOULLI(0.05);

返回结果如下,则表示采样成功过(以下仅展示部分查询结果):

   ctid    |   id   |             message
------------+--------+----------------------------------
 (15,95)    |   1520 | fcf619fb848b2bbf4ef634f6e2917e53
 (19,79)    |   1884 | 9ad257e0a82ddd468a8b06d207b1066f
 (21,7)     |   2002 | 9c06503b99a9aa92148c3f0237de5384
 (96,11)    |   9131 | c27b199a6817f30215200af228e883de
 (106,40)   |  10110 | 194d225196af3794ffe57aabd67efc4f
 (121,16)   |  11511 | 7870876d5e85705f791714927e27fb2b
 (162,5)    |  15395 | 6dd96383b1ae18242073fbdd77b67d97
 (165,22)   |  15697 | 47a3ef5636891bff037b5d4d0daa86e1
 (178,83)   |  16993 | 6e3b6184e6435b39ad5c4be20e65c5d8
 (182,6)    |  17296 | 39f018ccf4645f4a173f3793b0219fe2
 (193,62)   |  18397 | af6316ee9907946673972245a94e4795
 (210,79)   |  20029 | 2f239bc81e70858a028efffac0875880
 (238,10)   |  22620 | f6f6d91b804ad3314d6dace36a0af3a5
 (238,52)   |  22662 | f305a3d35adf5f74d5e4fe8a5e8179cf
 (315,44)   |  29969 | 4793f9f7eae1f495231cc2c0a9589fd7
 (318,50)   |  30260 | 8f7bac87228b2ee35cb85715e24ed04c
 (341,13)   |  32408 | 2d9db260cf7b18fd69e991ed50be0695
 (360,28)   |  34228 | 7f405f35572d3d6b58c1ab27bcf30a87
 (383,50)   |  36435 | 38f3fd086c9a3ef3aa3e50e1b6282fdc
 (447,48)   |  42513 | 7de6905b59fcc6ee21e379e168d7c30c
 (447,71)   |  42536 | 69be111ed69babbafb7e1e8519be80b4
 (466,38)   |  44308 | b96a90360c187affd9ecde654490ba04
 (481,50)   |  45745 | 98e2ede63ff315e140248f72a2c9e896
 (484,29)   |  46009 | 16bd12b35fc82f98fd491757e3628377
 (484,62)   |  46042 | e151c49d5ef75098e429da334d89fbf8
 (495,3)    |  47028 | e73a88f5c4e20e88d0857b190ca1d6fb
 (503,6)    |  47791 | f083ec2b5b886e1bf2753e3861dc3aa0
 (514,71)   |  48901 | c2e1bdbaf0b972d7fe06e2fc8eb561d9
 (540,70)   |  51370 | 88fb8fb941646e9388af6af41bc9a8af
 (563,14)   |  53499 | 1ae6a5b32b5e5e2e831f6d0b18f6f507
 (576,63)   |  54783 | 0e311376ccc596be11716d237f3c677b
 (590,54)   |  56104 | b193f27a18bda8b53e1fac3c00a760af
 (592,39)   |  56279 | 3f58a044567207fd50f10c9632315248
 (617,13)   |  58628 | a677c86b9973003543618f1554250492
 (623,27)   |  59212 | 37a23fa568fc89175cc51933e541448c
 (634,95)   |  60325 | 38af9a0188c3bf09445b3b6ecdf86c28