Tüm Ürünler
Search
Belge Merkezi

Realtime Compute for Apache Flink:MULTI_KEYVALUE

Son Güncelleme:Oct 04, 2026

MULTI_KEYVALUE, tek bir çağrıda anahtar-değer biçimli bir dizeden birden çok değeri ayıklayan bir tablo işlevidir. Dizeyi split1 ile belirtilen sınırlayıcıyı kullanarak anahtar-değer çiftlerine böler, ardından her çifti split2 ile belirtilen sınırlayıcıyı kullanarak bir anahtara ve bir değere ayırır ve istenen anahtarların değerlerini döndürür.

Ververica Runtime (VVR) 3.0.0 veya sonraki sürümlere sahip Realtime Compute for Apache Flink tarafından desteklenir.

Söz dizimi

MULTI_KEYVALUE(VARCHAR str, VARCHAR split1, VARCHAR split2, VARCHAR key_name1, VARCHAR key_name2, ...)

MULTI_KEYVALUE bir tablo işlevi olduğundan, bunu bir lateral table birleştirme işlemiyle çağırın:

SELECT c1, c2
FROM T1, lateral table(MULTI_KEYVALUE(str, split1, split2, key1, key2))
as T(c1, c2);

Parametreler

Parametre Tür Açıklama
str VARCHAR Ayrıştırılacak dize.
split1 VARCHAR Anahtar-değer çifti sınırlayıcısı. NULL ise boşluk kullanılır. Değer bir karakterden uzunsa her karakter bağımsız olarak geçerli bir sınırlayıcı olarak kabul edilir.
split2 VARCHAR Anahtar-değer sınırlayıcısı. NULL ise boşluk kullanılır. Değer bir karakterden uzunsa her karakter bağımsız olarak geçerli bir sınırlayıcı olarak kabul edilir.
key_name1, key_name2, ... VARCHAR Değerleri döndürülecek anahtarlar. Gerektiği kadar anahtar bağımsız değişkeni ekleyin.

Ne zaman KEYVALUE kullanılmalı?

Uyarı

VVR 8.0.7 ve önceki sürümlerde aşağıdaki durumlardan herhangi biri söz konusuysa MULTI_KEYVALUE yerine KEYVALUE skaler işlevini kullanın:

  • split1, split2 ve her bir key_name bağımsız değişkeni için tüm değerler sabit dizelerdir.

  • Belirli bir motor sürümünü çalıştıran bir ad alanı içinde, MULTI_KEYVALUE farklı split1 ve split2 sınırlayıcılarıyla birden çok kez çağrılır (aynı dağıtım içinde veya birden çok dağıtım arasında). KEYVALUE tekrarlanan çağrılarda aynı alandan farklı anahtar adlarını ayrıştırdığında Flink, ara ayrıştırma sonuçlarını yeniden kullanır ve ikili bir ayrıştırma mekanizması uygular; bu da genel işleme verimliliğini artırır. KEYVALUE bir skaler işlev olduğundan her anahtar için bir kez çağırın.

Örnek

Temel kullanım

Çift sınırlayıcısı olarak ; ve anahtar-değer sınırlayıcısı olarak = kullanarak k1=v1;k2=v2 ifadesini ayrıştırın:

-- Input: str = 'k1=v1;k2=v2', split1 = ';', split2 = '='
SELECT c1, c2
FROM T1, lateral table(MULTI_KEYVALUE(str, split1, split2, 'k1', 'k2'))
as T(c1, c2);
-- Output: c1 = 'v1', c2 = 'v2'

Davranış referansı

Aşağıdaki tabloda MULTI_KEYVALUE işlevinin çeşitli sınırlayıcı kombinasyonlarını ve uç durumları nasıl ele aldığı gösterilmektedir. Tüm satırlar, yukarıda gösterilen sorgunun T1 tablosuna uygulanmasıyla elde edilmiştir.

Test verileri (T1 tablosu)

str split1 split2 key1 key2
k1=v1;k2=v2 ; = k1 k2
NULL ; = k1 k2
k1:v1;k2:v2 ; : k1 k3
k1:v1;k2:v2 ; = k1 k2
k1:v1;k2:v2 , : k1 k2
k1:v1;k2=v2 ; : k1 k2
k1:v1abck2:v2 abc : k1 k2
k1:v1;k2=v2 ; := k1 k2
k1:v1 k2:v2 NULL : k1 k2
k1 v1;k2 v2 ; NULL k1 k2

Test ifadesi

SELECT c1, c2
FROM T1, lateral table(MULTI_KEYVALUE(str, split1, split2, key1, key2))
as T(c1, c2);

Sonuçlar

c1 c2
v1 v2
NULL NULL
v1 NULL
NULL NULL
NULL NULL
v1 NULL
v1 v2
v1 v2
v1 v2
v1 v2

Sonuçlardan çıkarılan temel gözlemler:

  • Satır: str değeri NULL olduğundan tüm çıktı değerleri NULL olur.

  • Satır: k3 anahtarı dizede bulunmadığından c2 değeri NULL olur.

  • Satır: Gerçek sınırlayıcı : iken split2 değeri = olduğundan eşleşme sağlanamaz ve her iki çıktı da NULL olur.

  • Satır: Gerçek çift sınırlayıcısı ; iken split1 değeri , olduğundan eşleşme sağlanamaz ve her iki çıktı da NULL olur.

  • Satır: split2 = ':' değeri k1:v1 ifadesiyle eşleşir ancak k2=v2 ifadesiyle eşleşmez; bu durumda c1 = 'v1' ve c2 = NULL olur.

  • Satır: split1 = 'abc' değeri bir karakterden uzun olduğu için a, b ve c karakterlerinin her biri bağımsız sınırlayıcı olarak kabul edilir; bu sayede k1:v1abck2:v2 ifadesi doğru şekilde bölünür.

  • Satır: split2 = ':=' değeri bir karakterden uzun olduğu için hem : hem de = geçerli anahtar-değer sınırlayıcıları olarak kabul edilir; bu sayede hem k1:v1 hem de k2=v2 ifadeleriyle eşleşme sağlanır.

  • 9-10. Satırlar: NULL sınırlayıcılar varsayılan olarak boşluk karakterine dönüşür.