全部產品
Search
文件中心

ApsaraDB RDS:ST_IsRandomSampled

更新時間:Feb 28, 2024

根據提供的屬性值和採樣率,返回布爾值表示該條記錄是否被採樣。該條記錄被採樣的機率為參數採樣率的值。

文法

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));