يمكن تكوين Bitmap بطريقتين: الأولى باستخدام دالة التجميع groupBitmap مع -State، والثانية بإنشاء Bitmap من كائن Array.
bitmapAnd
قُدِّم في: v20.1.0
يحسب الاقتران المنطقي (AND) لخريطتَي bitmap.
الصيغة
bitmapAnd(bitmap1, bitmap2)الوسائط
bitmap1— كائن الـ bitmap الأول.AggregateFunction(groupBitmap, T). -bitmap2— كائن الـ bitmap الثاني.AggregateFunction(groupBitmap, T).
القيمة المُعادة
يعيد bitmap يحتوي على البتات الموجودة في كلٍّ من وحدتَي bitmap المُدخلتَين AggregateFunction(groupBitmap, T)
أمثلة
مثال على الاستخدام
SELECT bitmapToArray(bitmapAnd(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;┌─res─┐
│ [3] │
└─────┘bitmapAndCardinality
أُضيفت في: v20.1.0
تعيد عدد عناصر ناتج الاقتران المنطقي (AND) بين قيمتَي bitmap.
البنية
bitmapAndCardinality(bitmap1, bitmap2)الوسيطات
bitmap1— كائن الـ bitmap الأول.AggregateFunction(groupBitmap, T). -bitmap2— كائن الـ bitmap الثاني.AggregateFunction(groupBitmap, T).
القيمة المُعادة
تعيد عدد البتات المضبوطة في تقاطع كائني الـ bitmap UInt64
أمثلة
مثال على الاستخدام
SELECT bitmapAndCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;┌─res─┐
│ 1 │
└─────┘bitmapAndnot
أُضيف في: v20.1.0
يحسب فرق المجموعتين A AND-NOT B بين خريطتي بت.
الصيغة
bitmapAndnot(bitmap1, bitmap2)الوسيطات
bitmap1— كائن الـ bitmap الأول.AggregateFunction(groupBitmap, T). -bitmap2— كائن الـ bitmap الثاني.AggregateFunction(groupBitmap, T).
القيمة المُعادة
يعيد bitmap يحتوي على البتات المضبوطة الموجودة في الـ bitmap الأول وغير الموجودة في الثاني AggregateFunction(groupBitmap, T)
أمثلة
مثال على الاستخدام
SELECT bitmapToArray(bitmapAndnot(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;┌─res───┐
│ [1,2] │
└───────┘bitmapAndnotCardinality
أُضيفت في: v20.1.0
تعيد عدد عناصر ناتج عملية AND-NOT لخريطتي بت.
الصيغة
bitmapAndnotCardinality(bitmap1, bitmap2)الوسائط
bitmap1— كائن bitmap الأول.AggregateFunction(groupBitmap, T). -bitmap2— كائن bitmap الثاني.AggregateFunction(groupBitmap, T).
القيمة المُعادة
يعيد عدد البتات المعيّنة في ناتج bitmap1 AND-NOT bitmap2 UInt64
أمثلة
مثال على الاستخدام
SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;┌─res─┐
│ 2 │
└─────┘bitmapBuild
أُضيفت في: v20.1.0
تُنشئ bitmap من مصفوفة من الأعداد الصحيحة. أنواع العناصر المدعومة هي الأعداد الصحيحة الموقَّعة وغير الموقَّعة ذات 8 أو 16 أو 32 أو 64 بت. وهي عكس الدالة bitmapToArray.
الصيغة
bitmapBuild(array)الوسيطات
array— مصفوفة من الأعداد الصحيحة.Array((U)Int*)
القيمة المُعادة
يعيد bitmap من المصفوفة المُدخلة AggregateFunction(groupBitmap, T)
أمثلة
مثال على الاستخدام
-- A bitmap is a binary value, so it is shown with `hex`.
SELECT hex(bitmapBuild([1, 2, 3, 4, 5])) AS res, toTypeName(bitmapBuild([1, 2, 3, 4, 5])) AS type;┌─res────────────┬─type──────────────────────────────────┐
│ 00050102030405 │ AggregateFunction(groupBitmap, UInt8) │
└────────────────┴───────────────────────────────────────┘bitmap موقَّعة
-- A bitmap is a binary value, so it is shown with `hex`.
SELECT hex(bitmapBuild([-128, -1]::Array(Int8))) AS res, toTypeName(bitmapBuild([-128, -1]::Array(Int8))) AS type;┌─res──────┬─type─────────────────────────────────┐
│ 000280FF │ AggregateFunction(groupBitmap, Int8) │
└──────────┴──────────────────────────────────────┘bitmapCardinality
أُضيف في: v20.1.0
يعيد عدد البتات المعيّنة (cardinality) في bitmap.
الصيغة
bitmapCardinality(bitmap)الوسائط
bitmap— كائن bitmap.AggregateFunction(groupBitmap, T).
القيمة المعادة
ترجع عدد البتات المعيّنة في bitmap UInt64
أمثلة
مثال على الاستخدام
SELECT bitmapCardinality(bitmapBuild([1, 3, 3, 5, 7, 7])) AS res┌─res─┐
│ 4 │
└─────┘bitmapContains
أُضيف في: v20.1.0
يتحقق مما إذا كانت bitmap تحتوي على عنصر معيّن. تُقارن القيمة كعدد صحيح غير موقّع من نوع عنصر bitmap. بالنسبة إلى bitmap الموقّعة، يطابق العنصر السالب نظيره غير الموقّع (على سبيل المثال، تطابق قيمة Int8 وهي -1 القيمة 255).
الصيغة
bitmapContains(bitmap, value)الوسيطات
bitmap— كائن bitmap.AggregateFunction(groupBitmap, T). -value— العنصر المراد التحقق منه. (U)Int8/16/32/64
القيمة المُعادة
تُرجع 1 إذا كانت bitmap تحتوي على القيمة المحددة، وإلا فتُرجع 0 UInt8
أمثلة
مثال على الاستخدام
SELECT bitmapContains(bitmapBuild([1, 2, 3]), 2) AS res;┌─res─┐
│ 1 │
└─────┘bitmap موقَّعة
SELECT bitmapContains(bitmapBuild([-1]::Array(Int8)), 255) AS res;┌─res─┐
│ 1 │
└─────┘bitmapHasAll
أُضيفت في: v20.1.0
يتحقق مما إذا كانت bitmap الأولى تحتوي على جميع البتات المضبوطة في bitmap الثانية.
الصيغة
bitmapHasAll(bitmap1, bitmap2)الوسيطات
bitmap1— كائن bitmap الأول.AggregateFunction(groupBitmap, T). -bitmap2— كائن bitmap الثاني.AggregateFunction(groupBitmap, T).
القيمة المُعادة
تُرجِع 1 إذا كانت جميع البتات المضبوطة في الـ bitmap الثانية موجودة في الـ bitmap الأولى، وإلا فتُرجِع 0 UInt8
أمثلة
مثال على الاستخدام
SELECT bitmapHasAll(bitmapBuild([1, 2, 3]), bitmapBuild([2, 3])) AS res;┌─res─┐
│ 1 │
└─────┘bitmapHasAny
أُضيف في: v20.1.0
يتحقق مما إذا كانت الـ bitmap الأولى تحتوي على أي بتات مضبوطة من الـ bitmap الثانية.
الصيغة
bitmapHasAny(bitmap1, bitmap2)الوسيطات
bitmap1— كائن bitmap الأول.AggregateFunction(groupBitmap, T). -bitmap2— كائن bitmap الثاني.AggregateFunction(groupBitmap, T).
القيمة المُعادة
تُرجع 1 إذا وُجدت أي بتات من bitmap الثانية في bitmap الأولى، وإلا فتُرجع 0 UInt8
أمثلة
مثال على الاستخدام
SELECT bitmapHasAny(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5])) AS res;┌─res─┐
│ 1 │
└─────┘bitmapMax
أُضيف في: v20.1.0
يعيد أكبر عنصر في bitmap، مُفسَّرًا كعدد صحيح غير موقَّع من نوع عنصر bitmap. بالنسبة إلى bitmap الموقَّعة، تُعامل القيم السالبة كمقابلاتها غير الموقَّعة (على سبيل المثال، قيمة Int8 وهي -1 تصبح 255). يعيد 0 إذا كانت bitmap فارغة.
الصيغة
bitmapMax(bitmap)الوسيطات
bitmap— كائن bitmap.AggregateFunction(groupBitmap, T).
القيمة المُعادة
يُرجع أكبر عنصر كقيمة غير موقعة من نوع عنصر bitmap، أو 0 إذا كانت bitmap فارغة UInt64
أمثلة
مثال على الاستخدام
SELECT bitmapMax(bitmapBuild([1, 2, 3, 4, 5])) AS res;┌─res─┐
│ 5 │
└─────┘bitmap موقَّعة
SELECT bitmapMax(bitmapBuild([-128, -1]::Array(Int8))) AS res;┌─res─┐
│ 255 │
└─────┘bitmapMin
أُضيف في: v20.1.0
يعيد أصغر عنصر في bitmap، ويُفسَّر على أنه عدد صحيح غير موقّع من نوع عنصر bitmap. بالنسبة إلى bitmap الموقّعة، تُعامل القيم السالبة كمكافئاتها غير الموقّعة (على سبيل المثال، قيمة Int8 -128 هي 128). إذا كانت bitmap فارغة، يعيد UINT32_MAX (أو UINT64_MAX إذا كان نوع عنصر bitmap أعرض من 32 بتًا).
الصيغة
bitmapMin(bitmap)الوسيطات
bitmap— كائن bitmap.AggregateFunction(groupBitmap, T).
القيمة المُعادة
تُعيد أصغر عنصر بوصفه قيمة غير موقعة من نوع عناصر bitmap، أو UINT32_MAX/UINT64_MAX إذا كانت bitmap فارغة UInt64
أمثلة
مثال على الاستخدام
SELECT bitmapMin(bitmapBuild([3, 5, 2, 6])) AS res;┌─res─┐
│ 2 │
└─────┘bitmap موقّعة
SELECT bitmapMin(bitmapBuild([-128, -1]::Array(Int8))) AS res;┌─res─┐
│ 128 │
└─────┘bitmapOr
أُضيف في: v20.1.0
يحسب عملية الفصل المنطقي (OR) بين وحدتَي bitmap.
الصيغة
bitmapOr(bitmap1, bitmap2)الوسيطات
bitmap1— كائن الـ bitmap الأول.AggregateFunction(groupBitmap, T). -bitmap2— كائن الـ bitmap الثاني.AggregateFunction(groupBitmap, T).
القيمة المُعادة
يُرجع bitmap يحتوي على البتات المضبوطة الموجودة في أيٍّ من كائني bitmap المُدخلين AggregateFunction(groupBitmap, T)
أمثلة
مثال على الاستخدام
SELECT bitmapToArray(bitmapOr(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘bitmapOrCardinality
أُضيف في: v20.1.0
يُرجع عدد عناصر عملية الفصل المنطقي (OR) لصورتَي bitmap.
الصيغة
bitmapOrCardinality(bitmap1, bitmap2)الوسيطات
bitmap1— أول كائن bitmap.AggregateFunction(groupBitmap, T). -bitmap2— ثاني كائن bitmap.AggregateFunction(groupBitmap, T).
القيمة المُعادة
يعيد عدد البتات المُعيَّنة في اتحاد كائني bitmap UInt64
أمثلة
مثال على الاستخدام
SELECT bitmapOrCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;┌─res─┐
│ 5 │
└─────┘bitmapSubsetInRange
أُضيفت في: v20.1.0
تعيد مجموعة فرعية من bitmap تحتوي على عناصر تقع قيمها ضمن النطاق [start, end). تُقارن قيم العناصر كأعداد صحيحة غير موقعة من نوع عنصر bitmap.
الصيغة
bitmapSubsetInRange(bitmap, start, end)الوسيطات
bitmap— الـ bitmap المطلوب استخراج المجموعة الفرعية منه.AggregateFunction(groupBitmap, T). -start— بداية النطاق (شامل).UInt*-end— نهاية النطاق (غير شامل).UInt*
القيمة المُعادة
تعيد bitmap يحتوي فقط على العناصر ضمن نطاق القيم المحدد AggregateFunction(groupBitmap, T)
أمثلة
مثال على الاستخدام
SELECT bitmapToArray(bitmapSubsetInRange(bitmapBuild([1, 2, 3, 4, 5]), 2, 5)) AS res;┌─res─────┐
│ [2,3,4] │
└─────────┘bitmapSubsetLimit
أُضيف في: v20.1.0
تُرجِع مجموعة فرعية تضم ما لا يزيد عن cardinality_limit عنصرًا، وتكون قيم عناصرها أكبر من أو تساوي range_start، مع اختيار أصغر هذه القيم وفق الترتيب غير الموقّع.
الصيغة
bitmapSubsetLimit(bitmap, range_start, cardinality_limit)الوسيطات
bitmap— كائن bitmap.AggregateFunction(groupBitmap, T). -range_start— بداية النطاق (متضمنة).UInt32-cardinality_limit— الحد الأقصى لعدد العناصر للمجموعة الفرعية.UInt32
القيمة المعادة
تُرجِع كائن bitmap يحتوي على ما لا يزيد عن cardinality_limit من العناصر ذات القيمة غير الموقعة التي لا تقل عن range_start AggregateFunction(groupBitmap, T)
أمثلة
مثال على الاستخدام
SELECT arraySort(bitmapToArray(bitmapSubsetLimit(bitmapBuild([1, 5, 3, 2, 8]), 3, 2))) AS res;┌─res───┐
│ [3,5] │
└───────┘bitmapToArray
أُضيفت في: v20.1.0
تحوّل bitmap إلى مصفوفة من عناصرها. يطابق نوع عنصر المصفوفة نوع عنصر bitmap T (عدد صحيح موقَّع أو غير موقَّع). وهي عكس الدالة bitmapBuild.
الصيغة
bitmapToArray(bitmap)الوسيطات
bitmap— قيمةbitmapالمطلوب تحويلها.AggregateFunction(groupBitmap, T).
القيمة المُعادة
يعيد مصفوفة من العناصر الموجودة في bitmap Array(T)
أمثلة
مثال على الاستخدام
SELECT bitmapToArray(bitmapBuild([1, 2, 3, 4, 5])) AS res;┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘bitmap الموقَّعة
SELECT arraySort(bitmapToArray(bitmapBuild([-128, -1]::Array(Int8)))) AS res;┌─res───────┐
│ [-128,-1] │
└───────────┘bitmapTransform
أُضيف في: v20.1.0
يستبدل العناصر في bitmap وفقًا لتعيين من from_array إلى to_array.
تُفسَّر القيم كأعداد صحيحة غير موقعة من نوع عنصر bitmap (ضمن نفس المجال مثل bitmapContains).
بالنسبة إلى bitmaps الموقعة، يطابق العنصر السالب نظيره غير الموقّع (على سبيل المثال، تطابق قيمة Int8 -1 القيمة 255).
تؤدي القيمة في to_array التي لا تلائم نوع عنصر bitmap إلى ظهور الخطأ BAD_ARGUMENTS. أما القيمة في from_array
التي لا تلائم النوع فلا يُعثر عليها ببساطة، لذا لا يُطبَّق الاستبدال المقابل.
الصيغة
bitmapTransform(bitmap, from_array, to_array)الوسيطات
bitmap— كائن bitmap.AggregateFunction(groupBitmap, T). -from_array— مصفوفة من البتات المضبوطة الأصلية المطلوب استبدالها.Array(T). -to_array— مصفوفة من البتات المضبوطة الجديدة التي سيُستبدل بها.Array(T).
القيمة المُعادة
يعيد bitmap بعناصر حُوِّلت وفقًا للتعيين المحدد AggregateFunction(groupBitmap, T)
أمثلة
مثال على الاستخدام
SELECT bitmapToArray(bitmapTransform(bitmapBuild([1, 2, 3, 4, 5]), [2, 4], [20, 40])) AS res;┌─res───────────┐
│ [1,3,5,20,40] │
└───────────────┘bitmap موقّع
SELECT arraySort(bitmapToArray(bitmapTransform(bitmapBuild([-1, 0]::Array(Int8)), [255], [10]))) AS res;┌─res────┐
│ [0,10] │
└────────┘bitmapXor
أُضيف في: v20.1.0
يحسب الفرق المتماثل (XOR) بين وحدتَي bitmap.
الصيغة
bitmapXor(bitmap1, bitmap2)الوسيطة
bitmap1— كائن الـbitmap الأول.AggregateFunction(groupBitmap, T). -bitmap2— كائن الـbitmap الثاني.AggregateFunction(groupBitmap, T).
القيمة المُعادة
يُرجع bitmap يحتوي على البتات المضبوطة الموجودة في أي من bitmapَي الإدخال، ولكن ليس في كليهما AggregateFunction(groupBitmap, T)
أمثلة
مثال على الاستخدام
SELECT bitmapToArray(bitmapXor(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;┌─res───────┐
│ [1,2,4,5] │
└───────────┘bitmapXorCardinality
تم تقديمها في: v20.1.0
تعيد عدد عناصر XOR (الفرق المتماثل) بين bitmapين.
الصيغة
bitmapXorCardinality(bitmap1, bitmap2)الوسيطات
bitmap1— كائنbitmapالأول.AggregateFunction(groupBitmap, T). -bitmap2— كائنbitmapالثاني.AggregateFunction(groupBitmap, T).
القيمة المعادة
تعيد عدد البتات المضبوطة في الفرق المتماثل بين كائني bitmap UInt64
أمثلة
مثال على الاستخدام
SELECT bitmapXorCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;┌─res─┐
│ 4 │
└─────┘subBitmap
أُضيف في: v21.9.0
يعيد مجموعة فرعية من bitmap بعد تخطي offset عنصرًا، بترتيب تصاعدي للقيم غير الموقعة. الحد الأقصى لعدد العناصر في bitmap المُعادة هو cardinality_limit.
الصيغة
subBitmap(bitmap, offset, cardinality_limit)الوسيطات
bitmap— كائن bitmap.AggregateFunction(groupBitmap, T). -offset— عدد البتات المضبوطة المطلوب تخطيها من البداية (بفهرسة تبدأ من الصفر).UInt32-cardinality_limit— الحد الأقصى لعدد البتات المضبوطة التي يمكن تضمينها في المجموعة الفرعية.UInt32
القيمة المُعادة
يعيد bitmap يحتوي على عدد لا يتجاوز cardinality_limit من العناصر بعد تخطي offset من العناصر بترتيب تصاعدي للقيم غير الموقعة AggregateFunction(groupBitmap, T)
أمثلة
مثال على الاستخدام
SELECT bitmapToArray(subBitmap(bitmapBuild([1, 2, 3, 4, 5]), 2, 2)) AS res;┌─res───┐
│ [3,4] │
└───────┘