11 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | e8cd92bba3 |
49 | Eşlem |
Bitmap işlevleri
Bitmap işlevleri iki bit eşlemler nesne değeri hesaplama için çalışmak, yeni bitmap veya kardinality formül hesaplama, and, or, xor ve not, vb gibi kullanırken döndürmektir.
Bitmap nesnesi için 2 çeşit inşaat yöntemi vardır. Biri-State ile toplama işlevi groupBitmap tarafından inşa edilecek, diğeri Array nesnesi tarafından inşa edilecek. Ayrıca bitmap nesnesini dizi nesnesine dönüştürmektir.
Roaringbitmap, Bitmap nesnelerinin gerçek depolanması sırasında bir veri yapısına sarılır. Önemlilik 32'den küçük veya eşit olduğunda, Set objet kullanır. Kardinality 32'den büyük olduğunda, roaringbitmap nesnesi kullanır. Bu nedenle düşük kardinalite kümesinin depolanması daha hızlıdır.
RoaringBitmap hakkında daha fazla bilgi için bkz: CRoaring.
bitmapBuild
İmzasız tamsayı dizisinden bir bit eşlem oluşturun.
bitmapBuild(array)
Parametre
array
– unsigned integer array.
Örnek
SELECT bitmapBuild([1, 2, 3, 4, 5]) AS res, toTypeName(res)
┌─res─┬─toTypeName(bitmapBuild([1, 2, 3, 4, 5]))─────┐
│ │ AggregateFunction(groupBitmap, UInt8) │
└─────┴──────────────────────────────────────────────┘
bitmapToArray
Bitmap'i tamsayı dizisine dönüştürün.
bitmapToArray(bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapToArray(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘
bitmapsubsetınrange
Belirtilen aralıktaki alt kümesi döndürür (range_end içermez).
bitmapSubsetInRange(bitmap, range_start, range_end)
Parametre
bitmap
– Bitmap nesnesi.range_start
– range start point. Type: Uİnt32.range_end
– range end point(excluded). Type: Uİnt32.
Örnek
SELECT bitmapToArray(bitmapSubsetInRange(bitmapBuild([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,100,200,500]), toUInt32(30), toUInt32(200))) AS res
┌─res───────────────┐
│ [30,31,32,33,100] │
└───────────────────┘
bitmapSubsetLimit
Arasında alınan n öğeleri ile bitmap bir alt kümesi oluşturur range_start
ve cardinality_limit
.
Sözdizimi
bitmapSubsetLimit(bitmap, range_start, cardinality_limit)
Parametre
bitmap
– Bitmap nesnesi.range_start
– The subset starting point. Type: Uİnt32.cardinality_limit
– The subset cardinality upper limit. Type: Uİnt32.
Döndürülen değer
Alt.
Tür: Bitmap object
.
Örnek
Sorgu:
SELECT bitmapToArray(bitmapSubsetLimit(bitmapBuild([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,100,200,500]), toUInt32(30), toUInt32(200))) AS res
Sonuç:
┌─res───────────────────────┐
│ [30,31,32,33,100,200,500] │
└───────────────────────────┘
bitmapContains
Bit eşlem bir öğe içerip içermediğini denetler.
bitmapContains(haystack, needle)
Parametre
haystack
– Bitmap nesnesi, fonksiyon arar nerede.needle
– Value that the function searches. Type: Uİnt32.
Döndürülen değerler
- 0 — If
haystack
içermezneedle
. - 1 — If
haystack
içeriyorneedle
.
Tür: UInt8
.
Örnek
SELECT bitmapContains(bitmapBuild([1,5,7,9]), toUInt32(9)) AS res
┌─res─┐
│ 1 │
└─────┘
bitmapHasAny
İki bit eşlemin bazı öğelerle kesiştiği olup olmadığını kontrol eder.
bitmapHasAny(bitmap1, bitmap2)
Eğer eminseniz bitmap2
kesinlikle bir öğe içerir, kullanmayı düşünün bitmapContains işlev. Daha verimli çalışır.
Parametre
bitmap*
– bitmap object.
Dönüş değerleri
1
, eğerbitmap1
vebitmap2
en azından benzer bir öğeye sahip olun.0
, başka.
Örnek
SELECT bitmapHasAny(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res
┌─res─┐
│ 1 │
└─────┘
bitmapHasAll
Benzer hasAll(array, array)
ilk bit eşlem, ikincisinin tüm öğelerini içeriyorsa, 1 değerini döndürür, aksi halde 0.
İkinci bağımsız değişken boş bir bit eşlem ise, 1 döndürür.
bitmapHasAll(bitmap,bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapHasAll(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res
┌─res─┐
│ 0 │
└─────┘
bitmapCardinality
Retrun bit eşlem kardinalite türü Uİnt64.
bitmapCardinality(bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapCardinality(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─┐
│ 5 │
└─────┘
bitmapMin
Kümedeki uint64 türünün en küçük değerini yeniden çalıştırın, küme boşsa UİNT32_MAX.
bitmapMin(bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapMin(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─┐
│ 1 │
└─────┘
bitmapMax
Küme boşsa, kümedeki uint64 türünün en büyük değerini 0 olarak yeniden çalıştırın.
bitmapMax(bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapMax(bitmapBuild([1, 2, 3, 4, 5])) AS res
┌─res─┐
│ 5 │
└─────┘
bitmapTransform
Bitmap'teki bir değer dizisini başka bir değer dizisine dönüştürün, sonuç yeni bir bitmap'tir.
bitmapTransform(bitmap, from_array, to_array)
Parametre
bitmap
– bitmap object.from_array
– UInt32 array. For idx in range [0, from_array.size()), if bitmap contains from_array[idx], then replace it with to_array[idx]. Note that the result depends on array ordering if there are common elements between from_array and to_array.to_array
– UInt32 array, its size shall be the same to from_array.
Örnek
SELECT bitmapToArray(bitmapTransform(bitmapBuild([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), cast([5,999,2] as Array(UInt32)), cast([2,888,20] as Array(UInt32)))) AS res
┌─res───────────────────┐
│ [1,3,4,6,7,8,9,10,20] │
└───────────────────────┘
bitmapAnd
İki bitmap ve hesaplama, sonuç yeni bir bitmap'tir.
bitmapAnd(bitmap,bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapToArray(bitmapAnd(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res─┐
│ [3] │
└─────┘
bitmapOr
İki bitmap veya hesaplama, sonuç yeni bir bitmap'tir.
bitmapOr(bitmap,bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapToArray(bitmapOr(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘
bitmapXor
İki bitmap XOR hesaplama, sonuç yeni bir bitmap.
bitmapXor(bitmap,bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapToArray(bitmapXor(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res───────┐
│ [1,2,4,5] │
└───────────┘
bitmapAndnot
İki bit eşlem andnot hesaplama, sonuç yeni bir bit eşlem.
bitmapAndnot(bitmap,bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapToArray(bitmapAndnot(bitmapBuild([1,2,3]),bitmapBuild([3,4,5]))) AS res
┌─res───┐
│ [1,2] │
└───────┘
bitmapAndCardinality
İki bitmap ve hesaplama, uint64 türünün kardinalliğini döndürür.
bitmapAndCardinality(bitmap,bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapAndCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│ 1 │
└─────┘
bitmapOrCardinality
İki bitmap veya hesaplama, uint64 türünün kardinalliğini döndürür.
bitmapOrCardinality(bitmap,bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapOrCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│ 5 │
└─────┘
bitmapXorCardinality
İki bitmap XOR hesaplama, uint64 türünün kardinalliğini döndürür.
bitmapXorCardinality(bitmap,bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapXorCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│ 4 │
└─────┘
bitmapAndnotCardinality
İki bitmap andnot hesaplama, uint64 türünün kardinalliğini döndürür.
bitmapAndnotCardinality(bitmap,bitmap)
Parametre
bitmap
– bitmap object.
Örnek
SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]),bitmapBuild([3,4,5])) AS res;
┌─res─┐
│ 2 │
└─────┘