全部產品
Search
文件中心

MaxCompute:WIDTH_BUCKET

更新時間:Jun 19, 2024

設定分組範圍的最小值、最大值和分組個數,構建指定個數的大小相同的分組,返回指定欄位值落入的分組編號。此函數為MaxCompute 2.0擴充函數。

注意事項

支援的資料類型為BIGINT、INT、FLOAT、DOUBLE、DECIMAL以及資料類型2.0的DECIMAL(precision,scale),詳情請參見2.0資料類型版本

命令格式

width_bucket(numeric <expr>, numeric <min_value>, numeric <max_value>, int <num_buckets>)

參數說明

  • expr:必填。需要判斷分組編號的欄位。

  • min_value:必填。分組範圍最小值。

  • max_value:必填。分組範圍最大值,最大值必須比最小值大。

  • num_buckets:必填。分組個數,必須大於0。

傳回值說明

傳回值為BIGINT類型,範圍為0到設定的分組個數+1。返回規則如下:

  • expr值小於min_value時,返回0。

  • expr大於max_value時,返回設定的分組個數+1。

  • expr值為NULL時,分組編號傳回值也為NULL。其他情況返回欄位值落入的分組編號。欄位值對應的分組編號取值規則為floor( num_buckets * (expr - min_value)/(max_value - min_value) + 1)

  • min_valuemax_valuenum_buckets值為NULL時,返回NULL。

使用樣本

  • 樣本1:入參無NULL。命令樣本如下。

    select key,value,width_bucket(value,100,500,5) as value_group
    from values 
        (1,99),
        (2,100),
        (3,199),
        (4,200),
        (5,499),
        (6,500),
        (7,501),
        (8,NULL)
    as t(key,value);

    返回結果如下。

    +------+-------+-------------+
    | key  | value | value_group |
    +------+-------+-------------+
    | 1    | 99    | 0           |
    | 2    | 100   | 1           |
    | 3    | 199   | 2           |
    | 4    | 200   | 2           |
    | 5    | 499   | 5           |
    | 6    | 500   | 6           |
    | 7    | 501   | 6           |
    | 8    | NULL  | NULL        |
    +------+-------+-------------+
  • 樣本2:入參存在NULL。命令樣本如下。

    select key,value,width_bucket(value,100,500,null) as value_group
    from values
        (1,99),
        (2,100),
        (3,199),
        (4,200),
        (5,499),
        (6,500),
        (7,501),
        (8,NULL)
    as t(key,value);

    返回結果如下。

    +------+-------+-------------+
    | key  | value | value_group |
    +------+-------+-------------+
    | 1    | 99    | NULL        |
    | 2    | 100   | NULL        |
    | 3    | 199   | NULL        |
    | 4    | 200   | NULL        |
    | 5    | 499   | NULL        |
    | 6    | 500   | NULL        |
    | 7    | 501   | NULL        |
    | 8    | NULL  | NULL        |
    +------+-------+-------------+

相關函數

WIDTH_BUCKET函數屬於數學函數,更多資料計算、資料轉換的相關函數請參見數學函數