ST_IsRandomSampled

根据提供的属性值和采样率,返回布尔值表示该条记录是否被采样。该条记录被采样的概率为参数采样率的值。

语法

BOOLEAN ST_IsRandomSampled(RECORD tuple, INTEGER sample_rate)

参数

参数名称

描述

tuple

用来生成哈希值,并根据其值决定该条记录是否被采样。可使用ROW()将一条记录的不同属性值放到一起用来生成哈希值。属性的选取应尽量采用不重复且分布均匀的属性或属性集合。

sample_rate

采样率,决定一条记录被采样的概率。举例:如果sample_rate=50,一条记录有百分之五十的几率被选中采样,即ST_IsRandomSampled对百分之五十的数据会返回true。

描述

  • 若该条记录被采样返回true,否则返回false。

  • 被采样的概率由参数sample_rate决定。

  • 函数的返回值是基于参数tuple计算的哈希值和sample_rate计算得到。

  • 对一张表的所有数据调用该函数时,为使被采样的记录条数尽量接近sample_rate和表格记录总数的乘积,参数tuple的值应不重复。

示例

-- 一半的结果是true,另一半是false
SELECT ST_IsRandomSampled(ROW(id), 50) FROM table;

-- 对百分之八十的Geom,计算其面积
SELECT ST_Area(geom) FROM table WHERE ST_IsRandomSampled(ROW(geom), 80);

-- 随机选取一半的Geom,将其转换成MVTGeom
SELECT ST_AsMVTGeom(geom, ST_Transform(ST_TileEnvelope(0,0,0),4326)) FROM table 
WHERE ST_IsRandomSampled(ROW(geom), 50) AND geom&&ST_Transform(ST_TileEnvelope(0,0,0),4326));