Karşılaştırmalı dönem işlevleri, sorgu sonuçlarını zaman aralıkları arasında karşılaştırarak yıl bazında ve dönem bazında analiz yapılmasını sağlar.
Simple Log Service (SLS) aşağıdaki karşılaştırmalı dönem işlevlerini destekler.
Analitik deyimlerde dizeler kullanmak istiyorsanız dizeleri tek tırnak içine ('') almanız gerekir. Tırnak içine alınmamış dizeler 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.
|
İşlev adı |
Sözdizimi |
Açıklama |
SQL desteği |
SPL desteği |
|
compare(x, n) |
Mevcut zaman dilimi için hesaplanan sonucu n saniye önceki sonuçla karşılaştırır. |
√ |
× |
|
|
compare(x, n1, n2, n3...) |
Mevcut zaman dilimi için hesaplanan sonucu n1, n2, n3... saniye önceki sonuçlarla karşılaştırır. |
√ |
× |
|
|
ts_compare(x, n) |
Saatlik gibi hizalanmış bir zaman için mevcut dönemdeki sonucu n saniye önceki karşılık gelen zamandaki sonuçla karşılaştırır. |
√ |
× |
|
|
ts_compare(x, n1, n2, n3...) |
Saatlik gibi hizalanmış bir zaman için mevcut dönemdeki sonucu n1, n2, n3... saniye önceki karşılık gelen zamanlardaki sonuçlarla karşılaştırır. |
√ |
× |
ts_compareişlevi, tek bir zaman sütunu içeren birGROUP BYyan tümcesi gerektirir.comparevets_compareişlevleri iç içe kullanılamaz.
Compare işlevi
Mevcut zaman dilimi için hesaplanan sonucu bir veya daha fazla önceki dönemden gelen sonuçlarla karşılaştırır.
Sözdizimi
-
Mevcut zaman dilimi için hesaplanan sonucu n saniye önceki sonuçla karşılaştırır.
compare(x, n) -
Mevcut zaman dilimi için hesaplanan sonucu n1, n2, n3... saniye önceki sonuçlarla karşılaştırır.
compare(x, n1, n2, n3...)
Parametreler
|
|
|
|
|
|
|
|
|
Dönüş değeri
Bir dizi döndürür. Tek bir zaman farkı n için biçim [mevcut_sonuc, onceki_sonuc, oran] şeklindedir. Birden çok zaman farkı (n1, n2, ...) belirtildiğinde biçim [mevcut_sonuc, onceki_sonuc_1, onceki_sonuc_2, ..., oran_1, oran_2, ...] şeklindedir.
Örnekler
-
Örnek 1: Mevcut saat ile önceki günün aynı saati arasındaki sayfa görüntüleme (PV) oranını hesaplayın.
Sorgu ve analiz için zaman aralığını 1 Hour (Aligned Time) olarak ayarlayın ve aşağıdaki sorgu deyimini çalıştırın. Deyimde 86400 mevcut zaman eksi 86400 saniyeyi (1 gün) temsil eder ve log Logstore adını temsil eder.
-
Sonuçları dizi olarak görüntüleyin
-
Sorgu deyimi (Debug)
* | SELECT compare(PV, 86400) FROM ( SELECT count(*) AS PV FROM log ) -
Sorgu ve analiz sonuçları
3337.0: Mevcut saat için PV'ler (örneğin, 25 Aralık 2020 tarihinde 14:00:00 ile 15:00:00 arasında).
3522.0: Önceki günün aynı saati için PV'ler (örneğin, 24 Aralık 2020 tarihinde 14:00:00 ile 15:00:00 arasında).
0.947473026689381: Mevcut saat ile önceki günün aynı saati arasındaki PV oranı.
-
-
Sonuçları ayrı sütunlarda görüntüleyin
-
Sorgu deyimi (Debug)
* | SELECT diff [1] AS today, diff [2] AS yesterday, diff [3] AS ratio FROM ( SELECT compare(PV, 86400) AS diff FROM ( SELECT count(*) AS PV FROM log ) )compareişlevi bir dizi döndürür; burada diff sonuç için bir takma addır ve diff [1] diziden ilk değeri alır. -
Sorgu ve analiz sonuçları
3337.0: Mevcut saat için PV'ler (örneğin, 25 Aralık 2020 tarihinde 14:00:00 ile 15:00:00 arasında).
3522.0: Önceki günün aynı saati için PV'ler (örneğin, 24 Aralık 2020 tarihinde 14:00:00 ile 15:00:00 arasında).
0.947473026689381: Mevcut saat ile önceki günün aynı saati arasındaki PV oranı.
-
-
-
Örnek 2: Mevcut saat için her bir istek durumu ve yöntemi kombinasyonundaki istekleri sayın ve sonucu önceki saatin sayısı ile karşılaştırın.
Sorgu ve analiz için zaman aralığı olarak 1 Hour (Aligned Time) seçeneğini belirleyin ve aşağıdaki sorgu ve analiz deyimini çalıştırın. Deyimde 3600 mevcut zaman eksi 3600 saniyeyi (1 saat) temsil eder ve log Logstore adını temsil eder.
-
Sorgu deyimi (Debug)
* | SELECT status, request_method, compare(PV, 3600) FROM ( SELECT status, request_method, count(*) AS PV FROM log GROUP BY status, request_method ) GROUP BY status, request_method Sorgu ve analiz sonuçları: Sonuçlar status, request_method ve _col2 olmak üzere üç sütun içerir. _col2 sütunu,
compareişlevi tarafından döndürülen ve[mevcut_dönem_değeri, önceki_dönem_değeri, oran]biçimindeki diziyi içerir. Örneğin, 501 durum kodu ve GET istek yöntemi için bir satır[39.0, 13.0, 3.0]değerini döndürür. Bu, mevcut dönem için 39 PV sayısı, önceki dönem için 13 PV sayısı ve dönem bazında 3,0 oranı olduğunu gösterir.
-
Ts_compare işlevi
Mevcut dönemde saatlik gibi hizalanmış bir zaman için hesaplanan sonucu önceki dönemlerdeki karşılık gelen zamanlardaki sonuçlarla karşılaştırır.
ts_compare işlevi, tek bir zaman sütunu içeren bir GROUP BY yan tümcesi gerektirir.
Sözdizimi
-
Mevcut zaman diliminde hizalanmış bir zaman için hesaplanan sonucu n saniye önceki zaman dilimindeki karşılık gelen hizalanmış zamandaki sonuçla karşılaştırır.
ts_compare(x, n) -
Mevcut dönemde hizalanmış bir zaman için hesaplanan sonucu n1, n2, n3... saniye önceki karşılık gelen zamanlardaki sonuçlarla karşılaştırır.
ts_compare(x, n1, n2, n3...)
Parametreler
|
|
|
|
|
|
|
|
|
Dönüş değeri
Bir dizi döndürür. Tek bir zaman farkı n için biçim [mevcut_sonuc, onceki_sonuc, oran, onceki_unix_zaman_damgasi] şeklindedir. Birden çok zaman farkı (n1, n2, ...) belirtildiğinde biçim [mevcut_sonuc, onceki_sonuc_1, onceki_sonuc_2, ..., oran_1, oran_2, ..., onceki_unix_zaman_damgasi_1, onceki_unix_zaman_damgasi_2, ...] şeklindedir.
Örnekler
-
Örnek 1: Bugünün saatlik sayfa görüntülemelerini (PV) önceki gün ve iki gün önceki aynı saatlerle karşılaştırın.
Sorgu ve analiz için zaman aralığını Today (Aligned Time) olarak ayarlayın ve aşağıdaki sorgu deyimini çalıştırın. Bu deyimde 86400 mevcut zaman eksi 86400 saniyeyi (1 gün) temsil eder, 172800 mevcut zaman eksi 172800 saniyeyi (2 gün) temsil eder, log Logstore adını temsil eder ve date_trunc('hour',__time__ ) date_trunc işlevini kullanarak zamanı saate hizalamayı temsil eder.
-
Sonuçları dizi olarak görüntüleyin
-
Sorgu deyimi (Debug)
* | SELECT time, ts_compare(PV, 86400, 172800) as diff FROM ( SELECT count(*) as PV, date_trunc('hour', __time__) AS time FROM log GROUP BY time ) GROUP BY time ORDER BY time -
Sorgu ve analiz sonuçları
1174.0: Mevcut zaman dilimi için PV'ler (örneğin, 22 Eylül 2022 tarihinde 00:00 ile 01:00 arasında).
1191.0: Önceki günün aynı zaman dilimi için PV'ler (örneğin, 21 Eylül 2022 tarihinde 00:00 ile 01:00 arasında).
1253.0: İki gün önceki aynı zaman dilimi için PV'ler (örneğin, 20 Eylül 2022 tarihinde 00:00 ile 01:00 arasında).
0.9857262804366079: Mevcut saat ile önceki günün aynı saati arasındaki PV oranı.
0.936951316839585: Mevcut saat ile iki gün önceki aynı saat arasındaki PV oranı.
1663689600.0: 21 Eylül 2022 tarihinde 00:00 için UNIX zaman damgası.
1663603200.0: 20 Eylül 2022 tarihinde 00:00 için UNIX zaman damgası.
NotSonuçlardaki zaman damgaları sorguyu çalıştırdığınız zamana bağlı olarak değişebilir.
-
-
Sonuçları ayrı sütunlarda görüntüleyin
-
Sorgu deyimi (Debug)
* | SELECT time, diff [1] AS day1, diff [2] AS day2, diff [3] AS day3, diff [4] AS ratio1, diff [5] AS ratio2 FROM ( SELECT time, ts_compare(PV, 86400, 172800) AS diff FROM ( SELECT count(*) as PV, date_trunc('hour', __time__) AS time FROM log GROUP BY time ) GROUP BY time ORDER BY time ) Sorgu ve analiz sonuçları: Sonuç tablosundaki her satır bir saatlik veriyi temsil eder. time saatlik zaman damgasıdır. day1, day2 ve day3 sırasıyla mevcut gün, önceki gün ve iki gün önceki PV sayılarıdır. ratio1 mevcut gün ile önceki gün arasındaki oranı, ratio2 ise mevcut gün ile iki gün önceki gün arasındaki oranı gösterir. 1,0'a yakın bir değer küçük bir değişikliği ifade eder.
-
-
-
Örnek 2: Bugün için saatlik sayfa görüntüleme (PV) değişimini hesaplayın.
Sorgu ve analiz için zaman aralığını Today (relative) olarak ayarlayın ve aşağıdaki sorgu deyimini çalıştırın. Bu deyimde 3600 mevcut zaman eksi 3600 saniyeyi (1 saat) temsil eder, log Logstore adıdır ve date_trunc('hour',__time__ )
date_truncişlevini kullanarak zamanı saate hizalar.-
Sorgu deyimi (Debug)
* | SELECT time, ts_compare(PV, 3600) AS data FROM( SELECT date_trunc('hour', __time__) AS time, count(*) AS PV FROM log GROUP BY time ORDER BY time ) GROUP BY time -
Sorgu ve analiz sonuçları time ve data olmak üzere iki sütun içerir. Örneğin, time
2021-01-27 00:00:00.000olduğunda data[1160.0,10034.0,0.11560693641618497,1611673200.0]değerindedir. time2021-01-27 01:00:00.000olduğunda data[10177.0,1160.0,8.773275862068966,1611676800.0]değerindedir. time2021-01-27 02:00:00.000olduğunda data[26804.0,10177.0,2.633782057580195,1611680400.0]değerindedir.NotSonuçlardaki zaman damgaları sorguyu çalıştırdığınız zamana bağlı olarak değişebilir.
-