Tüm Ürünler
Search
Belge Merkezi

Realtime Compute for Apache Flink:FIRST_VALUE

Son Güncelleme:Oct 04, 2026

Bir veri akışındaki ilk null olmayan değeri döndürür. FIRST_VALUE işlevini OVER yan tümcesinde bir pencere işlevi olarak veya GROUP BY ile birlikte bir toplama işlevi olarak kullanın.

Söz dizimi

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

Bağımsız değişkenler

Bağımsız değişken Veri türü Açıklama
value Herhangi biri Değerlendirilecek sütun veya ifade. Tüm girdi değerleri NULL ise NULL döndürür. Tüm bağımsız değişkenler aynı veri türünde olmalıdır.
order BIGINT Hangi kaydın ilk olarak kabul edileceğini belirleyen sayısal anahtar. En küçük order değerine sahip null olmayan kayıt döndürülür.

Örnekler

Aşağıdaki örnekler T1 tablosunu kullanır:

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

Her kullanıcının satın aldığı ilk ürünü bulma

Satırları user_id değerine göre gruplandırır, her grubu create_time değerine göre sıralar ve kullanıcı başına en eski satırın product_id değerini döndürür.

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;

Sonuç:

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

Her ürünü satın alan ilk kullanıcıyı bulma

Satırları product_id değerine göre gruplandırır ve ürün başına en eski satın alımın user_id değerini döndürmek için UNIX_TIMESTAMP(create_time) ifadesini sıralama anahtarı olarak kullanır.

SELECT product_id,
    FIRST_VALUE(`user_id`, UNIX_TIMESTAMP(create_time)) AS first_user
FROM T1
GROUP BY product_id;

Sonuç:

product_id first_user
1 user_001
2 user_002
3 user_003
4 user_001
5 user_002