ClickHouse/docs/tr/sql_reference/functions/bitmap_functions.md
2020-04-15 16:56:49 +03:00

11 KiB
Raw Blame History

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

Ö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çermez needle.
  • 1 — If haystack içeriyor needle.

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ğer bitmap1 ve bitmap2 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 │
└─────┘

Orijinal makale