Bu konu, dizi işlevlerinin ve işleçlerinin temel sözdizimini ve örneklerini açıklar.
Log Service aşağıdaki dizi işlevlerini ve işleçlerini destekler.
Analitik deyimlerinde dizeler kullanmak istiyorsanız dizeleri tek tırnak içine ('') almalısınız. Tek tırnak içine alınmamış veya çift tırnak ("") içine alınmış dizeler alan adlarını veya sütun adlarını gösterir. Örneğin,
'status'
status dizesini gösterirken
status
veya
"status"
status günlük alanını gösterir.
|
İşlev adı |
Sözdizimi |
Açıklama |
SQL |
SPL |
|
[x] |
Bir dizideki x dizinindeki öğeyi döndürür. Bu, |
√ |
× |
|
|
array_agg(x) |
x içindeki tüm değerlerden oluşan bir dizi döndürür. |
√ |
× |
|
|
array_distinct(x) |
Bir diziden yinelenen öğeleri kaldırır. |
√ |
√ |
|
|
array_except(x, y) |
İki dizi arasındaki farkı döndürür. |
√ |
√ |
|
|
array_intersect(x, y) |
İki dizinin kesişimini döndürür. |
√ |
√ |
|
|
array_join(x, sınırlandırıcı) |
Belirtilen sınırlandırıcıyı kullanarak bir dizinin öğelerini bir dizede birleştirir. Null öğeler yok sayılır. Önemli
array_join işlevi en fazla 1 KB'lık bir sonuç döndürür. Sınırı aşan veriler kırpılır. |
√ |
√ |
|
|
array_join(x, sınırlandırıcı, null_değiştirme) |
Belirtilen sınırlandırıcıyı kullanarak bir dizinin öğelerini bir dizede birleştirir. Null öğeler null_değiştirme değeriyle değiştirilir. Önemli
array_join işlevi en fazla 1 KB'lık bir sonuç döndürür. Sınırı aşan veriler kırpılır. |
√ |
√ |
|
|
array_max(x) |
Bir dizideki maksimum değeri döndürür. |
√ |
√ |
|
|
array_min(x) |
Bir dizideki minimum değeri döndürür. |
√ |
√ |
|
|
array_position(x, öğe) |
Belirtilen bir öğenin 1 tabanlı dizinini döndürür. Öğe mevcut değilse 0 döndürür. |
√ |
√ |
|
|
array_remove(x, öğe) |
Belirtilen bir öğeyi bir diziden kaldırır. |
√ |
√ |
|
|
array_sort(x) |
Bir dizinin öğelerini artan düzende sıralar. Null öğeler sona yerleştirilir. |
√ |
√ |
|
|
array_transpose(x) |
Satırları ve sütunları değiştirerek iki boyutlu bir diziyi (dizi dizisi) transpoze eder. |
√ |
× |
|
|
array_union(x, y) |
İki dizinin birleşimini döndürür. |
√ |
× |
|
|
cardinality(x) |
Bir dizideki öğe sayısını döndürür. |
√ |
√ |
|
|
concat(x, y…) |
Birden çok diziyi tek bir dizide birleştirir. |
√ |
× |
|
|
contains(x, öğe) |
Dizi belirtilen öğeyi içeriyorsa |
√ |
× |
|
|
element_at(x, y) |
Bir dizideki y dizinindeki öğeyi döndürür. |
√ |
× |
|
|
filter(x, lambda_ifadesi) |
Bir lambda ifadesi kullanarak bir diziyi filtreler ve yalnızca ifadeyi karşılayan öğeleri döndürür. |
√ |
√ |
|
|
flatten(x) |
İki boyutlu bir diziyi tek boyutlu bir diziye dönüştürür. |
√ |
× |
|
|
reduce(x, lambda_ifadesi) |
Öğelerine bir lambda ifadesi uygulayarak bir diziyi tek bir değere indirger. |
√ |
√ |
|
|
reverse(x) |
Bir dizideki öğelerin sırasını tersine çevirir. |
√ |
√ |
|
|
sequence(x, y) |
Belirtilen bir aralıkta ardışık, artan değerlerden oluşan bir dizi döndürür. Varsayılan adım 1'dir. |
√ |
√ |
|
|
sequence(x, y, adım) |
Özel bir adımla belirtilen bir aralıkta ardışık, artan değerlerden oluşan bir dizi döndürür. |
√ |
√ |
|
|
shuffle(x) |
Bir dizinin öğelerini karıştırır. |
√ |
√ |
|
|
slice(x, başlangıç, uzunluk) |
Bir dizinin alt kümesini döndürür. |
√ |
√ |
|
|
transform(x, lambda_ifadesi) |
Bir lambda ifadesi kullanarak bir dizideki her öğeyi dönüştürür. |
√ |
√ |
|
|
zip(x, y...) |
Birden çok diziyi tek bir iki boyutlu dizide birleştirir. Giriş dizilerinden aynı dizindeki öğeler yeni bir alt dizi oluşturur. |
√ |
√ |
|
|
zip_with(x, y, lambda_ifadesi) |
Karşılık gelen her öğe çiftine bir lambda ifadesi uygulayarak iki diziyi tek bir dizide birleştirir. |
√ |
× |
Alt simge işleci
Alt simge işleci, bir dizideki x dizinindeki öğeyi döndürür. element_at işlevine eşdeğerdir.
Syntax
[x]
Parameters
|
|
|
|
|
|
Return value type
Dönüş değeri, dizi öğeleriyle aynı veri türüne sahiptir.
Examples
Bu örnek, number alanından ilk öğeyi döndürür.
-
Örnek alan
number:[49,50,45,47,50] -
Sorgu deyimi
* | SELECT cast(json_parse(number) as array(bigint)) [1] Sorgu
49değerini döndürür.
Array_agg işlevi
array_agg işlevi, x içindeki tüm değerlerden oluşan bir dizi döndürür.
Syntax
array_agg (x)
Parameters
|
|
|
|
|
|
Return value type
dizi
Examples
status alanının değerlerini bir dizi olarak döndürür.
-
Sorgu deyimi
* | SELECT array_agg(status) AS array Sorgu sonuçları: array alanı HTTP durum kodlarından (örneğin 200, 202, 204, 303, 304, 401, 402 ve 501) oluşan bir dizi içerir.
Array_distinct işlevi
Bir diziden yinelenen öğeleri kaldırır.
Syntax
array_distinct(x)
Parameters
|
|
|
|
|
|
Return value type
dizi
Examples
number alanından yinelenen öğeleri kaldırır.
-
Örnek alan
number:[49,50,45,47,50] -
Sorgu deyimi
*| SELECT array_distinct(cast(json_parse(number) as array(bigint))) Sorgu sonucu
[49,50,45,47]şeklindedir. Orijinal diziden yinelenen 50 öğesi kaldırılmıştır.
array_except işlevi
array_except işlevi iki dizi arasındaki farkı döndürür.
Syntax
array_except(x, y)
Parameters
|
|
|
|
|
|
|
|
|
Return value type
dizi
Examples
[1,2,3,4,5] ve [1,3,5,7] dizileri arasındaki farkı hesaplayın.
-
Sorgu deyimi
* | SELECT array_except(array[1,2,3,4,5],array[1,3,5,7]) Sorgu
[2,4]değerini döndürür.
array_intersect işlevi
İki dizinin kesişimini hesaplar.
Syntax
array_intersect(x, y)
Parameters
|
|
|
|
|
|
|
|
|
Return value type
dizi
Examples
[1,2,3,4,5] ve [1,3,5,7] dizilerinin kesişimini hesaplar.
-
Sorgu ve analiz deyimi
* | SELECT array_intersect(array[1,2,3,4,5],array[1,3,5,7]) Sorgu ve analiz sonucu
[1,3,5]şeklindedir.
array_join işlevi
Belirtilen bir sınırlandırıcı kullanarak dizi öğelerini bir dizede birleştirir.
Syntax
-
Bir sınırlandırıcı kullanarak dizi öğelerini bir dizede birleştirir. Null öğeler yok sayılır.
array_join(x, delimiter) -
Bir sınırlandırıcı kullanarak dizi öğelerini bir dizede birleştirir. Null öğeleri null_replacement ile değiştirir.
array_join(x, delimiter,null_replacement)
Parameters
|
|
|
|
|
|
|
|
|
|
|
|
Return value type
varchar.
Examples
Bu örnekte, [null, 'Log', 'Service'] dizisinin öğeleri boşluk sınırlandırıcısı kullanılarak bir dizede birleştirilir. Null öğe 'Alicloud' ile değiştirilir.
-
Sorgu
* | SELECT array_join(array[null,'Log','Service'],' ','Alicloud') Sonuçlar: _col0 sütununun değeri
Alicloud Log Serviceşeklindedir.
Array_max işlevi
Bir dizideki maksimum değeri döndürür.
Syntax
array_max(x)
Parameters
|
Parametre |
Açıklama |
|
x |
Giriş bir dizi olmalıdır. Önemli
Dizi bir null öğe içeriyorsa işlev null döndürür. |
Return value type
Döndürülen değer, dizi öğeleriyle aynı veri türüne sahiptir.
Examples
Bu örnek, bir sayı dizisindeki maksimum değeri bulur.
-
Örnek alan
number:[49,50,45,47,50] -
Sorgu deyimi
*| SELECT array_max(try_cast(json_parse(number) as array(bigint))) AS max_number Sorgu sonuçları: max_number değeri 50'dir.
Array_min işlevi
Bir dizideki minimum değeri döndürür.
Syntax
array_min(x)
Parameters
|
Parametre |
Açıklama |
|
x |
Giriş dizisi. Önemli
Dizi bir null öğe içeriyorsa işlev null döndürür. |
Return value type
Dönüş değeri, dizi öğeleriyle aynı veri türüne sahiptir.
Examples
Bir sayı dizisindeki minimum değeri bulun.
-
Örnek alan
number:[49,50,45,47,50] -
Sorgu deyimi
*| SELECT array_min(try_cast(json_parse(number) as array(bigint))) AS min_number Sorgu 45 değerini döndürür.
Array_position işlevi
array_position işlevi, bir dizideki bir öğenin 1 tabanlı dizinini döndürür. Öğe bulunamazsa 0 döndürür.
Syntax
array_position(x, element)
Parameters
|
Parametre |
Açıklama |
|
x |
Aranacak dizi. |
|
element |
Dizide bulunacak öğe. Not
Bulunacak öğe null ise işlev null döndürür. |
Return value type
Bir bigint değeri döndürür.
Examples
[49,45,47] dizisindeki 45'in dizinini bulur.
-
Sorgu ve analiz deyimi
* | SELECT array_position(array[49,45,47],45) Sonuç
2şeklindedir; bu,45öğesinin dizideki dizininin2olduğunu gösterir.
array_remove işlevi
array_remove işlevi, bir diziden belirtilen bir öğenin tüm oluşumlarını kaldırır.
Syntax
array_remove(x, element)
Parameters
|
Parameter |
Description |
|
x |
Giriş dizisi. |
|
element |
Diziden kaldırılacak öğe. Not
element null ise işlev null döndürür. |
Return value type
Bir dizi döndürür.
Examples
[49,45,47] dizisinden 45 değerini kaldırır.
-
Sorgu ve analiz deyimi
* | SELECT array_remove(array[49,45,47],45) Sonuç
[49,47]şeklindedir.
array_sort işlevi
array_sort işlevi, bir dizinin öğelerini artan düzende sıralar ve null öğeleri sona yerleştirir.
Syntax
array_sort(x)
Parameters
|
|
|
|
|
|
Return value type
Bir dizi döndürür.
Examples
['b', 'd', null, 'c', 'a'] dizisini artan düzende sıralayın.
-
Sorgu deyimi
* | SELECT array_sort(array['b','d',null,'c','a']) Sonuç
["a","b","c","d",null]şeklindedir. Öğeler alfabetik olarak artan düzende sıralanır ve null değeri en sona yerleştirilir.
array_transpose işlevi
array_transpose işlevi iki boyutlu bir diziyi (matris) transpoze eder. İç dizilerde aynı indekse sahip öğeleri gruplayarak yeni bir iki boyutlu dizi oluşturur.
Syntax
array_transpose(x)
Parameters
|
|
|
|
|
|
Return value type
array(double)
Examples
İşlev, her iç dizideki aynı indeksteki öğeleri gruplayarak yeni iç diziler oluşturur. Örneğin, [0,1,2,3], [10,19,18,17] ve [9,8,7] dizilerinden ilk öğeleri (0, 10 ve 9) alır ve bunları [0.0,10.0,9.0] şeklinde yeni bir iç dizide gruplar.
-
Sorgu ve analiz deyimi
* | SELECT array_transpose(array[array[0,1,2,3],array[10,19,18,17],array[9,8,7]]) Sorgu ve analiz sonuçları: _col0 sütunundaki değer
[[0.0,10.0,9.0],[1.0,19.0,8.0],[2.0,18.0,7.0],[3.0,17.0]]şeklindedir.
array_union işlevi
Yinelenen öğeler olmadan, iki dizinin birleşimindeki öğeleri içeren bir dizi döndürür.
Syntax
array_union(x, y)
Parameters
|
|
|
|
|
|
|
|
|
Return value type
dizi
Examples
Bu örnek, [1,2,3,4,5] ve [1,3,5,7] dizilerinin birleşimini hesaplar.
-
Sorgu deyimi
* | SELECT array_union(array[1,2,3,4,5],array[1,3,5,7]) Sorgu
[1,2,3,4,5,7]değerini döndürür.
Cardinality işlevi
Bir dizideki öğe sayısını döndürür.
Syntax
cardinality(x)
Parameters
|
|
|
|
|
|
Return value type
Bir bigint değeri döndürür.
Examples
Bu örnek, number alanındaki öğe sayısını sayar.
-
Örnek alan
number:[49,50,45,47,50] -
Sorgu deyimi
*| SELECT cardinality(cast(json_parse(number) as array(bigint))) Dizi 5 öğe içerdiğinden sorgu
5değerini döndürür.
concat işlevi
Birden çok diziyi tek bir dizide birleştirir.
Syntax
concat(x, y…)
Parameters
|
|
|
|
|
|
|
|
|
Return value type
dizi
Examples
['red','blue'] ve ['yellow','green'] dizilerini birleştirin.
-
Sorgu deyimi
* | SELECT concat(array['red','blue'],array['yellow','green']) Sorgu
["red","blue","yellow","green"]değerini döndürür.
contains işlevi
Bir dizinin belirtilen bir öğeyi içerip içermediğini kontrol eder. Bulunursa true döndürür.
Syntax
contains(x, element)
Parameters
|
|
|
|
|
|
|
|
|
Return value type
boolean
Examples
region alanının 'cn-beijing' değerini içerip içermediğini kontrol eder.
-
Örnek alan
region:["cn-hangzhou","cn-shanghai","cn-beijing"] -
Sorgu deyimi
*| SELECT contains(cast(json_parse(region) as array(varchar)),'cn-beijing') Sorgu, değeri
trueolan_col0adlı bir sütun döndürür; bu,regiondizisinincn-beijingdeğerini içerdiğini gösterir.
element_at işlevi
Bir dizide y indeksindeki öğeyi döndürür.
Syntax
element_at(x, y)
Parameters
|
|
|
|
|
|
|
|
|
Return value type
Dönüş değeri, dizideki öğelerle aynı veri türüne sahiptir.
Examples
Bu örnek, number alanında JSON dizesi olarak depolanan bir diziden ikinci öğeyi alır.
-
Örnek alan
number:[49,50,45,47,50] -
Sorgu ve analiz deyimi
* | SELECT element_at(cast(json_parse(number) AS array(varchar)), 2) Sorgu, değeri
50olan_col0adlı bir sütun döndürür.
Filter işlevi
filter işlevi, bir lambda ifadesine göre bir diziyi filtreler ve ifadeyi true olarak değerlendiren öğeleri içeren yeni bir dizi döndürür.
Syntax
filter(x, lambda_expression)
Parameters
|
|
|
|
|
|
|
|
|
Return value type
Bir dizi döndürür.
Examples
[5,-6,null,7] dizisinden 0'dan büyük olan öğeleri döndürür. Lambda ifadesi x -> x > 0 şeklindedir.
-
Sorgu deyimi
* | SELECT filter(array[5,-6,null,7],x -> x > 0) Sorgu
[5,7]değerini döndürür.
Flatten işlevi
İki boyutlu bir diziyi tek boyutlu bir diziye dönüştürür.
Syntax
flatten(x)
Parameters
|
|
|
|
|
|
Return value type
Tek boyutlu bir dizi döndürür.
Examples
Bu örnek, iki boyutlu bir diziyi tek boyutlu bir diziye dönüştürür.
-
Sorgu deyimi
* | SELECT flatten(array[array[1,2,3,4],array[5,2,2,4]]) Sorgu ve analiz sonuçları: _col0 sütunu
[1,2,3,4,5,2,2,4]değerini içerir.
Reduce işlevi
reduce işlevi, bir diziye bir lambda ifadesi uygulayarak öğelerini tek bir değerde toplar.
Syntax
reduce(array, initialState, inputFunction, outputFunction)
Parameters
|
|
|
|
|
|
|
|
|
Return value type
bigint
Examples
[5, 20, 50] dizisindeki öğelerin toplamını hesaplar.
-
Sorgu deyimi
* | SELECT reduce(array[5, 20, 50], 0, (s, x) -> s + x, s -> s) Sorgu sonucu:
75
Reverse işlevi
Bir dizideki öğelerin sırasını tersine çevirir.
Syntax
reverse(x)
Parameters
|
|
|
|
|
|
Return value type
Öğeleri ters sırada olan bir dizi.
Examples
[1,2,3,4,5] dizisindeki öğelerin sırasını tersine çevirir.
-
Sorgu deyimi
* | SELECT reverse(array[1,2,3,4,5]) Sorgu sonuçları:
[5,4,3,2,1].
Sequence işlevi
sequence işlevi, belirtilen aralıkta ardışık ve artan değerlerden oluşan bir dizi döndürür.
Syntax
-
Varsayılan adım değeri 1 kullanılır.
sequence(x, y) -
Özel adım değeri kullanılır.
sequence(x, y, step)
Parameters
|
Parameter |
Description |
|
x |
Dizinin başlangıç değeri. Desteklenen veri türleri bigint ve timestamp'tir. timestamp türü için UNIX zaman damgası veya tarih ve saat ifadesi kullanabilirsiniz. |
|
y |
Dizinin bitiş değeri. Desteklenen veri türleri bigint ve timestamp'tir. timestamp türü için UNIX zaman damgası veya tarih ve saat ifadesi kullanabilirsiniz. |
|
step |
Adım değeri. x ve y tarih ve saat ifadeleri olduğunda step parametresi aşağıdaki biçimlerden birinde olmalıdır:
|
Return value type
dizi
Examples
-
0 ile 10 arasındaki çift sayıları döndürün.
-
Sorgu deyimi
* | SELECT sequence(0,10,2) Sorgu
[0,2,4,6,8,10]değerini döndürür.
-
-
23 Ekim 2017 ile 12 Ağustos 2021 arasındaki tarihleri bir yıl aralıklarla döndürün.
-
Sorgu deyimi
ww* | SELECT sequence(from_unixtime(1508737026),from_unixtime(1628734085),interval '1' year to month ) -
Sorgu sonucu
["2017-10-23 13:37:06.000","2018-10-23 13:37:06.000","2019-10-23 13:37:06.000","2020-10-23 13:37:06.000"]
-
-
1628733298 ile 1628734085 arasındaki UNIX zaman damgalarını 60 saniye aralıklarla döndürün.
-
Sorgu deyimi
* | SELECT sequence(1628733298,1628734085,60) Sonuçta,
_col0alanı[1628733298,1628733358,1628733418,1628733478,1628733538,1628733598,1628733658,1628733718,1628733778,1628733838,1628733898,1628733958,1628734018,1628734078]zaman damgası dizisini içerir.
-
Shuffle işlevi
Bir dizinin öğelerini rastgele karıştırır.
Syntax
shuffle(x)
Parameters
|
|
|
|
|
|
Return value type
Bir dizi döndürür.
Examples
Bu örnek, [1,2,3,4,5] dizisinin rastgele bir permütasyonunu döndürür.
-
Sorgu ve analiz deyimi
*| SELECT shuffle(array[1,2,3,4,5]) Sorgu ve analiz sonuçları: Sorgu, rastgele yeniden sıralanmış bir dizi içeren tek bir
_col0sütunu döndürür. Örnek değerler arasında[3,1,2,4,5],[5,1,2,4,3]ve[2,5,3,1,4]bulunur.
slice işlevi
Bir dizinin alt kümesini döndürür.
Syntax
slice(x, start, length)
Parameters
|
Parameter |
Description |
|
x |
Giriş dizisi. |
|
start |
Dilimin 1 tabanlı başlangıç indeksi.
|
|
length |
Alt kümeye dahil edilecek öğe sayısı. |
Return value type
dizi
Examples
Bu örnek, üçüncü öğeden başlayarak [1,2,4,5,6,7,7] dizisinin iki öğelik bir alt kümesini döndürür.
-
Sorgu ve analiz deyimi
* | SELECT slice(array[1,2,4,5,6,7,7],3,2) Sorgu ve analiz sonuçları: _col0 sütunu
[4,5]değerini içerir.
Transform işlevi
transform işlevi, bir dizinin her öğesine bir lambda ifadesi uygular.
Syntax
transform(x, lambda_expression)
Parameters
|
|
|
|
|
|
|
|
|
Return value type
Dizi.
Examples
Bu örnek, [5,6] dizisindeki her öğeye 1 ekler.
-
sorgu ve analiz deyimi
* | SELECT transform(array[5,6],x -> x + 1) Sorgu
[6,7]değerini döndürür.
zip işlevi
zip işlevi, birden çok diziyi iki boyutlu bir dizide birleştirir. Giriş dizilerinden aynı indekse sahip öğeleri gruplayarak iç içe geçmiş diziler oluşturur.
Syntax
zip(x, y...)
Parameters
|
|
|
|
|
|
|
|
|
Return value type
İki boyutlu bir dizi döndürür.
Examples
Bu örnek, [1,2,3], ['1b',null,'3b'] ve [1,2,3] dizilerini iki boyutlu bir dizide birleştirir.
-
Sorgu ve analiz deyimi
* | SELECT zip(array[1,2,3], array['1b',null,'3b'],array[1,2,3]) Sorgu ve analiz sonuçlarında _col0 sütunu
[[1,"1b",1],[2,null,2],[3,"3b",3]]değerini döndürür. İşlev, giriş dizilerindeki öğeleri ortak indekslerine göre gruplandırır.
zip_with işlevi
zip_with işlevi, karşılık gelen öğelere bir lambda ifadesi uygulayarak iki diziyi birleştirir.
Syntax
zip_with(x, y, lambda_expression)
Parameters
|
|
|
|
|
|
|
|
|
|
|
|
Return value type
array
Examples
Bu örnekte, [1,2] ve [3,4] dizilerinin karşılık gelen öğelerini toplamak için (x, y) -> x + y lambda ifadesi kullanılır. İşlev, sonuçları yeni bir dizi olarak döndürür.
-
Sorgu ve analiz deyimi
SELECT zip_with(array[1,2], array[3,4],(x,y) -> x + y) Sorgu ve analiz sonuçları:
_col0sütunundaki değer[4,6]şeklindedir.