68 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 72537a2d52 |
36 | Başvurma |
Toplama Fonksiyonu Referansı
sayma
Satır veya NOT-NULL değerleri sayar.
ClickHouse için aşağıdaki sözdizimleri destekler count
:
count(expr)
veyaCOUNT(DISTINCT expr)
.count()
veyaCOUNT(*)
. Bucount()
sözdizimi ClickHouse özeldir.
Parametre
Fonksiyon alabilir:
- Sıfır parametreler.
- Bir ifade.
Döndürülen değer
- Fonksiyon parametreleri olmadan çağrılırsa, satır sayısını sayar.
- Eğer... ifade geçirilir, daha sonra işlev bu ifadenin kaç kez NOT null döndürdüğünü sayar. İfad aede bir Nullable- type değeri, sonra sonucu
count
kalır değilNullable
. İfade döndürülürse işlev 0 döndürürNULL
tüm satırlar için.
Her iki durumda da döndürülen değerin türü Uİnt64.
Ayrıntı
ClickHouse destekler COUNT(DISTINCT ...)
sözdizimi. Bu yapının davranışı Aşağıdakilere bağlıdır count_distinct_implementation ayar. Aşağıdakilerden hang theisini tanımlar uniq* fonksiyonlar işlemi gerçekleştirmek için kullanılır. Varsayılan değer uniqExact İşlev.
Bu SELECT count() FROM table
tablodaki girdi sayısı ayrı olarak depolanmadığı için sorgu en iyi duruma getirilmez. Tablodan küçük bir sütun seçer ve içindeki değerlerin sayısını sayar.
Örnekler
Örnek 1:
SELECT count() FROM t
┌─count()─┐
│ 5 │
└─────────┘
Örnek 2:
SELECT name, value FROM system.settings WHERE name = 'count_distinct_implementation'
┌─name──────────────────────────┬─value─────┐
│ count_distinct_implementation │ uniqExact │
└───────────────────────────────┴───────────┘
SELECT count(DISTINCT num) FROM t
┌─uniqExact(num)─┐
│ 3 │
└────────────────┘
Bu örnek gösteriyor ki count(DISTINCT num)
tarafından gerçekleştirilir uniqExact
fonksiyonu göre count_distinct_implementation
ayar değeri.
herhangi(x)
İlk karşılaşılan değeri seçer. Sorgu herhangi bir sırada ve hatta her seferinde farklı bir sırada çalıştırılabilir, bu nedenle bu işlevin sonucu belirsizdir. Belirli bir sonuç elde etmek için ‘min’ veya ‘max’ fonksiyon yerine ‘any’.
Bazı durumlarda, yürütme sırasına güvenebilirsiniz. Bu, select ORDER BY kullanan bir alt sorgudan geldiğinde durumlar için geçerlidir.
Ne zaman bir SELECT
sorgu vardır GROUP BY
yan tümce veya en az bir toplama işlevi, ClickHouse (Mysql'in aksine), tüm ifadelerin SELECT
, HAVING
, ve ORDER BY
anahtar functionslardan veya toplama işlev .lerinden hesaplan .malıdır. Başka bir deyişle, tablodan seçilen her sütun, anahtarlarda veya toplama işlevlerinde kullanılmalıdır. Mysql'de olduğu gibi davranış elde etmek için, diğer sütunları any
toplama işlevi.
anyHeavy (x)
Kullanarak sık oluşan bir değer seçer ağır vurucular algoritma. Sorgunun yürütme iş parçacığı her durumda yarısından fazlasını oluşan bir değer varsa, bu değer döndürülür. Normalde, sonuç belirsizdir.
anyHeavy(column)
Değişkenler
column
– The column name.
Örnek
Tak thee the OnTime veri kümesi ve herhangi bir sık oluşan değeri seçin AirlineID
sütun.
SELECT anyHeavy(AirlineID) AS res
FROM ontime
┌───res─┐
│ 19690 │
└───────┘
anyLast(x)
Karşılaşılan son değeri seçer.
Sonuç için olduğu kadar belirsiz any
İşlev.
groupBitAnd
Bitwise uygular AND
sayı serisi için.
groupBitAnd(expr)
Parametre
expr
– An expression that results in UInt*
tür.
Dönüş değeri
Bu değer UInt*
tür.
Örnek
Test verileri:
binary decimal
00101100 = 44
00011100 = 28
00001101 = 13
01010101 = 85
Sorgu:
SELECT groupBitAnd(num) FROM t
Nerede num
test verileri ile sütundur.
Sonuç:
binary decimal
00000100 = 4
groupBitOr
Bitwise uygular OR
sayı serisi için.
groupBitOr(expr)
Parametre
expr
– An expression that results in UInt*
tür.
Dönüş değeri
Bu değer UInt*
tür.
Örnek
Test verileri:
binary decimal
00101100 = 44
00011100 = 28
00001101 = 13
01010101 = 85
Sorgu:
SELECT groupBitOr(num) FROM t
Nerede num
test verileri ile sütundur.
Sonuç:
binary decimal
01111101 = 125
groupBitXor
Bitwise uygular XOR
sayı serisi için.
groupBitXor(expr)
Parametre
expr
– An expression that results in UInt*
tür.
Dönüş değeri
Bu değer UInt*
tür.
Örnek
Test verileri:
binary decimal
00101100 = 44
00011100 = 28
00001101 = 13
01010101 = 85
Sorgu:
SELECT groupBitXor(num) FROM t
Nerede num
test verileri ile sütundur.
Sonuç:
binary decimal
01101000 = 104
groupBitmap
İşaretsiz tamsayı sütun, Uınt64 tür iade önem, gelen bit eşlem veya Toplama hesaplamaları suffix ekleme -Devlet, sonra iade bitmap nesnesi.
groupBitmap(expr)
Parametre
expr
– An expression that results in UInt*
tür.
Dönüş değeri
Bu değer UInt64
tür.
Örnek
Test verileri:
UserID
1
1
2
3
Sorgu:
SELECT groupBitmap(UserID) as num FROM t
Sonuç:
num
3
min (x)
Minimum hesaplar.
max (x)
Maksimum hesaplar.
argMin (arg, val)
Hesaplar ‘arg’ minimum değer ‘val’ değer. Birkaç farklı değer varsa ‘arg’ minimum değerler için ‘val’, karşılaşılan bu değerlerin ilki çıktıdır.
Örnek:
┌─user─────┬─salary─┐
│ director │ 5000 │
│ manager │ 3000 │
│ worker │ 1000 │
└──────────┴────────┘
SELECT argMin(user, salary) FROM salary
┌─argMin(user, salary)─┐
│ worker │
└──────────────────────┘
argMax (arg, val)
Hesaplar ‘arg’ maksimum değer ‘val’ değer. Birkaç farklı değer varsa ‘arg’ maksimum değerler için ‘val’, karşılaşılan bu değerlerin ilki çıktıdır.
s (um (x)
Toplamı hesaplar. Sadece sayılar için çalışır.
sumWithOverflow(x)
Giriş parametreleri için olduğu gibi sonuç için aynı veri türünü kullanarak sayıların toplamını hesaplar. Toplam bu veri türü için en büyük değeri aşarsa, işlev bir hata döndürür.
Sadece sayılar için çalışır.
sumMap (anahtar, değer), sumMap(Tuple (anahtar, değer))
Toplam thelar ‘value’ belirtilen tuş accordinglara göre dizi ‘key’ dizi. Anahtarları ve değerleri diziler dizi geçen anahtarları ve değerleri iki dizi geçen synonymical var. Eleman sayısı ‘key’ ve ‘value’ toplam her satır için aynı olmalıdır. Returns a tuple of two arrays: keys in sorted order, and values summed for the corresponding keys.
Örnek:
CREATE TABLE sum_map(
date Date,
timeslot DateTime,
statusMap Nested(
status UInt16,
requests UInt64
),
statusMapTuple Tuple(Array(Int32), Array(Int32))
) ENGINE = Log;
INSERT INTO sum_map VALUES
('2000-01-01', '2000-01-01 00:00:00', [1, 2, 3], [10, 10, 10], ([1, 2, 3], [10, 10, 10])),
('2000-01-01', '2000-01-01 00:00:00', [3, 4, 5], [10, 10, 10], ([3, 4, 5], [10, 10, 10])),
('2000-01-01', '2000-01-01 00:01:00', [4, 5, 6], [10, 10, 10], ([4, 5, 6], [10, 10, 10])),
('2000-01-01', '2000-01-01 00:01:00', [6, 7, 8], [10, 10, 10], ([6, 7, 8], [10, 10, 10]));
SELECT
timeslot,
sumMap(statusMap.status, statusMap.requests),
sumMap(statusMapTuple)
FROM sum_map
GROUP BY timeslot
┌────────────timeslot─┬─sumMap(statusMap.status, statusMap.requests)─┬─sumMap(statusMapTuple)─────────┐
│ 2000-01-01 00:00:00 │ ([1,2,3,4,5],[10,10,20,10,10]) │ ([1,2,3,4,5],[10,10,20,10,10]) │
│ 2000-01-01 00:01:00 │ ([4,5,6,7,8],[10,10,20,10,10]) │ ([4,5,6,7,8],[10,10,20,10,10]) │
└─────────────────────┴──────────────────────────────────────────────┴────────────────────────────────┘
skewPop
Hesaplar çarpıklık bir sıra.
skewPop(expr)
Parametre
expr
— İfade bir numara döndürüyor.
Döndürülen değer
The skewness of the given distribution. Type — Float64
Örnek
SELECT skewPop(value) FROM series_with_value_column
skewSamp
Hesaplar örnek çarpıklık bir sıra.
Bir rassal değişkenin çarpıklığının tarafsız bir tahminini temsil eder.
skewSamp(expr)
Parametre
expr
— İfade bir numara döndürüyor.
Döndürülen değer
The skewness of the given distribution. Type — Float64. Eğer n <= 1
(n
örnek boyutudur), daha sonra işlev döner nan
.
Örnek
SELECT skewSamp(value) FROM series_with_value_column
kurtPop
Hesaplar kurtosis bir sıra.
kurtPop(expr)
Parametre
expr
— İfade bir numara döndürüyor.
Döndürülen değer
The kurtosis of the given distribution. Type — Float64
Örnek
SELECT kurtPop(value) FROM series_with_value_column
kurtSamp
Hesaplar örnek kurtoz bir sıra.
Eğer geçen değerleri örnek oluşturur, eğer bir rassal değişken kurtosis tarafsız bir tahmini temsil eder.
kurtSamp(expr)
Parametre
expr
— İfade bir numara döndürüyor.
Döndürülen değer
The kurtosis of the given distribution. Type — Float64. Eğer n <= 1
(n
örnek bir boyutudur), daha sonra işlev döner nan
.
Örnek
SELECT kurtSamp(value) FROM series_with_value_column
timeSeriesGroupSum(uıd, zaman damgası, değer)
timeSeriesGroupSum
örnek zaman damgası değil hizalama farklı zaman serileri toplayabilir.
İki örnek zaman damgası arasında doğrusal enterpolasyon kullanacak ve daha sonra zaman serilerini birlikte toplayacaktır.
uid
zaman serisi benzersiz kimliği mi,UInt64
.timestamp
milisaniye veya mikrosaniye desteklemek için Int64 türüdür.value
metr .iktir.
İşlev, tuples dizisini döndürür (timestamp, aggregated_value)
çiftliler.
Bu işlevi kullanmadan önce emin olun timestamp
artan düzende.
Örnek:
┌─uid─┬─timestamp─┬─value─┐
│ 1 │ 2 │ 0.2 │
│ 1 │ 7 │ 0.7 │
│ 1 │ 12 │ 1.2 │
│ 1 │ 17 │ 1.7 │
│ 1 │ 25 │ 2.5 │
│ 2 │ 3 │ 0.6 │
│ 2 │ 8 │ 1.6 │
│ 2 │ 12 │ 2.4 │
│ 2 │ 18 │ 3.6 │
│ 2 │ 24 │ 4.8 │
└─────┴───────────┴───────┘
CREATE TABLE time_series(
uid UInt64,
timestamp Int64,
value Float64
) ENGINE = Memory;
INSERT INTO time_series VALUES
(1,2,0.2),(1,7,0.7),(1,12,1.2),(1,17,1.7),(1,25,2.5),
(2,3,0.6),(2,8,1.6),(2,12,2.4),(2,18,3.6),(2,24,4.8);
SELECT timeSeriesGroupSum(uid, timestamp, value)
FROM (
SELECT * FROM time_series order by timestamp ASC
);
Ve sonuç olacak:
[(2,0.2),(3,0.9),(7,2.1),(8,2.4),(12,3.6),(17,5.1),(18,5.4),(24,7.2),(25,2.5)]
timeSeriesGroupRateSum(uıd, ts, val)
Benzer şekilde timeSeriesGroupSum
, timeSeriesGroupRateSum
zaman serilerinin oranını hesaplar ve daha sonra toplam oranları birlikte hesaplar.
Ayrıca, bu işlevi kullanmadan önce zaman damgası yükseliş sırasına göre olmalıdır.
Bu fonksiyon dataun ver theiye uygulanması timeSeriesGroupSum
örnek, aşağıdaki sonucu alırsınız:
[(2,0),(3,0.1),(7,0.3),(8,0.3),(12,0.3),(17,0.3),(18,0.3),(24,0.3),(25,0.1)]
avg (x)
Ortalama hesaplar. Sadece sayılar için çalışır. Sonuç Her zaman Float64.
avgWeighted
Hesaplar ağırlıklı aritmetik ortalama.
Sözdizimi
avgWeighted(x, weight)
Parametre
x
— Values. Tamsayı veya kayan nokta.weight
— Weights of the values. Tamsayı veya kayan nokta.
Türü x
ve weight
aynı olmalıdır.
Döndürülen değer
- Ağırlıklı ortalama.
NaN
. Tüm ağırlıklar 0'a eşitse.
Tür: Float64.
Örnek
Sorgu:
SELECT avgWeighted(x, w)
FROM values('x Int8, w Int8', (4, 1), (1, 0), (10, 2))
Sonuç:
┌─avgWeighted(x, weight)─┐
│ 8 │
└────────────────────────┘
uniq
Bağımsız değişken farklı değerlerin yaklaşık sayısını hesaplar.
uniq(x[, ...])
Parametre
Fonksiyon değişken sayıda parametre alır. Parametreler olabilir Tuple
, Array
, Date
, DateTime
, String
veya sayısal türleri.
Döndürülen değer
- A Uİnt64- tip numarası.
Uygulama Detayları
İşlev:
-
Toplamdaki tüm parametreler için bir karma hesaplar, daha sonra hesaplamalarda kullanır.
-
Bir adaptif örnekleme algoritması kullanır. Hesaplama durumu için işlev, 65536'ya kadar öğe karma değerlerinin bir örneğini kullanır.
This algorithm is very accurate and very efficient on the CPU. When the query contains several of these functions, using `uniq` is almost as fast as using other aggregate functions.
-
Sonucu deterministically sağlar (sorgu işleme sırasına bağlı değildir).
Bu işlevi hemen hemen tüm senaryolarda kullanmanızı öneririz.
Ayrıca Bakınız
uniqCombined
Farklı bağımsız değişken değerlerinin yaklaşık sayısını hesaplar.
uniqCombined(HLL_precision)(x[, ...])
Bu uniqCombined
fonksiyon, farklı değerlerin sayısını hesaplamak için iyi bir seçimdir.
Parametre
Fonksiyon değişken sayıda parametre alır. Parametreler olabilir Tuple
, Array
, Date
, DateTime
, String
veya sayısal türleri.
HLL_precision
hücre sayısının baz-2 logaritmasıdır. HyperLogLog. İsteğe bağlı olarak işlevi kullanabilirsiniz uniqCombined(x[, ...])
. İçin varsayılan değer HLL_precision
etkin bir şekilde 96 KiB alan olan 17'dir (2^17 hücre, her biri 6 bit).
Döndürülen değer
- Numara Uİnt64- tip numarası.
Uygulama Detayları
İşlev:
-
Bir karma hesaplar (64-bit karma için
String
ve 32-bit aksi halde) agregadaki tüm parametreler için, hesaplamalarda kullanır. -
Bir hata düzeltme tablosu ile dizi, karma tablo ve HyperLogLog: üç algoritmaları bir arada kullanır.
For a small number of distinct elements, an array is used. When the set size is larger, a hash table is used. For a larger number of elements, HyperLogLog is used, which will occupy a fixed amount of memory.
-
Sonucu deterministically sağlar (sorgu işleme sırasına bağlı değildir).
!!! note "Not"
Olmayan için 32-bit karma kullandığından-String
tipi, sonuç cardinalities önemli ölçüde daha büyük için çok yüksek hata olacak UINT_MAX
(birkaç on milyarlarca farklı değerden sonra hata hızla artacaktır), bu durumda kullanmanız gerekir uniqCombined64
İle karşılaştırıldığında uniq fonksiyonu, uniqCombined
:
- Birkaç kez daha az bellek tüketir.
- Birkaç kat daha yüksek doğrulukla hesaplar.
- Genellikle biraz daha düşük performansa sahiptir. Bazı senaryolarda,
uniqCombined
daha iyi performans gösterebiliruniq
örneğin, ağ üzerinden çok sayıda toplama durumu ileten dağıtılmış sorgularla.
Ayrıca Bakınız
uniqCombined64
Aynı olarak uniqCombined, ancak tüm veri türleri için 64 bit karma kullanır.
uniqHLL12
Farklı argüman değerlerinin yaklaşık sayısını hesaplar HyperLogLog algoritma.
uniqHLL12(x[, ...])
Parametre
Fonksiyon değişken sayıda parametre alır. Parametreler olabilir Tuple
, Array
, Date
, DateTime
, String
veya sayısal türleri.
Döndürülen değer
- A Uİnt64- tip numarası.
Uygulama Detayları
İşlev:
-
Toplamdaki tüm parametreler için bir karma hesaplar, daha sonra hesaplamalarda kullanır.
-
Farklı bağımsız değişken değerlerinin sayısını yaklaştırmak için HyperLogLog algoritmasını kullanır.
212 5-bit cells are used. The size of the state is slightly more than 2.5 KB. The result is not very accurate (up to ~10% error) for small data sets (<10K elements). However, the result is fairly accurate for high-cardinality data sets (10K-100M), with a maximum error of ~1.6%. Starting from 100M, the estimation error increases, and the function will return very inaccurate results for data sets with extremely high cardinality (1B+ elements).
-
Belirli sonucu sağlar (sorgu işleme sırasına bağlı değildir).
Bu işlevi kullanmanızı önermiyoruz. Çoğu durumda, kullan uniq veya uniqCombined İşlev.
Ayrıca Bakınız
uniqExact
Farklı bağımsız değişken değerlerinin tam sayısını hesaplar.
uniqExact(x[, ...])
Kullan... uniqExact
kesinlikle kesin bir sonuca ihtiyacınız varsa işlev. Aksi takdirde kullanın uniq İşlev.
Bu uniqExact
fonksiyonu daha fazla bellek kullanır uniq
, çünkü farklı değerlerin sayısı arttıkça devletin büyüklüğü sınırsız büyümeye sahiptir.
Parametre
Fonksiyon değişken sayıda parametre alır. Parametreler olabilir Tuple
, Array
, Date
, DateTime
, String
veya sayısal türleri.
Ayrıca Bakınız
groupArray (x), groupArray (max_size)(x)
Bağımsız değişken değerleri dizisi oluşturur. Değerler diziye herhangi bir (belirsiz) sırayla eklenebilir.
İkinci versiyonu (ile max_size
parametre), elde edilen dizinin boyutunu sınırlar max_size
öğeler.
Mesela, groupArray (1) (x)
eşdeğ toer equivalentdir [any (x)]
.
Bazı durumlarda, hala yürütme sırasına güvenebilirsiniz. Bu, aşağıdaki durumlar için geçerlidir SELECT
kullanan bir alt sorgudan gelir ORDER BY
.
grouparrayınsertat
Belirtilen konumda diziye bir değer ekler.
Sözdizimi
groupArrayInsertAt(default_x, size)(x, pos);
Bir sorguda aynı konuma birkaç değer eklenirse, işlev aşağıdaki şekillerde davranır:
- Bir sorgu tek bir iş parçacığında yürütülürse, eklenen değerlerden ilki kullanılır.
- Bir sorgu birden çok iş parçacığında yürütülürse, ortaya çıkan değer, eklenen değerlerden belirsiz bir değerdir.
Parametre
x
— Value to be inserted. İfade biri sonuçta desteklenen veri türleri.pos
— Position at which the specified elementx
eklen .ecektir. Dizideki dizin numaralandırma sıfırdan başlar. Uİnt32.default_x
— Default value for substituting in empty positions. Optional parameter. İfade için yapılandırılmış veri türü ile sonuçlananx
parametre. Eğerdefault_x
tanımlan ,mamıştır, varsayılan değerler kullanılır.size
— Length of the resulting array. Optional parameter. When using this parameter, the default valuedefault_x
belirt .ilmelidir. Uİnt32.
Döndürülen değer
- Eklenen değerlerle dizi.
Tür: Dizi.
Örnek
Sorgu:
SELECT groupArrayInsertAt(toString(number), number * 2) FROM numbers(5);
Sonuç:
┌─groupArrayInsertAt(toString(number), multiply(number, 2))─┐
│ ['0','','1','','2','','3','','4'] │
└───────────────────────────────────────────────────────────┘
Sorgu:
SELECT groupArrayInsertAt('-')(toString(number), number * 2) FROM numbers(5);
Sonuç:
┌─groupArrayInsertAt('-')(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2','-','3','-','4'] │
└────────────────────────────────────────────────────────────────┘
Sorgu:
SELECT groupArrayInsertAt('-', 5)(toString(number), number * 2) FROM numbers(5);
Sonuç:
┌─groupArrayInsertAt('-', 5)(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2'] │
└───────────────────────────────────────────────────────────────────┘
Elemanların tek bir konuma çok dişli yerleştirilmesi.
Sorgu:
SELECT groupArrayInsertAt(number, 0) FROM numbers_mt(10) SETTINGS max_block_size = 1;
Bu sorgu sonucunda rastgele tamsayı elde edersiniz [0,9]
Aralık. Mesela:
┌─groupArrayInsertAt(number, 0)─┐
│ [7] │
└───────────────────────────────┘
groupArrayMovingSum
Giriş değerlerinin hareketli toplamını hesaplar.
groupArrayMovingSum(numbers_for_summing)
groupArrayMovingSum(window_size)(numbers_for_summing)
İşlev, pencere boyutunu bir parametre olarak alabilir. Belirtilmemiş bırakılırsa, işlev, sütundaki satır sayısına eşit pencere boyutunu alır.
Parametre
numbers_for_summing
— İfade sayısal veri türü değeri ile sonuçlanır.window_size
— Size of the calculation window.
Döndürülen değerler
- Giriş verileri ile aynı boyut ve türdeki dizi.
Örnek
Örnek tablo:
CREATE TABLE t
(
`int` UInt8,
`float` Float32,
`dec` Decimal32(2)
)
ENGINE = TinyLog
┌─int─┬─float─┬──dec─┐
│ 1 │ 1.1 │ 1.10 │
│ 2 │ 2.2 │ 2.20 │
│ 4 │ 4.4 │ 4.40 │
│ 7 │ 7.77 │ 7.77 │
└─────┴───────┴──────┘
Sorgu:
SELECT
groupArrayMovingSum(int) AS I,
groupArrayMovingSum(float) AS F,
groupArrayMovingSum(dec) AS D
FROM t
┌─I──────────┬─F───────────────────────────────┬─D──────────────────────┐
│ [1,3,7,14] │ [1.1,3.3000002,7.7000003,15.47] │ [1.10,3.30,7.70,15.47] │
└────────────┴─────────────────────────────────┴────────────────────────┘
SELECT
groupArrayMovingSum(2)(int) AS I,
groupArrayMovingSum(2)(float) AS F,
groupArrayMovingSum(2)(dec) AS D
FROM t
┌─I──────────┬─F───────────────────────────────┬─D──────────────────────┐
│ [1,3,6,11] │ [1.1,3.3000002,6.6000004,12.17] │ [1.10,3.30,6.60,12.17] │
└────────────┴─────────────────────────────────┴────────────────────────┘
groupArrayMovingAvg
Giriş değerlerinin hareketli ortalamasını hesaplar.
groupArrayMovingAvg(numbers_for_summing)
groupArrayMovingAvg(window_size)(numbers_for_summing)
İşlev, pencere boyutunu bir parametre olarak alabilir. Belirtilmemiş bırakılırsa, işlev, sütundaki satır sayısına eşit pencere boyutunu alır.
Parametre
numbers_for_summing
— İfade sayısal veri türü değeri ile sonuçlanır.window_size
— Size of the calculation window.
Döndürülen değerler
- Giriş verileri ile aynı boyut ve türdeki dizi.
İşlev kullanır sıfıra doğru yuvarlama. Sonuç veri türü için önemsiz ondalık basamaklar keser.
Örnek
Örnek tablo b
:
CREATE TABLE t
(
`int` UInt8,
`float` Float32,
`dec` Decimal32(2)
)
ENGINE = TinyLog
┌─int─┬─float─┬──dec─┐
│ 1 │ 1.1 │ 1.10 │
│ 2 │ 2.2 │ 2.20 │
│ 4 │ 4.4 │ 4.40 │
│ 7 │ 7.77 │ 7.77 │
└─────┴───────┴──────┘
Sorgu:
SELECT
groupArrayMovingAvg(int) AS I,
groupArrayMovingAvg(float) AS F,
groupArrayMovingAvg(dec) AS D
FROM t
┌─I─────────┬─F───────────────────────────────────┬─D─────────────────────┐
│ [0,0,1,3] │ [0.275,0.82500005,1.9250001,3.8675] │ [0.27,0.82,1.92,3.86] │
└───────────┴─────────────────────────────────────┴───────────────────────┘
SELECT
groupArrayMovingAvg(2)(int) AS I,
groupArrayMovingAvg(2)(float) AS F,
groupArrayMovingAvg(2)(dec) AS D
FROM t
┌─I─────────┬─F────────────────────────────────┬─D─────────────────────┐
│ [0,1,3,5] │ [0.55,1.6500001,3.3000002,6.085] │ [0.55,1.65,3.30,6.08] │
└───────────┴──────────────────────────────────┴───────────────────────┘
groupUniqArray (x), groupUniqArray (max_size)(x)
Farklı bağımsız değişken değerlerinden bir dizi oluşturur. Bellek tüketimi için aynıdır uniqExact
İşlev.
İkinci versiyonu (ile max_size
parametre), elde edilen dizinin boyutunu sınırlar max_size
öğeler.
Mesela, groupUniqArray(1)(x)
eşdeğ toer equivalentdir [any(x)]
.
quantile
Yaklaşık hesaplar quantile sayısal veri dizisinin.
Bu işlev geçerlidir rezerv reservoiruar örnek samplinglemesi 8192'ye kadar bir rezervuar boyutu ve örnekleme için rastgele sayı üreteci ile. Sonuç deterministik değildir. Tam bir miktar elde etmek için quantileExact İşlev.
Çoklu kullanırken quantile*
bir sorguda farklı düzeylerde işlevler, iç durumları birleştirilmez (diğer bir deyişle, sorgu olabilir daha az verimli çalışır). Bu durumda, kullan quantiles İşlev.
Sözdizimi
quantile(level)(expr)
Takma ad: median
.
Parametre
level
— Level of quantile. Optional parameter. Constant floating-point number from 0 to 1. We recommend using alevel
aralığında değer[0.01, 0.99]
. Varsayılan değer: 0.5. Yanındalevel=0.5
fonksiyon hesaplar medyan.expr
— Expression over the column values resulting in numeric veri türleri, Tarihli veya DateTime.
Döndürülen değer
- Belirtilen seviyenin yaklaşık miktarı.
Tür:
- Float64 sayısal veri türü girişi için.
- Tarihli giriş değerleri varsa
Date
tür. - DateTime giriş değerleri varsa
DateTime
tür.
Örnek
Giriş tablosu:
┌─val─┐
│ 1 │
│ 1 │
│ 2 │
│ 3 │
└─────┘
Sorgu:
SELECT quantile(val) FROM t
Sonuç:
┌─quantile(val)─┐
│ 1.5 │
└───────────────┘
Ayrıca Bakınız
quantileDeterministic
Yaklaşık hesaplar quantile sayısal veri dizisinin.
Bu işlev geçerlidir rezerv reservoiruar örnek samplinglemesi 8192'ye kadar bir rezervuar boyutu ve örnekleme deterministik algoritması ile. Sonuç deterministiktir. Tam bir miktar elde etmek için quantileExact İşlev.
Çoklu kullanırken quantile*
bir sorguda farklı düzeylerde işlevler, iç durumları birleştirilmez (diğer bir deyişle, sorgu olabilir daha az verimli çalışır). Bu durumda, kullan quantiles İşlev.
Sözdizimi
quantileDeterministic(level)(expr, determinator)
Takma ad: medianDeterministic
.
Parametre
level
— Level of quantile. Optional parameter. Constant floating-point number from 0 to 1. We recommend using alevel
aralığında değer[0.01, 0.99]
. Varsayılan değer: 0.5. Yanındalevel=0.5
fonksiyon hesaplar medyan.expr
— Expression over the column values resulting in numeric veri türleri, Tarihli veya DateTime.determinator
— Number whose hash is used instead of a random number generator in the reservoir sampling algorithm to make the result of sampling deterministic. As a determinator you can use any deterministic positive number, for example, a user id or an event id. If the same determinator value occures too often, the function works incorrectly.
Döndürülen değer
- Belirtilen seviyenin yaklaşık miktarı.
Tür:
- Float64 sayısal veri türü girişi için.
- Tarihli giriş değerleri varsa
Date
tür. - DateTime giriş değerleri varsa
DateTime
tür.
Örnek
Giriş tablosu:
┌─val─┐
│ 1 │
│ 1 │
│ 2 │
│ 3 │
└─────┘
Sorgu:
SELECT quantileDeterministic(val, 1) FROM t
Sonuç:
┌─quantileDeterministic(val, 1)─┐
│ 1.5 │
└───────────────────────────────┘
Ayrıca Bakınız
quantileExact
Tam olarak hesaplar quantile sayısal veri dizisinin.
To get exact value, all the passed values are combined into an array, which is then partially sorted. Therefore, the function consumes O(n)
bellek, nerede n
geçirilen değerler say .ısıdır. Bununla birlikte, az sayıda değer için, işlev çok etkilidir.
Çoklu kullanırken quantile*
bir sorguda farklı düzeylerde işlevler, iç durumları birleştirilmez (diğer bir deyişle, sorgu olabilir daha az verimli çalışır). Bu durumda, kullan quantiles İşlev.
Sözdizimi
quantileExact(level)(expr)
Takma ad: medianExact
.
Parametre
level
— Level of quantile. Optional parameter. Constant floating-point number from 0 to 1. We recommend using alevel
aralığında değer[0.01, 0.99]
. Varsayılan değer: 0.5. Yanındalevel=0.5
fonksiyon hesaplar medyan.expr
— Expression over the column values resulting in numeric veri türleri, Tarihli veya DateTime.
Döndürülen değer
- Belirtilen seviyenin miktarı.
Tür:
- Float64 sayısal veri türü girişi için.
- Tarihli giriş değerleri varsa
Date
tür. - DateTime giriş değerleri varsa
DateTime
tür.
Örnek
Sorgu:
SELECT quantileExact(number) FROM numbers(10)
Sonuç:
┌─quantileExact(number)─┐
│ 5 │
└───────────────────────┘
Ayrıca Bakınız
quantilexactweighted
Tam olarak hesaplar quantile her elemanın ağırlığını dikkate alarak sayısal bir veri dizisinin.
To get exact value, all the passed values are combined into an array, which is then partially sorted. Each value is counted with its weight, as if it is present weight
times. A hash table is used in the algorithm. Because of this, if the passed values are frequently repeated, the function consumes less RAM than quantileExact. Bunun yerine bu işlevi kullanabilirsiniz quantileExact
ve 1 ağırlığını belirtin.
Çoklu kullanırken quantile*
bir sorguda farklı düzeylerde işlevler, iç durumları birleştirilmez (diğer bir deyişle, sorgu olabilir daha az verimli çalışır). Bu durumda, kullan quantiles İşlev.
Sözdizimi
quantileExactWeighted(level)(expr, weight)
Takma ad: medianExactWeighted
.
Parametre
level
— Level of quantile. Optional parameter. Constant floating-point number from 0 to 1. We recommend using alevel
aralığında değer[0.01, 0.99]
. Varsayılan değer: 0.5. Yanındalevel=0.5
fonksiyon hesaplar medyan.expr
— Expression over the column values resulting in numeric veri türleri, Tarihli veya DateTime.weight
— Column with weights of sequence members. Weight is a number of value occurrences.
Döndürülen değer
- Belirtilen seviyenin miktarı.
Tür:
- Float64 sayısal veri türü girişi için.
- Tarihli giriş değerleri varsa
Date
tür. - DateTime giriş değerleri varsa
DateTime
tür.
Örnek
Giriş tablosu:
┌─n─┬─val─┐
│ 0 │ 3 │
│ 1 │ 2 │
│ 2 │ 1 │
│ 5 │ 4 │
└───┴─────┘
Sorgu:
SELECT quantileExactWeighted(n, val) FROM t
Sonuç:
┌─quantileExactWeighted(n, val)─┐
│ 1 │
└───────────────────────────────┘
Ayrıca Bakınız
quantileTiming
Belirlenen hassas hesaplar ile quantile sayısal veri dizisinin.
Sonuç deterministiktir (sorgu işleme sırasına bağlı değildir). Fonksiyon yükleme web sayfaları kez veya arka uç yanıt süreleri gibi dağılımları tanımlamak dizileri ile çalışmak için optimize edilmiştir.
Çoklu kullanırken quantile*
bir sorguda farklı düzeylerde işlevler, iç durumları birleştirilmez (diğer bir deyişle, sorgu olabilir daha az verimli çalışır). Bu durumda, kullan quantiles İşlev.
Sözdizimi
quantileTiming(level)(expr)
Takma ad: medianTiming
.
Parametre
-
level
— Level of quantile. Optional parameter. Constant floating-point number from 0 to 1. We recommend using alevel
aralığında değer[0.01, 0.99]
. Varsayılan değer: 0.5. Yanındalevel=0.5
fonksiyon hesaplar medyan. -
expr
— İfade bir sütun değerleri üzerinde dönen bir Yüzdürmek*- tip numarası.- If negative values are passed to the function, the behavior is undefined. - If the value is greater than 30,000 (a page loading time of more than 30 seconds), it is assumed to be 30,000.
Doğruluk
Hesaplama doğru ise:
- Toplam değer sayısı 5670'i geçmez.
- Toplam değer sayısı 5670'i aşıyor, ancak sayfa yükleme süresi 1024 ms'den az.
Aksi takdirde, hesaplamanın sonucu 16 MS'nin en yakın katlarına yuvarlanır.
!!! note "Not" Sayfa yükleme süresi nicelerini hesaplamak için, bu işlev daha etkili ve doğrudur quantile.
Döndürülen değer
- Belirtilen seviyenin miktarı.
Tür: Float32
.
!!! note "Not"
İşlev valuese hiçbir değer geçir (ilmem (işse (kullanırken quantileTimingIf
), Nine döndürülür. Bunun amacı, bu vakaları sıfır ile sonuçlanan vakalardan ayırmaktır. Görmek ORDER BY FLA BYGE sıralama ile ilgili notlar için NaN
değerler.
Örnek
Giriş tablosu:
┌─response_time─┐
│ 72 │
│ 112 │
│ 126 │
│ 145 │
│ 104 │
│ 242 │
│ 313 │
│ 168 │
│ 108 │
└───────────────┘
Sorgu:
SELECT quantileTiming(response_time) FROM t
Sonuç:
┌─quantileTiming(response_time)─┐
│ 126 │
└───────────────────────────────┘
Ayrıca Bakınız
niceletimingweighted
Belirlenen hassas hesaplar ile quantile her sıra üyesi ağırlığına göre sayısal veri dizisi.
Sonuç deterministiktir (sorgu işleme sırasına bağlı değildir). Fonksiyon yükleme web sayfaları kez veya arka uç yanıt süreleri gibi dağılımları tanımlamak dizileri ile çalışmak için optimize edilmiştir.
Çoklu kullanırken quantile*
bir sorguda farklı düzeylerde işlevler, iç durumları birleştirilmez (diğer bir deyişle, sorgu olabilir daha az verimli çalışır). Bu durumda, kullan quantiles İşlev.
Sözdizimi
quantileTimingWeighted(level)(expr, weight)
Takma ad: medianTimingWeighted
.
Parametre
-
level
— Level of quantile. Optional parameter. Constant floating-point number from 0 to 1. We recommend using alevel
aralığında değer[0.01, 0.99]
. Varsayılan değer: 0.5. Yanındalevel=0.5
fonksiyon hesaplar medyan. -
expr
— İfade bir sütun değerleri üzerinde dönen bir Yüzdürmek*- tip numarası.- If negative values are passed to the function, the behavior is undefined. - If the value is greater than 30,000 (a page loading time of more than 30 seconds), it is assumed to be 30,000.
-
weight
— Column with weights of sequence elements. Weight is a number of value occurrences.
Doğruluk
Hesaplama doğru ise:
- Toplam değer sayısı 5670'i geçmez.
- Toplam değer sayısı 5670'i aşıyor, ancak sayfa yükleme süresi 1024 ms'den az.
Aksi takdirde, hesaplamanın sonucu 16 MS'nin en yakın katlarına yuvarlanır.
!!! note "Not" Sayfa yükleme süresi nicelerini hesaplamak için, bu işlev daha etkili ve doğrudur quantile.
Döndürülen değer
- Belirtilen seviyenin miktarı.
Tür: Float32
.
!!! note "Not"
İşlev valuese hiçbir değer geçir (ilmem (işse (kullanırken quantileTimingIf
), Nine döndürülür. Bunun amacı, bu vakaları sıfır ile sonuçlanan vakalardan ayırmaktır. Görmek ORDER BY FLA BYGE sıralama ile ilgili notlar için NaN
değerler.
Örnek
Giriş tablosu:
┌─response_time─┬─weight─┐
│ 68 │ 1 │
│ 104 │ 2 │
│ 112 │ 3 │
│ 126 │ 2 │
│ 138 │ 1 │
│ 162 │ 1 │
└───────────────┴────────┘
Sorgu:
SELECT quantileTimingWeighted(response_time, weight) FROM t
Sonuç:
┌─quantileTimingWeighted(response_time, weight)─┐
│ 112 │
└───────────────────────────────────────────────┘
Ayrıca Bakınız
quantileTDigest
Yaklaşık hesaplar quantile kullanarak sayısal veri diz ofisinin t-dig -est algoritma.
Maksimum hata %1'dir. Bellek tüketimi log(n)
, nere n
değer say isısıdır. Sonuç, sorguyu çalıştırma sırasına bağlıdır ve nondeterministic.
Fonksiyonun performansı, performanstan daha düşüktür quantile veya quantileTiming. Durum boyutunun hassasiyete oranı açısından, bu işlev çok daha iyidir quantile
.
Çoklu kullanırken quantile*
bir sorguda farklı düzeylerde işlevler, iç durumları birleştirilmez (diğer bir deyişle, sorgu olabilir daha az verimli çalışır). Bu durumda, kullan quantiles İşlev.
Sözdizimi
quantileTDigest(level)(expr)
Takma ad: medianTDigest
.
Parametre
level
— Level of quantile. Optional parameter. Constant floating-point number from 0 to 1. We recommend using alevel
aralığında değer[0.01, 0.99]
. Varsayılan değer: 0.5. Yanındalevel=0.5
fonksiyon hesaplar medyan.expr
— Expression over the column values resulting in numeric veri türleri, Tarihli veya DateTime.
Döndürülen değer
- Belirtilen seviyenin yaklaşık miktarı.
Tür:
- Float64 sayısal veri türü girişi için.
- Tarihli giriş değerleri varsa
Date
tür. - DateTime giriş değerleri varsa
DateTime
tür.
Örnek
Sorgu:
SELECT quantileTDigest(number) FROM numbers(10)
Sonuç:
┌─quantileTDigest(number)─┐
│ 4.5 │
└─────────────────────────┘
Ayrıca Bakınız
quantileTDigestWeighted
Yaklaşık hesaplar quantile kullanarak sayısal veri diz ofisinin t-dig -est algoritma. İşlev, her sıra üyesinin ağırlığını dikkate alır. Maksimum hata %1'dir. Bellek tüketimi log(n)
, nere n
değer say isısıdır.
Fonksiyonun performansı, performanstan daha düşüktür quantile veya quantileTiming. Durum boyutunun hassasiyete oranı açısından, bu işlev çok daha iyidir quantile
.
Sonuç, sorguyu çalıştırma sırasına bağlıdır ve nondeterministic.
Çoklu kullanırken quantile*
bir sorguda farklı düzeylerde işlevler, iç durumları birleştirilmez (diğer bir deyişle, sorgu olabilir daha az verimli çalışır). Bu durumda, kullan quantiles İşlev.
Sözdizimi
quantileTDigest(level)(expr)
Takma ad: medianTDigest
.
Parametre
level
— Level of quantile. Optional parameter. Constant floating-point number from 0 to 1. We recommend using alevel
aralığında değer[0.01, 0.99]
. Varsayılan değer: 0.5. Yanındalevel=0.5
fonksiyon hesaplar medyan.expr
— Expression over the column values resulting in numeric veri türleri, Tarihli veya DateTime.weight
— Column with weights of sequence elements. Weight is a number of value occurrences.
Döndürülen değer
- Belirtilen seviyenin yaklaşık miktarı.
Tür:
- Float64 sayısal veri türü girişi için.
- Tarihli giriş değerleri varsa
Date
tür. - DateTime giriş değerleri varsa
DateTime
tür.
Örnek
Sorgu:
SELECT quantileTDigestWeighted(number, 1) FROM numbers(10)
Sonuç:
┌─quantileTDigestWeighted(number, 1)─┐
│ 4.5 │
└────────────────────────────────────┘
Ayrıca Bakınız
medyan
Bu median*
fonksiyonlar karşılık gelen takma adlardır quantile*
işlevler. Sayısal bir veri örneğinin medyanını hesaplarlar.
İşlevler:
median
— Alias for quantile.medianDeterministic
— Alias for quantileDeterministic.medianExact
— Alias for quantileExact.medianExactWeighted
— Alias for quantilexactweighted.medianTiming
— Alias for quantileTiming.medianTimingWeighted
— Alias for niceletimingweighted.medianTDigest
— Alias for quantileTDigest.medianTDigestWeighted
— Alias for quantileTDigestWeighted.
Örnek
Giriş tablosu:
┌─val─┐
│ 1 │
│ 1 │
│ 2 │
│ 3 │
└─────┘
Sorgu:
SELECT medianDeterministic(val, 1) FROM t
Sonuç:
┌─medianDeterministic(val, 1)─┐
│ 1.5 │
└─────────────────────────────┘
quantiles(level1, level2, …)(x)
Tüm quantile fonksiyonları da karşılık gelen quantile fonksiyonlarına sahiptir: quantiles
, quantilesDeterministic
, quantilesTiming
, quantilesTimingWeighted
, quantilesExact
, quantilesExactWeighted
, quantilesTDigest
. Bu işlevler, listelenen seviyelerin tüm nicelerini tek geçişte hesaplar ve elde edilen değerlerin bir dizisini döndürür.
varSamp (x)
Miktarı hesaplar Σ((x - x̅)^2) / (n - 1)
, nere n
örneklem büyüklüğü ve x̅
ortalama değer isidir x
.
Bir rassal değişkenin varyansının tarafsız bir tahminini temsil eder, eğer geçirilen değerler numunesini oluşturursa.
Dönüşler Float64
. Ne zaman n <= 1
, dönüşler +∞
.
!!! note "Not"
Bu işlev sayısal olarak kararsız algoritma kullanır. İhtiyacınız varsa sayısal kararlılık hesaplamalarda kullan varSampStable
İşlev. Daha yavaş çalışır, ancak daha düşük hesaplama hatası sağlar.
varPop (x)
Miktarı hesaplar Σ((x - x̅)^2) / n
, nere n
örneklem büyüklüğü ve x̅
ortalama değer isidir x
.
Başka bir deyişle, bir dizi değer için dağılım. Dönüşler Float64
.
!!! note "Not"
Bu işlev sayısal olarak kararsız algoritma kullanır. İhtiyacınız varsa sayısal kararlılık hesaplamalarda kullan varPopStable
İşlev. Daha yavaş çalışır, ancak daha düşük hesaplama hatası sağlar.
stddevSamp(x)
Sonuç kareköküne eşittir varSamp(x)
.
!!! note "Not"
Bu işlev sayısal olarak kararsız algoritma kullanır. İhtiyacınız varsa sayısal kararlılık hesaplamalarda kullan stddevSampStable
İşlev. Daha yavaş çalışır, ancak daha düşük hesaplama hatası sağlar.
stddevPop(x)
Sonuç kareköküne eşittir varPop(x)
.
!!! note "Not"
Bu işlev sayısal olarak kararsız algoritma kullanır. İhtiyacınız varsa sayısal kararlılık hesaplamalarda kullan stddevPopStable
İşlev. Daha yavaş çalışır, ancak daha düşük hesaplama hatası sağlar.
topK (N) (x)
Belirtilen sütundaki yaklaşık en sık değerleri bir dizi döndürür. Elde edilen dizi, değerlerin yaklaşık frekansının azalan sırasına göre sıralanır (değerlerin kendileri tarafından değil).
Uygular Filtrelenmiş Yerden Tasarruf TopK analiz etmek için algoritma, azaltmak ve birleştirmek algoritması dayalı Paralel Alan Tasarrufu.
topK(N)(column)
Bu işlev garantili bir sonuç sağlamaz. Bazı durumlarda, hatalar oluşabilir ve en sık kullanılan değerler olmayan sık değerler döndürebilir.
Biz kullanmanızı öneririz N < 10
değer; performans büyük ile azalır N
değerler. Maksimum değeri N = 65536
.
Parametre
- ‘N’ dönmek için Öğe sayısıdır.
Parametre atlanırsa, varsayılan değer 10 kullanılır.
Değişkenler
- ' x ' – The value to calculate frequency.
Örnek
Tak thee the OnTime veri kümesi ve üç en sık oluşan değerleri seçin AirlineID
sütun.
SELECT topK(3)(AirlineID) AS res
FROM ontime
┌─res─────────────────┐
│ [19393,19790,19805] │
└─────────────────────┘
topKWeighted
Benzer topK
ancak tamsayı türünde bir ek argüman alır - weight
. Her değer muhasebeleştirilir weight
frekans hesaplaması için zamanlar.
Sözdizimi
topKWeighted(N)(x, weight)
Parametre
N
— The number of elements to return.
Değişkenler
x
– The value.weight
— The weight. Uİnt8.
Döndürülen değer
Maksimum yaklaşık ağırlık toplamına sahip değerlerin bir dizisini döndürür.
Örnek
Sorgu:
SELECT topKWeighted(10)(number, number) FROM numbers(1000)
Sonuç:
┌─topKWeighted(10)(number, number)──────────┐
│ [999,998,997,996,995,994,993,992,991,990] │
└───────────────────────────────────────────┘
covarSamp(x, y)
Değerini hesaplar Σ((x - x̅)(y - y̅)) / (n - 1)
.
Float64 Döndürür. Ne zaman n <= 1
, returns +∞.
!!! note "Not"
Bu işlev sayısal olarak kararsız algoritma kullanır. İhtiyacınız varsa sayısal kararlılık hesaplamalarda kullan covarSampStable
İşlev. Daha yavaş çalışır, ancak daha düşük hesaplama hatası sağlar.
covarPop (x, y)
Değerini hesaplar Σ((x - x̅)(y - y̅)) / n
.
!!! note "Not"
Bu işlev sayısal olarak kararsız algoritma kullanır. İhtiyacınız varsa sayısal kararlılık hesaplamalarda kullan covarPopStable
İşlev. Daha yavaş çalışır, ancak daha düşük bir hesaplama hatası sağlar.
corr(x, y)
Pearson korelasyon katsayısını hesaplar: Σ((x - x̅)(y - y̅)) / sqrt(Σ((x - x̅)^2) * Σ((y - y̅)^2))
.
!!! note "Not"
Bu işlev sayısal olarak kararsız algoritma kullanır. İhtiyacınız varsa sayısal kararlılık hesaplamalarda kullan corrStable
İşlev. Daha yavaş çalışır, ancak daha düşük hesaplama hatası sağlar.
categoricalınformationvalue
Değerini hesaplar (P(tag = 1) - P(tag = 0))(log(P(tag = 1)) - log(P(tag = 0)))
her kategori için.
categoricalInformationValue(category1, category2, ..., tag)
Sonuç, ayrık (kategorik) bir özelliğin nasıl olduğunu gösterir [category1, category2, ...]
değerini öngör aen bir öğrenme modeline katkıda tag
.
simpleLinearRegression
Basit (tek boyutlu) doğrusal regresyon gerçekleştirir.
simpleLinearRegression(x, y)
Parametre:
x
— Column with dependent variable values.y
— Column with explanatory variable values.
Döndürülen değerler:
Devamlılar (a, b)
ortaya çıkan hat linetın y = a*x + b
.
Örnekler
SELECT arrayReduce('simpleLinearRegression', [0, 1, 2, 3], [0, 1, 2, 3])
┌─arrayReduce('simpleLinearRegression', [0, 1, 2, 3], [0, 1, 2, 3])─┐
│ (1,0) │
└───────────────────────────────────────────────────────────────────┘
SELECT arrayReduce('simpleLinearRegression', [0, 1, 2, 3], [3, 4, 5, 6])
┌─arrayReduce('simpleLinearRegression', [0, 1, 2, 3], [3, 4, 5, 6])─┐
│ (1,3) │
└───────────────────────────────────────────────────────────────────┘
stokastiklinearregression
Bu fonksiyon stokastik doğrusal regresyon uygular. Öğrenme oranı, L2 regularization katsayısı, mini-batch boyutu için özel parametreleri destekler ve ağırlıkları güncellemek için birkaç yöntem vardır (Adem (varsayılan olarak kullanılır), basit SGD, İvme, Nesterov).
Parametre
4 özelleştirilebilir parametre vardır. Onlar sırayla işleve geçirilir, ancak dört varsayılan değerleri kullanılacak geçmek gerek yoktur, ancak iyi bir model bazı parametre ayarlama gerekli.
stochasticLinearRegression(1.0, 1.0, 10, 'SGD')
learning rate
Gradyan iniş adımı gerçekleştirildiğinde adım uzunluğundaki katsayıdır. Çok büyük öğrenme oranı, modelin sonsuz ağırlıklarına neden olabilir. Default is0.00001
.l2 regularization coefficient
hangi overfitting önlemek için yardımcı olabilir. Default is0.1
.mini-batch size
gradyanların hesaplanacağı ve Gradyan inişinin bir adımını gerçekleştirmek için toplanacağı öğelerin sayısını ayarlar. Saf stokastik iniş bir eleman kullanır, ancak küçük partilere(yaklaşık 10 eleman) sahip olmak degrade adımları daha kararlı hale getirir. Default is15
.method for updating weights
onlar :Adam
(varsayılan olarak),SGD
,Momentum
,Nesterov
.Momentum
veNesterov
biraz daha fazla hesaplama ve bellek gerektirir, ancak stokastik Gradyan yöntemlerinin yakınsama hızı ve kararlılığı açısından yararlı olurlar.
Kullanma
stochasticLinearRegression
iki adımda kullanılır: modelin takılması ve yeni verilerin tahmin edilmesi. Modeli sığdırmak ve daha sonra kullanım için durumunu kaydetmek için kullandığımız -State
temel olarak durumu kurtaran birleştirici (model ağırlıkları, vb.).
Fonksiyonu kullan wedığımızı tahmin etmek evalMLMethod, bir argüman olarak bir durumu yanı sıra tahmin etmek için özellikler alır.
1. Uydurma
Böyle bir sorgu kullanılabilir.
CREATE TABLE IF NOT EXISTS train_data
(
param1 Float64,
param2 Float64,
target Float64
) ENGINE = Memory;
CREATE TABLE your_model ENGINE = Memory AS SELECT
stochasticLinearRegressionState(0.1, 0.0, 5, 'SGD')(target, param1, param2)
AS state FROM train_data;
Burada ayrıca veri eklememiz gerekiyor train_data
Tablo. Parametrelerin sayısı sabit değildir, sadece argümanların sayısına bağlıdır, linearRegressionState
. Hepsi sayısal değerler olmalıdır.
Hedef değere sahip sütunun(tahmin etmeyi öğrenmek istediğimiz) ilk argüman olarak eklendiğini unutmayın.
2. Öngören
Bir durumu tabloya kaydettikten sonra, tahmin için birden çok kez kullanabilir, hatta diğer durumlarla birleşebilir ve yeni daha iyi modeller oluşturabiliriz.
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) FROM test_data
Sorgu, tahmin edilen değerlerin bir sütununu döndürür. Not ilk argüman evalMLMethod
oluyor AggregateFunctionState
nesne, sonraki özelliklerin sütunlarıdır.
test_data
bir tablo gibi mi train_data
ancak hedef değer içermeyebilir.
Not
-
İki modeli birleştirmek için Kullanıcı böyle bir sorgu oluşturabilir:
sql SELECT state1 + state2 FROM your_models
neredeyour_models
tablo her iki modeli de içerir. Bu sorgu yeni dönecektirAggregateFunctionState
nesne. -
Kullanıcı, modeli kaydetmeden oluşturulan modelin ağırlıklarını kendi amaçları için alabilir
-State
birleştirici kullanılır.sql SELECT stochasticLinearRegression(0.01)(target, param1, param2) FROM train_data
Bu sorgu modele uyacak ve ağırlıklarını geri getirecektir-ilk önce modelin parametrelerine karşılık gelen ağırlıklar, sonuncusu önyargıdır. Yani yukarıdaki örnekte sorgu 3 değer içeren bir sütun döndürecektir.
Ayrıca Bakınız
stochasticLogisticRegression
Bu işlev stokastik lojistik regresyon uygular. İkili sınıflandırma problemi için kullanılabilir, stochasticLinearRegression ile aynı özel parametreleri destekler ve aynı şekilde çalışır.
Parametre
Parametreler tam olarak stochasticLinearRegression ile aynıdır:
learning rate
, l2 regularization coefficient
, mini-batch size
, method for updating weights
.
Daha fazla bilgi için bkz. parametre.
stochasticLogisticRegression(1.0, 1.0, 10, 'SGD')
- Uydurma
See the `Fitting` section in the [stochasticLinearRegression](#stochasticlinearregression-usage-fitting) description.
Predicted labels have to be in \[-1, 1\].
- Öngören
Using saved state we can predict probability of object having label `1`.
``` sql
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) FROM test_data
```
The query will return a column of probabilities. Note that first argument of `evalMLMethod` is `AggregateFunctionState` object, next are columns of features.
We can also set a bound of probability, which assigns elements to different labels.
``` sql
SELECT ans < 1.1 AND ans > 0.5 FROM
(WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) AS ans FROM test_data)
```
Then the result will be labels.
`test_data` is a table like `train_data` but may not contain target value.
Ayrıca Bakınız
groupBitmapAnd
Bu VE bir bitmap sütun, Uınt64 tür iade önem, hesaplamaları suffix ekleme -Devlet, sonra iade bitmap nesnesi.
groupBitmapAnd(expr)
Parametre
expr
– An expression that results in AggregateFunction(groupBitmap, UInt*)
tür.
Dönüş değeri
Bu değer UInt64
tür.
Örnek
DROP TABLE IF EXISTS bitmap_column_expr_test2;
CREATE TABLE bitmap_column_expr_test2
(
tag_id String,
z AggregateFunction(groupBitmap, UInt32)
)
ENGINE = MergeTree
ORDER BY tag_id;
INSERT INTO bitmap_column_expr_test2 VALUES ('tag1', bitmapBuild(cast([1,2,3,4,5,6,7,8,9,10] as Array(UInt32))));
INSERT INTO bitmap_column_expr_test2 VALUES ('tag2', bitmapBuild(cast([6,7,8,9,10,11,12,13,14,15] as Array(UInt32))));
INSERT INTO bitmap_column_expr_test2 VALUES ('tag3', bitmapBuild(cast([2,4,6,8,10,12] as Array(UInt32))));
SELECT groupBitmapAnd(z) FROM bitmap_column_expr_test2 WHERE like(tag_id, 'tag%');
┌─groupBitmapAnd(z)─┐
│ 3 │
└───────────────────┘
SELECT arraySort(bitmapToArray(groupBitmapAndState(z))) FROM bitmap_column_expr_test2 WHERE like(tag_id, 'tag%');
┌─arraySort(bitmapToArray(groupBitmapAndState(z)))─┐
│ [6,8,10] │
└──────────────────────────────────────────────────┘
groupBitmapOr
YA da bir bitmap sütun, Uınt64 tür iade önem, hesaplamaları suffix ekleme -Devlet, sonra iade bitmap nesnesi. Bu eşdeğerdir groupBitmapMerge
.
groupBitmapOr(expr)
Parametre
expr
– An expression that results in AggregateFunction(groupBitmap, UInt*)
tür.
Dönüş değeri
Bu değer UInt64
tür.
Örnek
DROP TABLE IF EXISTS bitmap_column_expr_test2;
CREATE TABLE bitmap_column_expr_test2
(
tag_id String,
z AggregateFunction(groupBitmap, UInt32)
)
ENGINE = MergeTree
ORDER BY tag_id;
INSERT INTO bitmap_column_expr_test2 VALUES ('tag1', bitmapBuild(cast([1,2,3,4,5,6,7,8,9,10] as Array(UInt32))));
INSERT INTO bitmap_column_expr_test2 VALUES ('tag2', bitmapBuild(cast([6,7,8,9,10,11,12,13,14,15] as Array(UInt32))));
INSERT INTO bitmap_column_expr_test2 VALUES ('tag3', bitmapBuild(cast([2,4,6,8,10,12] as Array(UInt32))));
SELECT groupBitmapOr(z) FROM bitmap_column_expr_test2 WHERE like(tag_id, 'tag%');
┌─groupBitmapOr(z)─┐
│ 15 │
└──────────────────┘
SELECT arraySort(bitmapToArray(groupBitmapOrState(z))) FROM bitmap_column_expr_test2 WHERE like(tag_id, 'tag%');
┌─arraySort(bitmapToArray(groupBitmapOrState(z)))─┐
│ [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] │
└─────────────────────────────────────────────────┘
groupBitmapXor
Bir bitmap sütun, Uınt64 tür iade önem hesaplamaları XOR, suffix ekleme -Devlet, sonra iade bitmap nesnesi.
groupBitmapOr(expr)
Parametre
expr
– An expression that results in AggregateFunction(groupBitmap, UInt*)
tür.
Dönüş değeri
Bu değer UInt64
tür.
Örnek
DROP TABLE IF EXISTS bitmap_column_expr_test2;
CREATE TABLE bitmap_column_expr_test2
(
tag_id String,
z AggregateFunction(groupBitmap, UInt32)
)
ENGINE = MergeTree
ORDER BY tag_id;
INSERT INTO bitmap_column_expr_test2 VALUES ('tag1', bitmapBuild(cast([1,2,3,4,5,6,7,8,9,10] as Array(UInt32))));
INSERT INTO bitmap_column_expr_test2 VALUES ('tag2', bitmapBuild(cast([6,7,8,9,10,11,12,13,14,15] as Array(UInt32))));
INSERT INTO bitmap_column_expr_test2 VALUES ('tag3', bitmapBuild(cast([2,4,6,8,10,12] as Array(UInt32))));
SELECT groupBitmapXor(z) FROM bitmap_column_expr_test2 WHERE like(tag_id, 'tag%');
┌─groupBitmapXor(z)─┐
│ 10 │
└───────────────────┘
SELECT arraySort(bitmapToArray(groupBitmapXorState(z))) FROM bitmap_column_expr_test2 WHERE like(tag_id, 'tag%');
┌─arraySort(bitmapToArray(groupBitmapXorState(z)))─┐
│ [1,3,5,6,8,10,11,13,14,15] │
└──────────────────────────────────────────────────┘