全部產品
Search
文件中心

MaxCompute:SAMPLE

更新時間:Jun 08, 2024

基於所有讀入的column_name的值,系統根據xy的設定做採樣,並過濾掉不滿足採樣條件的行。

命令格式

boolean sample(<x>, <y>, [<column_name1>, <column_name2>[,...]])

參數說明

  • xyx必填。BIGINT類型,取值範圍為大0的整型常量。表示雜湊為x份,取第y份。

    y可選,省略時預設取第一份。如果省略參數中的y,則必須同時省略column_name

    xy為其它類型或小於等於0時拋異常,如果y大於x時也返回異常。xy任一輸入為NULL時,返回NULL。

  • column_name:可選。採樣的目標列。該參數省略時將根據xy的值隨機採樣。任意類型,列的值可以為NULL。不做隱式類型轉換。如果column_name為常量NULL,則返回報錯。

    說明
    • 為避免NULL值帶來的資料扭曲,對於column_name中為NULL的值,會在x份中進行均勻雜湊。如果不指定column_name,則可能出現資料不均勻的情況,建議指定column_name,以獲得較好的輸出結果。

    • 目前僅支援對如下資料類型的列做隨機採樣:bigint、datetime、boolean、double、string、binary、char、varchar。

傳回值說明

返回BOOLEAN類型。

使用樣本

例如存在表mf_sample,表資料如下:

+------------+------+------+------+------+
| id         | col1 | col2 | col3 | col4 |
+------------+------+------+------+------+
| 3          | eee  | rrr  | tttt | ggggg |
| 4          | yyy  | uuuu | iiiii | ccccccc |
| 1          | "abc" | "bcd" | "rthg" | "ahgjeog" |
| 2          | "a1bc" | "bc1d" | "rt1hg" | "ahgjeog" |
+------------+------+------+------+------+
  • 對錶資料做隨機雜湊分配為2份,取第1份:

    select * from mf_sample where sample(2,1);

    返回結果如下:

    +------------+------+------+------+------+
    | id         | col1 | col2 | col3 | col4 |
    +------------+------+------+------+------+
    | 3          | eee  | rrr  | tttt | ggggg |
    | 1          | "abc" | "bcd" | "rthg" | "ahgjeog" |
    +------------+------+------+------+------+
  • 根據id列對錶資料做隨機雜湊分配為2份,取第1份:

    select * from mf_sample where sample(2,1,id);

    返回結果如下:

    +------------+------+------+------+------+
    | id         | col1 | col2 | col3 | col4 |
    +------------+------+------+------+------+
    | 4          | yyy  | uuuu | iiiii | ccccccc |
    | 2          | "a1bc" | "bc1d" | "rt1hg" | "ahgjeog" |
    +------------+------+------+------+------+

相關函數

SAMPLE函數屬於其他函數,更多其他業務情境的函數請參見其他函數