全部产品
Search
文档中心

实时计算Flink版:FIRST_VALUE

更新时间:Nov 21, 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