> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> توثيق دوال Bitmap

# دوال Bitmap

يمكن تكوين Bitmap بطريقتين: الأولى باستخدام دالة التجميع groupBitmap مع `-State`، والثانية بإنشاء Bitmap من كائن Array.

{/*AUTOGENERATED_START*/}

<div id="bitmapAnd">
  ## bitmapAnd
</div>

قُدِّم في: v20.1.0

يحسب الاقتران المنطقي (AND) لخريطتَي bitmap.

**الصيغة**

```sql theme={null}
bitmapAnd(bitmap1, bitmap2)
```

**الوسائط**

* `bitmap1` — كائن الـ bitmap الأول. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `bitmap2` — كائن الـ bitmap الثاني. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المُعادة**

يعيد bitmap يحتوي على البتات الموجودة في كلٍّ من وحدتَي bitmap المُدخلتَين [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapAnd(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
```

```response title=Response theme={null}
┌─res─┐
│ [3] │
└─────┘
```

<div id="bitmapAndCardinality">
  ## bitmapAndCardinality
</div>

أُضيفت في: v20.1.0

تعيد عدد عناصر ناتج الاقتران المنطقي (AND) بين قيمتَي bitmap.

**البنية**

```sql theme={null}
bitmapAndCardinality(bitmap1, bitmap2)
```

**الوسيطات**

* `bitmap1` — كائن الـ bitmap الأول. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `bitmap2` — كائن الـ bitmap الثاني. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المُعادة**

تعيد عدد البتات المضبوطة في تقاطع كائني الـ bitmap [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapAndCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   1 │
└─────┘
```

<div id="bitmapAndnot">
  ## bitmapAndnot
</div>

أُضيف في: v20.1.0

يحسب فرق المجموعتين A AND-NOT B بين خريطتي بت.

**الصيغة**

```sql theme={null}
bitmapAndnot(bitmap1, bitmap2)
```

**الوسيطات**

* `bitmap1` — كائن الـ bitmap الأول. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `bitmap2` — كائن الـ bitmap الثاني. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المُعادة**

يعيد bitmap يحتوي على البتات المضبوطة الموجودة في الـ bitmap الأول وغير الموجودة في الثاني [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapAndnot(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
```

```response title=Response theme={null}
┌─res────┐
│ [1, 2] │
└────────┘
```

<div id="bitmapAndnotCardinality">
  ## bitmapAndnotCardinality
</div>

أُضيفت في: v20.1.0

تعيد عدد عناصر ناتج عملية AND-NOT لخريطتي بت.

**الصيغة**

```sql theme={null}
bitmapAndnotCardinality(bitmap1, bitmap2)
```

**الوسائط**

* `bitmap1` — كائن bitmap الأول. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `bitmap2` — كائن bitmap الثاني. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المُعادة**

يعيد عدد البتات المعيّنة في ناتج `bitmap1 AND-NOT bitmap2` [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   2 │
└─────┘
```

<div id="bitmapBuild">
  ## bitmapBuild
</div>

أُضيفت في: v20.1.0

تُنشئ bitmap من مصفوفة من الأعداد الصحيحة غير الموقَّعة. وهي عكس الدالة [`bitmapToArray`](/ar/reference/functions/regular-functions/bitmap-functions#bitmapToArray).

**الصيغة**

```sql theme={null}
bitmapBuild(array)
```

**المعاملات**

* `array` — مصفوفة من الأعداد الصحيحة غير الموقَّعة. [`Array(UInt*)`](/ar/reference/data-types/array)

**القيمة المُعادة**

يعيد bitmap من المصفوفة المُدخلة [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapBuild([1, 2, 3, 4, 5]) AS res, toTypeName(res);
```

```response title=Response theme={null}
┌─res─┬─toTypeName(bitmapBuild([1, 2, 3, 4, 5]))─────┐
│     │ AggregateFunction(groupBitmap, UInt8)        │
└─────┴──────────────────────────────────────────────┘
```

<div id="bitmapCardinality">
  ## bitmapCardinality
</div>

أُضيف في: v20.1.0

يعيد عدد البتات المعيّنة (cardinality) في bitmap.

**الصيغة**

```sql theme={null}
bitmapCardinality(bitmap)
```

**الوسائط**

* `bitmap` — كائن bitmap. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المعادة**

ترجع عدد البتات المعيّنة في bitmap [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapCardinality(bitmapBuild([1, 3, 3, 5, 7, 7])) AS res
```

```response title=Response theme={null}
┌─res─┐
│   4 │
└─────┘
```

<div id="bitmapContains">
  ## bitmapContains
</div>

أُضيف في: v20.1.0

يتحقق مما إذا كانت الخريطة النقطية تحتوي على عنصر معيّن.

**الصيغة**

```sql theme={null}
bitmapContains(bitmap, value)
```

**الوسيطات**

* `bitmap` — كائن bitmap. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `value` — العنصر المراد التحقق منه. [(U)Int8/16/32/64](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تُرجع `1` إذا كانت `bitmap` تحتوي على القيمة المحددة، وإلا فتُرجع `0` [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapContains(bitmapBuild([1, 2, 3]), 2) AS res;
```

```response title=Response theme={null}
┌─res─┐
│  1  │
└─────┘
```

<div id="bitmapHasAll">
  ## bitmapHasAll
</div>

أُضيفت في: v20.1.0

يتحقق مما إذا كانت `bitmap` الأولى تحتوي على جميع البتات المفعّلة في `bitmap` الثانية.

**الصياغة**

```sql theme={null}
bitmapHasAll(bitmap1, bitmap2)
```

**الوسيطات**

* `bitmap1` — كائن bitmap الأول. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `bitmap2` — كائن bitmap الثاني. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المُعادة**

تُرجِع `1` إذا كانت جميع البتات المضبوطة في الـ bitmap الثانية موجودة في الـ bitmap الأولى، وإلا فتُرجِع `0` [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapHasAll(bitmapBuild([1, 2, 3]), bitmapBuild([2, 3])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│  1  │
└─────┘
```

<div id="bitmapHasAny">
  ## bitmapHasAny
</div>

أُضيف في: v20.1.0

يتحقق مما إذا كانت الـ bitmap الأولى تحتوي على أي بتات مضبوطة من الـ bitmap الثانية.

**الصيغة**

```sql theme={null}
bitmapHasAny(bitmap1, bitmap2)
```

**الوسيطات**

* `bitmap1` — كائن bitmap الأول. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `bitmap2` — كائن bitmap الثاني. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المُعادة**

تُرجع `1` إذا وُجدت أي بتات من bitmap الثانية في bitmap الأولى، وإلا فتُرجع `0` [`UInt8`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapHasAny(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│  1  │
└─────┘
```

<div id="bitmapMax">
  ## bitmapMax
</div>

أُضيف في: v20.1.0

يعيد موضع أكبر `bit` مُعيَّن في bitmap، أو `0` إذا كانت bitmap فارغة.

**البنية**

```sql theme={null}
bitmapMax(bitmap)
```

**الوسيطات**

* `bitmap` — كائن bitmap. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المُعادة**

يُرجع موضع أعلى بت مضبوط في الـbitmap، وإلا يُرجع `0` [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapMax(bitmapBuild([1, 2, 3, 4, 5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   5 │
└─────┘
```

<div id="bitmapMin">
  ## bitmapMin
</div>

تم تقديمه في: v20.1.0

يعيد موضع أصغر `bit` مفعَّل في `bitmap`. وإذا كانت جميع `bits` غير مفعَّلة، فيعيد `UINT32_MAX` (أو `UINT64_MAX` إذا كانت `bitmap` تحتوي على أكثر من `2^64` من `bits`).

**البنية**

```sql theme={null}
bitmapMin(bitmap)
```

**الوسائط**

* `bitmap` — كائن bitmap. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المُعادة**

تعيد موضع أصغر بت مُفعَّل في الـ bitmap، أو `UINT32_MAX`/`UINT64_MAX` [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapMin(bitmapBuild([3, 5, 2, 6])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   2 │
└─────┘
```

<div id="bitmapOr">
  ## bitmapOr
</div>

قُدِّمت في: v20.1.0

يحسب عملية الفصل المنطقي (OR) بين خريطتي بت.

**الصيغة**

```sql theme={null}
bitmapOr(bitmap1, bitmap2)
```

**الوسيطات**

* `bitmap1` — كائن الـ bitmap الأول. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `bitmap2` — كائن الـ bitmap الثاني. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المُعادة**

يُرجع bitmap يحتوي على البتات المضبوطة الموجودة في أيٍّ من كائني bitmap المُدخلين [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapOr(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
```

```response title=Response theme={null}
┌─res─────────────┐
│ [1, 2, 3, 4, 5] │
└─────────────────┘
```

<div id="bitmapOrCardinality">
  ## bitmapOrCardinality
</div>

أُضيف في: v20.1.0

يُرجع عدد عناصر عملية الفصل المنطقي (OR) لصورتَي bitmap.

**الصيغة**

```sql theme={null}
bitmapOrCardinality(bitmap1, bitmap2)
```

**الوسيطات**

* `bitmap1` — أول كائن bitmap. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `bitmap2` — ثاني كائن bitmap. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المُعادة**

يعيد عدد البتات المُعيَّنة في اتحاد كائني bitmap [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapOrCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   5 │
└─────┘
```

<div id="bitmapSubsetInRange">
  ## bitmapSubsetInRange
</div>

أُضيفت في: v20.1.0

تعيد مجموعة فرعية من `bitmap` تتضمن فقط `set bits` الواقعة ضمن النطاق المحدد \[start, end). وتستخدم فهرسة تبدأ من 1.

**الصيغة**

```sql theme={null}
bitmapSubsetInRange(bitmap, start, end)
```

**المعاملات**

* `bitmap` — الـ bitmap المطلوب استخراج المجموعة الجزئية منه. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `start` — بداية النطاق (شامل). [`UInt*`](/ar/reference/data-types/int-uint) - `end` — نهاية النطاق (غير شامل). [`UInt*`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

تعيد bitmap يحتوي فقط على البتات المعيّنة ضمن النطاق المحدد [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapSubsetInRange(bitmapBuild([1, 2, 3, 4, 5]), 2, 5)) AS res;
```

```response title=Response theme={null}
┌─res───────┐
│ [2, 3, 4] │
└───────────┘
```

<div id="bitmapSubsetLimit">
  ## bitmapSubsetLimit
</div>

أُضيف في: v20.1.0

يعيد مجموعة فرعية من bitmap بدءًا من الموضع `range_start` وبحد أقصى `cardinality_limit` من البتات المعيّنة. يستخدم فهرسة تبدأ من 1.

**الصياغة**

```sql theme={null}
bitmapSubsetLimit(bitmap, range_start, cardinality_limit)
```

**المعاملات**

* `bitmap` — كائن bitmap. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `range_start` — بداية النطاق (متضمنة). [`UInt32`](/ar/reference/data-types/int-uint) - `cardinality_limit` — الحد الأقصى لكاردينالية المجموعة الفرعية. [`UInt32`](/ar/reference/data-types/int-uint)

**القيمة المعادة**

تُرجِع كائن bitmap يحتوي على ما لا يزيد عن `cardinality_limit` من البتات المضبوطة، بدءًا من `range_start` [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapSubsetLimit(bitmapBuild([1, 5, 3, 2, 8]), 3, 2)) AS res;
```

```response title=Response theme={null}
┌─res────┐
│ [5, 3] │
└────────┘
```

<div id="bitmapToArray">
  ## bitmapToArray
</div>

أُضيفت في: v20.1.0

تحوّل bitmap إلى مصفوفة من الأعداد الصحيحة غير الموقَّعة. وهي عكس الدالة [`bitmapBuild`](/ar/reference/functions/regular-functions/bitmap-functions#bitmapBuild).

**الصيغة**

```sql theme={null}
bitmapToArray(bitmap)
```

**الوسائط**

* `bitmap` — قيمة `bitmap` المطلوب تحويلها. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المُعادة**

يعيد مصفوفة من الأعداد الصحيحة غير الموقَّعة الموجودة في `bitmap` [`Array(UInt*)`](/ar/reference/data-types/array)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapBuild([1, 2, 3, 4, 5])) AS res;
```

```response title=Response theme={null}
┌─res─────────────┐
│ [1, 2, 3, 4, 5] │
└─────────────────┘
```

<div id="bitmapTransform">
  ## bitmapTransform
</div>

أُضيف في: v20.1.0

يغيّر ما يصل إلى N بتًا في bitmap، وذلك باستبدال قيم بتات محددة في `from_array` بالقيم المناظرة لها في `to_array`.

**الصيغة**

```sql theme={null}
bitmapTransform(bitmap, from_array, to_array)
```

**الوسيطات**

* `bitmap` — كائن bitmap. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `from_array` — مصفوفة من البتات المضبوطة الأصلية المطلوب استبدالها. [`Array(T)`](/ar/reference/data-types/array). - `to_array` — مصفوفة من البتات المضبوطة الجديدة المراد الاستبدال بها. [`Array(T)`](/ar/reference/data-types/array).

**القيمة المُعادة**

يعيد bitmap بعناصر حُوِّلت وفقًا للتعيين المحدد [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapTransform(bitmapBuild([1, 2, 3, 4, 5]), [2, 4], [20, 40])) AS res;
```

```response title=Response theme={null}
┌─res───────────────┐
│ [1, 3, 5, 20, 40] │
└───────────────────┘
```

<div id="bitmapXor">
  ## bitmapXor
</div>

طُرحت في: v20.1.0

يحسب الفرق المتماثل (XOR) بين وحدتَي bitmap.

**الصيغة**

```sql theme={null}
bitmapXor(bitmap1, bitmap2)
```

**الوسائط**

* `bitmap1` — كائن الـbitmap الأول. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `bitmap2` — كائن الـbitmap الثاني. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المُعادة**

يُرجع bitmap يحتوي على البتات المضبوطة الموجودة في أي من bitmapَي الإدخال، ولكن ليس في كليهما [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapToArray(bitmapXor(bitmapBuild([1, 2, 3]), bitmapBuild([3, 4, 5]))) AS res;
```

```response title=Response theme={null}
┌─res──────────┐
│ [1, 2, 4, 5] │
└──────────────┘
```

<div id="bitmapXorCardinality">
  ## bitmapXorCardinality
</div>

تم تقديمها في: v20.1.0

تعيد عدد عناصر XOR (الفرق المتماثل) بين bitmapين.

**الصيغة**

```sql theme={null}
bitmapXorCardinality(bitmap1, bitmap2)
```

**الوسيطات**

* `bitmap1` — كائن `bitmap` الأول. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `bitmap2` — كائن `bitmap` الثاني. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction).

**القيمة المعادة**

تعيد عدد البتات المضبوطة في الفرق المتماثل بين كائني `bitmap` [`UInt64`](/ar/reference/data-types/int-uint)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapXorCardinality(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) AS res;
```

```response title=Response theme={null}
┌─res─┐
│   4 │
└─────┘
```

<div id="subBitmap">
  ## subBitmap
</div>

أُضيف في: v21.9.0

يعيد مجموعة فرعية من الخريطة النقطية، بدءًا من الموضع `offset`. الحد الأقصى لعدد العناصر في الخريطة النقطية المُعادة هو `cardinality_limit`.

**بناء الجملة**

```sql theme={null}
subBitmap(bitmap, offset, cardinality_limit)
```

**الوسيطات**

* `bitmap` — كائن bitmap. [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction). - `offset` — عدد البتات المعيّنة المطلوب تخطيها من البداية (بفهرسة تبدأ من الصفر). [`UInt32`](/ar/reference/data-types/int-uint) - `cardinality_limit` — الحد الأقصى لعدد البتات المعيّنة التي يمكن تضمينها في المجموعة الفرعية. [`UInt32`](/ar/reference/data-types/int-uint)

**القيمة المُعادة**

يعيد bitmap يحتوي على عدد لا يتجاوز `limit` من البتات المعيّنة، بعد تخطي `offset` من البتات المعيّنة وبترتيب تصاعدي [`AggregateFunction(groupBitmap, T)`](/ar/reference/data-types/aggregatefunction)

**أمثلة**

**مثال على الاستخدام**

```sql title=Query theme={null}
SELECT bitmapToArray(subBitmap(bitmapBuild([1, 2, 3, 4, 5]), 2, 2)) AS res;
```

```response title=Response theme={null}
┌─res────┐
│ [3, 4] │
└────────┘
```
