全部產品
Search
文件中心

Realtime Compute for Apache Flink:FIRST_VALUE

更新時間:Nov 22, 2024

FIRST_VALUE函數用於返回指定資料流的第1條非NULL資料。

文法

FIRST_VALUE( T value )
FIRST_VALUE( T value, BIGINT order )

入參

參數

資料類型

說明

value

任意參數類型

指定資料流。

說明
  • 如果輸入資料全為NULL,則返回NULL。

  • 輸入參數需要為相同的資料類型。

order

BIGINT

根據order判定FIRST_VALUE所在行,取order值最小的記錄作為FIRST_VALUE。

樣本

  • 測試表T1資料

    user_id(VARCHAR)

    product_id(BIGINT)

    create_time(TIMESTAMP)

    user_001

    1

    2023-02-15 10:40:56

    user_002

    2

    2023-02-15 11:40:56

    user_003

    3

    2023-02-15 12:40:56

    user_001

    4

    2023-02-15 13:40:55

    user_002

    5

    2023-02-15 14:40:56

    user_001

    1

    2023-02-15 15:40:56

    user_003

    4

    2023-02-15 16:40:56

  • 測試語句

    測試語句1

    根據使用者user_id分組,並按create_time排序,返回每組中的第一個商品prooduct_id。

    SELECT `user_id`, create_time, product_id, FIRST_VALUE(product_id) 
    OVER (PARTITION BY `user_id` ORDER BY create_time) AS first_product
    FROM T1;

    測試語句2

    根據商品product_id分組,按create_time判定使用者user_id順序,返回每個商品購買的第一個使用者use_id。

    SELECT product_id,FIRST_VALUE( `user_id`, UNIX_TIMESTAMP(create_time)) AS first_product
    FROM T1
    group by product_id;
  • 測試結果

    測試結果1

    user_id(VARCHAR)

    create_time(TIMESTAMP)

    product_id(BIGINT)

    first_product(BIGINT)

    user_001

    2023-02-15 10:40:56

    1

    1

    user_001

    2023-02-15 13:40:56

    4

    1

    user_001

    2023-02-15 15:40:56

    1

    1

    user_002

    2023-02-15 11:40:56

    2

    2

    user_002

    2023-02-15 14:40:56

    5

    2

    user_003

    2023-02-15 12:40:56

    3

    3

    user_003

    2023-02-15 16:40:56

    4

    3

    測試結果2

    product_id

    first_user

    1

    user_001

    2

    user_002

    3

    user_003

    4

    user_001

    5

    user_002