Toplama işlevi, bir değer kümesinden tek bir değer hesaplar. Bu konuda toplama işlevlerinin temel sözdizimi açıklanır ve kullanım örnekleri sunulur.
Simple Log Service aşağıdaki toplama işlevlerini destekler.
Analitik deyimlerde dizeleri kullanmak istiyorsanız dizeleri tek tırnak içine ('') almanız gerekir. Tek tırnak içine alınmamış veya çift tırnak ("") içine alınmış dizeler alan adlarını veya sütun adlarını belirtir. Örneğin,
'status'
status dizesini belirtirken
status
veya
"status"
status günlük alanını belirtir.
Parametre | Sözdizimi | Açıklama | SQL desteği | SPL desteği |
arbitrary(x) | x ifadesindeki NULL olmayan herhangi bir değeri döndürür. | √ | × | |
avg(x) | x değerlerinin aritmetik ortalamasını hesaplar. | √ | × | |
bitwise_and_agg(x) | x içindeki tüm değerlerin bitsel AND sonucunu döndürür. | √ | × | |
bitwise_or_agg(x) | x içindeki tüm değerlerin bitsel OR sonucunu döndürür. | √ | × | |
bool_and(boolean expression) | Tüm günlükler koşulu karşılıyorsa true döndürür.
| √ | × | |
bool_or(boolean expression) | En az bir günlük koşulu karşılıyorsa true döndürür. | √ | × | |
checksum(x) | x için sağlama toplamını hesaplar. | √ | × | |
count(*) | Toplam günlük sayısını döndürür. | √ | × | |
count(1) |
| √ | × | |
count(x) | x değerinin NULL olmadığı günlük sayısını döndürür. | √ | × | |
count_if(boolean expression) | Belirtilen koşulu karşılayan günlük sayısını döndürür. | √ | × | |
every(boolean expression) | Tüm günlükler koşulu karşılıyorsa true döndürür.
| √ | × | |
geometric_mean(x) | x değerlerinin geometrik ortalamasını hesaplar. | √ | × | |
kurtosis(x) | x değerlerinin basıklığını (kurtosis) hesaplar. | √ | × | |
map_union(x) | Bir sütundaki haritaların birleşimini döndürür. Bir anahtar birden fazla haritada varsa bu anahtar için rastgele bir değer seçilir. | √ | × | |
max(x) | x içindeki en büyük değeri döndürür. | √ | × | |
max(x, n) | x içindeki en büyük n değeri bir dizi olarak döndürür. | √ | × | |
max_by(x, y) | y değerinin maksimum değerine karşılık gelen x değerini döndürür. | √ | × | |
max_by(x, y, n) | y değerinin en büyük n değerine karşılık gelen x değerlerinden oluşan bir dizi döndürür. | √ | × | |
min(x) | x içindeki en küçük değeri döndürür. | √ | × | |
min(x, n) | x içindeki en küçük n değeri bir dizi olarak döndürür. | √ | × | |
min_by(x, y) | y değerinin minimum değerine karşılık gelen x değerini döndürür. | √ | × | |
min_by(x, y, n) | y değerinin en küçük n değerine karşılık gelen x değerlerinden oluşan bir dizi döndürür. | √ | × | |
skewness(x) | x değerlerinin çarpıklığını (skewness) hesaplar. | √ | × | |
sum(x) | x değerlerinin toplamını hesaplar. | √ | × |
Arbitrary işlevi
Arbitrary işlevi, x ifadesindeki NULL olmayan herhangi bir değeri döndürür.
Sözdizimi
arbitrary(x)
Parametreler
|
|
|
|
|
|
Dönüş türü
Giriş ifadesinin veri türüyle eşleşir.
Örnek
request_method alanından NULL olmayan herhangi bir değeri döndürür.
-
Sorgu deyimi (Debug)
* | SELECT arbitrary(request_method) AS request_method request_method sütunu
GETgibi bir değer döndürür.
Avg işlevi
Avg işlevi, x içindeki değerlerin ortalamasını döndürür.
Sözdizimi
avg(x)
Parametreler
|
|
|
|
|
|
Dönüş değeri türü
Double türünde bir değer.
Örnekler
Ortalama gecikme süresi 1.000 mikrosaniyeden büyük olan projeleri döndürür.
-
Sorgu deyimi (Debug)
method: PostLogstoreLogs | SELECT avg(latency) AS avg_latency, Project GROUP BY Project HAVING avg_latency > 1000 Sorgu, avg_latency değeri
3223.4162679425835ve Project adıdatalab-14ile başlayan bir kayıt döndürür.
bitwise_and_agg işlevi
Bitwise_and_agg işlevi, x içindeki tüm değerlerin bitsel AND sonucunu döndürür.
Sözdizimi
bitwise_and_agg(x)
Parametreler
|
|
|
|
|
|
Dönüş değeri türü
Bigint değeri.
Örnekler
status alanındaki tüm değerler üzerinde bitsel AND işlemi gerçekleştirir.
-
Sorgu deyimi (Debug)
* | SELECT bitwise_and_agg(status) Sorgu, değeri
0olan_col0adlı tek bir sütun döndürür.
Bitwise_or_agg işlevi
Bitwise_or_agg işlevi, x içindeki tüm değerler üzerinde bitsel OR işlemi sonucunu döndürür.
Sözdizimi
bitwise_or_agg(x)
Parametreler
|
|
|
|
|
|
Dönüş türü
Bigint değeri.
Örnek
request_time alanının tüm değerleri üzerinde bitsel OR işlemi gerçekleştirir.
-
Sorgu ve analiz deyimi (Debug)
* | SELECT bitwise_or_agg(request_length) Sorgu ve analiz sonuçları, değeri
16383olan tek bir_col0sütunu olarak döndürülür.
bool_and işlevi
bool_and işlevi, bir boolean ifadesi tüm günlükler için true ise true döndürür. Bu işlev every işlevine eşdeğerdir.
Sözdizimi
bool_and(boolean expression)
Parametreler
|
|
|
|
|
|
Dönüş değeri türü
boolean
Örnek
Bu örnekte tüm günlükler için request_time değerinin 100'den küçük olup olmadığı kontrol edilir.
-
Sorgu ve analiz deyimi (Debug)
* | SELECT bool_and(request_time < 100) Sorgu ve analiz sonucu
truedeğeridir; bu, tüm günlüklerinrequest_timedeğerinin 100'den küçük olduğunu gösterir.
bool_or işlevi
bool_or işlevi, bir boolean ifadesi en az bir günlük için true ise true döndürür.
Sözdizimi
bool_or(boolean expression)
Parametreler
|
|
|
|
|
|
Dönüş değeri türü
boolean
Örnekler
Herhangi bir günlük için request_time değerinin 20'den küçük olup olmadığını kontrol etmek için:
-
Sorgu ve analiz deyimi (Debug)
* | SELECT bool_or(request_time < 20) Sorgu ve analiz sonuçları,
_col0sütunu içintruedeğerini döndürür; bu, günlükte request_time değeri 20'den küçük olan bir kayıt bulunduğunu gösterir.
Checksum işlevi
Checksum işlevi, x için sağlama toplamını hesaplar.
Sözdizimi
checksum(x)
Parametreler
|
|
|
|
|
|
Dönüş değeri türü
Base64 kodlu dize.
Örnek
-
Sorgu deyimi (Debug)
* | SELECT checksum(request_method) AS request_method request_method alanının sağlama toplamı
NDXFdgnd8GE=değeridir.
Count işlevi
Count işlevi günlükleri sayar.
Sözdizimi
-
Toplam günlük sayısını sayar.
count(*) -
Toplam günlük sayısını döndürür. Bu,
count(*)ile eşdeğerdir.count(1) -
x değeri NULL olmayan günlükleri sayar.
count(x)
Parametreler
|
|
|
|
|
|
Dönüş değeri türü
Tamsayı.
Örnekler
-
Örnek 1: Web sitesi sayfa görüntülemelerini sayın.
-
Sorgu deyimi (Debug)
* | SELECT count(*) AS PV Sorgu ve analiz sonuçları: Sonuç tablosunda değeri
2009olan bir PV sütunu bulunur.
-
-
Örnek 2:
request_methodalanı null olmayan günlükleri sayın.-
Sorgu deyimi (Debug)
* | SELECT count(request_method) AS count Sorgu ve analiz sonuçları: Sonuç tablosunda değeri
1954olan bir count sütunu bulunur.
-
count_if işlevi
Count_if işlevi, belirtilen bir koşulu karşılayan günlükleri sayar.
Sözdizimi
count_if(boolean expression)
Parametreler
|
|
|
|
|
|
Dönüş türü
Koşulu karşılayan günlük sayısı.
Örnek
request_uri alanının değeri file-0 ile biten günlük girişlerinin sayısını hesaplayın.
-
Sorgu ve analiz deyimi (debug)
* | SELECT count_if(request_uri like '%file-0') AS count Sorgu ve analiz sonuçları
geometric_mean işlevi
Geometric_mean işlevi, x değerlerinin geometrik ortalamasını hesaplar.
Sözdizimi
geometric_mean(x)
Parametreler
|
|
|
|
|
|
Dönüş değeri türü
Double değeri döndürür.
Örnek
İstek süresinin geometrik ortalamasını hesaplayın.
-
Sorgu ve analiz deyimi (Debug)
* | SELECT geometric_mean(request_time) AS time Sorgu ve analiz sonuçlarında değeri
39.443123208882308olan bir time sütunu gösterilir.
Every işlevi
every işlevi, bir boolean ifadesi tüm günlükler için true olarak değerlendirilirse true döndürür. Bu işlev bool_and işlevine eşdeğerdir.
Sözdizimi
every(boolean expression)
Parametreler
|
|
|
|
|
|
Dönüş değeri türü
Boolean değeri döndürür.
Örnek
Bu örnekte her günlükteki request_time değerinin 100'den küçük olup olmadığı kontrol edilir.
-
Sorgu ve analiz deyimi (Debug)
* | SELECT every(request_time < 100) Sorgu ve analiz sonuçları
Kurtosis işlevi
x değerlerinin basıklığını (kurtosis) hesaplar.
Sözdizimi
kurtosis(x)
Parametreler
|
|
|
|
|
|
Dönüş türü
double
Örnek
Request_time alanının basıklığını (kurtosis) hesaplar.
-
Sorgu deyimi (Debug)
*| SELECT kurtosis(request_time) -
Sorgu ve analiz sonuçları
kurtosis -3.0006998250171186
map_union işlevi
map_union işlevi, bir sütundaki tüm haritaların birleşimini döndürür. Aynı anahtar birden fazla giriş haritasında varsa sonuçtaki harita için bu anahtarın değeri girişlerden biri arasında deterministik olmayan şekilde seçilir.
Sözdizimi
map_union(x)
Parametreler
|
|
|
|
|
|
Dönüş değeri türü
Harita türünde tek bir değer döndürür.
Örnek
Bu örnekte etl_context alanındaki harita değerleri tek bir haritada toplanır.
-
Örnek alan
etl_context: { project:"datalab-148****6461-cn-chengdu" logstore:"internal-etl-log" consumer_group:"etl-83****4d1965" consumer:"etl-b2d40ed****c8d6-291294" shard_id:"0" } -
Sorgu deyimi
* | SELECT map_union( try_cast(json_parse(etl_context) AS map(varchar, varchar)) ) Sorgu ve analiz sonuçları: Sorgu deyimi çalıştırıldıktan sonra sonuç sütunu
_col0olarak adlandırılır ve değer, etl_context'ten ayrıştırılan anahtar-değer çiftlerinden oluşan bir haritadır;consumer_group,shard_id,project,logstoreveconsumergibi alanları ve bunlara karşılık gelen değerleri içerir.
Max işlevi
Max işlevi, x değerinin maksimum değerini döndürür.
Sözdizimi
-
x değerinin maksimum değerini döndürür.
max(x) -
x değerinin en büyük n değerinden oluşan bir dizi döndürür.
max(x, n)
Parametreler
|
|
|
|
|
|
|
|
|
Dönüş değeri türü
Giriş ifadesiyle aynı veri türü.
Örnekler
-
Örnek 1: Maksimum istek süresini bulun.
-
Sorgu deyimi (Debug)
* | SELECT max(request_time) AS max_request_time Sorgu ve analiz sonuçları:
max_request_timedeğeri80.0değeridir.
-
-
Örnek 2: En yüksek 10 istek süresini bulun.
-
Sorgu deyimi (Debug)
* | SELECT max(request_time, 10) AS "top 10" Sorgu ve analiz sonuçları: Sorgu, top 10 sütunu için
[80.0,80.0,80.0,80.0,80.0,79.0,79.0,79.0,78.0,78.0]değerini döndürür. Dizi, azalan sırada en büyük 10request_timedeğerini içerir.
-
Max_by işlevi
Max_by işlevi aşağıdaki iki sözdizimini destekler.
Sözdizimi
-
y değerinin maksimum değeri için x değerini döndürür.
max_by(x, y) -
y değerinin en büyük n değeri için x değerlerinden oluşan bir dizi döndürür.
max_by(x, y, n)
Parametreler
|
|
|
|
|
|
|
|
|
|
|
|
Dönüş değeri türü
x değerinin veri türüyle aynı.
Örnekler
-
Örnek 1: Vergi öncesi tutarı en yüksek olan siparişin saatini bulun.
-
Sorgu ve analiz deyimi
* | SELECT max_by(UsageEndTime, PretaxAmount) AS time Sorgu ve analiz sonuçları: time sütunu
1625731025değerini döndürür.
-
-
Örnek 2: İstek süreleri en uzun olan üç isteğin istek yöntemlerini bulun.
-
Sorgu ve analiz deyimi (debug)
* | SELECT max_by(request_method, request_time, 3) AS method Sorgu ve analiz sonuçları: method değeri
["POST","POST","POST"]değeridir; bu,request_timegöre sıralanan en son üç isteğin yönteminin POST olduğunu gösterir.
-
min işlevi
Min işlevi, x içindeki minimum değeri döndürür.
Sözdizimi
-
x içindeki minimum değeri döndürür.
min(x) -
x içindeki en küçük n değeri bir dizi olarak döndürür.
min(x,n)
Parametreler
|
|
|
|
|
|
|
|
|
Dönüş değeri türü
Giriş ifadesinin veri türüyle aynı.
Örnekler
-
Örnek 1: Minimum istek süresini bulun.
-
Sorgu ve analiz deyimi (Debug)
* | SELECT min(request_time) AS min_request_time Sorgu ve analiz sonuçları, değeri
10.0olan min_request_time adlı bir sütun döndürür.
-
-
Örnek 2: En küçük 10 istek süresini bulun.
-
Sorgu ve analiz deyimi (Debug)
* | SELECT min(request_time, 10) Sorgu ve analiz sonuçları, değeri
[10.0,10.0,10.0,10.0,10.0,11.0,12.0,12.0,13.0,13.0]olan_col0adlı bir sütun döndürür.
-
min_by işlevi
min_by işlevi aşağıdaki iki sözdizimine sahiptir.
Sözdizimi
-
y değerinin minimum değeri için x değerini döndürür.
min_by(x, y) -
y değerinin en küçük n değeri için x değerlerinden oluşan bir dizi döndürür.
min_by(x, y, n)
Parametreler
|
|
|
|
|
|
|
|
|
|
|
|
Dönüş değeri türü
x parametresinin veri türüyle aynı.
Örnekler
-
Örnek 1: İstek süresi minimum olan isteğin istek yöntemini bulun.
-
Sorgu ve analiz deyimi (Debug)
* | SELECT min_by(request_method, request_time) AS method Sorgu ve analiz sonuçları: method sütunu
GETdeğerini döndürür.
-
-
Örnek 2: İstek süreleri en küçük olan üç isteğin istek yöntemlerini bulun.
-
Sorgu ve analiz deyimi (Debug)
* | SELECT min_by(request_method, request_time, 3) AS method Sorgu ve analiz sonuçları.
-
Skewness işlevi
skewness işlevi, x ifadesinin çarpıklığını (skewness) hesaplar.
Sözdizimi
skewness(x)
Parametreler
|
|
|
|
|
|
Dönüş değeri türü
double
Örnek
request_time alanındaki değerlerin çarpıklığını hesaplayın.
-
Sorgu ve analiz deyimi (Debug)
*| SELECT skewness(request_time) AS skewness Sorgu ve analiz sonuçları: skewness değeri
0.00042944441602043965değeridir.
Sum işlevi
Sum işlevi, x ifadesindeki değerleri toplar.
Sözdizimi
sum(x)
Parametreler
|
|
|
|
|
|
Dönüş değeri türü
Giriş ifadesinin veri türüyle aynı.
Örnekler
Bir web sitesinin günlük trafiğini hesaplayın.
-
Sorgu ve analiz deyimi (debug)
* | SELECT date_trunc('day', __time__) AS time, sum(body_bytes_sent) AS body_bytes_sent GROUP BY time ORDER BY time Sorgu ve analiz sonuçları: Sorgu ve analiz deyimi çalıştırıldıktan sonra günlere göre toplanmış istatistiksel sonuçlar tablosu döndürülür; bu tabloda 2023-09-19 ile 2023-09-23 tarihleri arasındaki toplam beş gün için
body_bytes_senttoplamı yer alır.