HyperLogLog işlevleri, approx_distinct işlevine benzer şekilde yaklaşık toplama işlevleridir. Büyük veri kümelerini analiz ederken hızlıca tahmini sonuçlar döndürür.
Aşağıdaki HyperLogLog işlevleri kullanılabilir.
Analiz deyimlerinde dizeler 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ış ifadeler 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.
|
|
|
|
|
|
|
|
x içindeki farklı değerlerin sayısını tahmin eder. Varsayılan maksimum standart hata 0,01625'tir. |
|
|
|
|
|
Bir HyperLogLog değerini bigint değerine dönüştürür. |
|
|
|
|
|
Boş bir HyperLogLog kümesi döndürür. Varsayılan maksimum standart hata 0,01625'tir. |
|
|
|
|
|
Birden çok HyperLogLog kümesini tek bir kümede birleştirir. |
|
|
approx_set işlevi
approx_set işlevi, x içindeki farklı değerlerin sayısını tahmin eder. Varsayılan maksimum standart hata 0,01625'tir.
Syntax
approx_set(x)
Parameters
|
|
|
|
|
Herhangi bir veri türünde ifade. |
Return value type
HyperLogLog
Examples
Bir web sitesi için dakika başına benzersiz ziyaretçi (UV) sayısını tahmin edin. Sonuç HyperLogLog biçimindedir.
-
Sorgu ve analiz deyimi
* | SELECT date_trunc('minute', __time__) AS Time, approx_set(client_ip) AS UV FROM website_log GROUP BY Time ORDER BY Time Sorgu ve analiz sonuçları:
Time(dakikaya yuvarlanmış zaman damgası) veUV(approx_setişlevinden elde edilen kodlanmış yaklaşık küme) döndürür. Toplam: 16 kayıt.
cardinality işlevi
cardinality işlevi, bir HyperLogLog değerini bigint değerine dönüştürür.
Syntax
cardinality(x)
Parameters
|
|
|
|
|
Bir HyperLogLog ifadesi. |
Return value type
bigint
Examples
Dakika başına UV'leri tahmin etmek için approx_set işlevini (bir HyperLogLog değeri döndürür) kullanın, ardından bu değeri bigint'e dönüştürmek için cardinality işlevini kullanın.
-
Sorgu ve analiz deyimi
* | SELECT Time, cardinality(UV) AS UV FROM ( SELECT date_trunc('minute', __time__) AS Time, approx_set(client_ip) AS UV FROM website_log GROUP BY Time ORDER BY Time ) AS UV Sonuçlar, Time ve UV sütunlarında dakika başına UV sayılarını gösterir. Örneğin, 2021-09-09 15:12:00 tarihinde 78 UV ve 15:13:00 tarihinde 561 UV bulunmaktadır.
empty_approx_set işlevi
empty_approx_set işlevi boş bir HyperLogLog kümesi döndürür. Varsayılan maksimum standart hata 0,01625'tir.
Syntax
empty_approx_set()
Return value type
HyperLogLog
Examples
Boş bir HyperLogLog kümesi döndürür.
-
Sorgu ve analiz deyimi
* | SELECT empty_approx_set() Değeri
AgwAAA==olan tek bir_col0sütunu döndürür; bu, Base64 ile kodlanmış boş bir yaklaşık kümedir.
merge işlevi
merge işlevi, birden çok HyperLogLog kümesini tek bir kümede birleştirir.
Syntax
merge(x)
Parameters
|
|
|
|
|
Bir HyperLogLog ifadesi. |
Return value type
HyperLogLog
Examples
Dakika başına UV'leri tahmin etmek için approx_set işlevini, UV kümelerini toplamak için merge işlevini ve nihai değeri bigint'e dönüştürmek için cardinality işlevini kullanın.
-
Sorgu ve analiz deyimi
* | SELECT Time, cardinality(UV) AS UV, cardinality(merge(UV) over()) AS Total_UV FROM ( SELECT date_trunc('minute', __time__) AS Time, approx_set(client_ip) AS UV FROM log GROUP BY Time ORDER BY Time ) Sorgu ve analiz sonuçları: Dakika başına UV sayıları değişkenlik gösterir (561, 658, 625), Total_UV ise tüm satırlardaki kümülatif toplamı (8564) gösterir.