الانتقال إلى المحتوى الرئيسي

array

أُضيف في: v1.1.0 ينشئ مصفوفة من وسيطات الدالة. يجب أن تكون الوسيطات ثوابت، وأن تكون أنواعها قابلة للاشتراك في نوع أعلى مشترك. يجب تمرير وسيطة واحدة على الأقل، لأن نوع المصفوفة المطلوب إنشاؤها لن يكون واضحًا بخلاف ذلك. وهذا يعني أنه لا يمكنك استخدام هذه الدالة لإنشاء مصفوفة فارغة. ولتنفيذ ذلك، استخدم الدالة emptyArray*. استخدم العامل [ ] للحصول على الوظيفة نفسها. الصيغة
array(x1 [, x2, ..., xN])
الوسيطات
  • x1 — قيمة ثابتة من أي نوع T. إذا تم توفير هذا الوسيط فقط، فستكون المصفوفة من النوع T. - [, x2, ..., xN]N قيم ثابتة إضافية لها نوع أعلى مشترك مع x1
القيمة المُعادة تعيد مصفوفة، حيث إن ‘T’ هو أصغر نوع مشترك بين الوسيطات المُمرَّرة. Array(T) أمثلة استخدام صحيح
Query
SELECT array(toInt32(1), toUInt16(2), toInt8(3)) AS a, toTypeName(a)
Response
┌─a───────┬─toTypeName(a)─┐
│ [1,2,3] │ Array(Int32)  │
└─────────┴───────────────┘
استخدام غير صحيح
Query
SELECT array(toInt32(5), toDateTime('1998-06-16'), toInt8(5)) AS a, toTypeName(a)
Response
Received exception from server (version 25.4.3):
Code: 386. DB::Exception: Received from localhost:9000. DB::Exception:
There is no supertype for types Int32, DateTime, Int8 ...

arrayAUCPR

أُضيفت في: v20.4.0 تحسب المساحة تحت منحنى الدقة والاستدعاء (PR). يُنشأ منحنى الدقة والاستدعاء برسم الدقة على المحور y والاستدعاء على المحور x عبر جميع العتبات. تتراوح القيمة الناتجة بين 0 و1، وتشير القيمة الأعلى إلى أداء أفضل للنموذج. تكون PR AUC مفيدة بشكل خاص مع مجموعات البيانات غير المتوازنة، إذ توفّر مقارنة أوضح للأداء من ROC AUC في هذه الحالات. لمزيد من التفاصيل، يُرجى الاطلاع على هنا، وهنا، وهنا. الصيغة
arrayAUCPR(scores, labels[, partial_offsets])
الأسماء البديلة: arrayPRAUC الوسائط
  • cores — الدرجات التي ينتجها نموذج التنبؤ. Array((U)Int*) أو Array(Float*)
  • labels — تسميات العينات، وعادةً ما تكون 1 للعينة الإيجابية و0 للعينة السلبية. Array((U)Int*) أو Array(Enum)
  • partial_offsets
  • اختياري. مصفوفة Array(T) تتكوّن من ثلاثة أعداد صحيحة غير سالبة لحساب مساحة جزئية تحت منحنى PR (وهو ما يعادل شريطًا رأسيًا في فضاء PR) بدلًا من حساب AUC بالكامل. يفيد هذا الخيار في الحساب الموزّع لـ PR AUC. يجب أن تحتوي المصفوفة على العناصر التالية [higher_partitions_tp, higher_partitions_fp, total_positives].
    • higher_partitions_tp: عدد التسميات الإيجابية في الأقسام ذات الدرجات الأعلى.
    • higher_partitions_fp: عدد التسميات السلبية في الأقسام ذات الدرجات الأعلى.
    • total_positives: العدد الإجمالي للعينات الإيجابية في مجموعة البيانات بأكملها.
عند استخدام arr_partial_offsets، يجب أن يكون كل من arr_scores وarr_labels مجرد قسم من مجموعة البيانات بأكملها، ويحتوي على نطاق من الدرجات. يجب تقسيم مجموعة البيانات إلى أقسام متجاورة، بحيث يحتوي كل قسم على مجموعة فرعية من البيانات التي تقع درجاتها ضمن نطاق محدد. على سبيل المثال:
  • قد يحتوي أحد الأقسام على جميع الدرجات ضمن النطاق [0, 0.5).
  • وقد يحتوي قسم آخر على الدرجات ضمن النطاق [0.5, 1.0].
القيمة المُعادة تعيد المساحة تحت منحنى الدقة-الاستدعاء (PR). Float64 أمثلة مثال على الاستخدام
Query
SELECT arrayAUCPR([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1]);
Response
┌─arrayAUCPR([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1])─┐
│                              0.8333333333333333 │
└─────────────────────────────────────────────────┘

arrayAll

أُضيف في: v1.1.0 يعيد 1 إذا أرجعت الدالة lambda ‏func(x [, y1, y2, ... yN]) القيمة true لجميع العناصر. وإلا، فيعيد 0. البنية
arrayAll(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])
الوسيطات
  • func(x[, y1, ..., yN]) — دالة لامبدا تعمل على عناصر مصفوفة المصدر (x) ومصفوفات الشرط (y). Lambda function
  • source_arr — مصفوفة المصدر المراد معالجتها. Array(T)
  • cond1_arr, ... — اختياري. عدد N من مصفوفات الشرط التي توفّر وسيطات إضافية لدالة لامبدا. Array(T)
القيمة المعادة تعيد 1 إذا كانت دالة لامبدا تُرجع true لجميع العناصر، وإلا فتُرجع 0 UInt8 أمثلة جميع العناصر تستوفي الشرط
Query
SELECT arrayAll(x, y -> x=y, [1, 2, 3], [1, 2, 3])
Response
1
لا تتطابق جميع العناصر
Query
SELECT arrayAll(x, y -> x=y, [1, 2, 3], [1, 1, 1])
Response
0

arrayAutocorrelation

أُضيفت في: v26.4.0 يحسب الارتباط الذاتي لمصفوفة. إذا تم توفير max_lag، فسيحسب الارتباط فقط لقيم التأخر ضمن النطاق [0, max_lag). إذا لم يتم توفير max_lag، فسيحسبه لجميع قيم التأخر الممكنة. الصيغة
arrayAutocorrelation(arr, [max_lag])
الوسيطات
  • arr — مصفوفة من الأرقام. Array(T)
  • max_lag — اختياري. الحد الأقصى لعدد فترات التأخر المطلوب حسابها. يجب أن يكون عددًا صحيحًا غير سالب. Integer
القيمة المُعادة يعيد مصفوفة من نوع Float64. ويعيد NaN إذا كان التباين يساوي 0. Array(Float64) أمثلة خطي
Query
SELECT arrayAutocorrelation([1, 2, 3, 4, 5]);
Response
[1, 0.4, -0.1, -0.4, -0.4]
متناظر
Query
SELECT arrayAutocorrelation([10, 20, 10]);
Response
[1, -0.6666666666666669, 0.16666666666666674]
ثابت
Query
SELECT arrayAutocorrelation([5, 5, 5]);
Response
[nan, nan, nan]
محدود
Query
SELECT arrayAutocorrelation([1, 2, 3, 4, 5], 2);
Response
[1, 0.4]

arrayAvg

قُدِّمت في: v21.1.0 يعيد متوسط عناصر المصفوفة المصدر. إذا تم تحديد دالة لامدا func، فسيُعاد متوسط عناصر النتائج الناتجة عن اللامدا. الصيغة
arrayAvg([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr])
الوسيطات
  • func(x[, y1, ..., yN]) — اختياري. دالة لامبدا تعمل على عناصر مصفوفة المصدر (x) ومصفوفات الشرط (y). Lambda function
  • source_arr — مصفوفة المصدر المطلوب معالجتها. Array(T)
  • [, cond1_arr, ... , condN_arr] — اختياري. N من مصفوفات الشرط التي توفّر وسيطات إضافية لدالة لامبدا. Array(T)
القيمة المعادة تعيد متوسط عناصر مصفوفة المصدر، أو متوسط عناصر ناتج دالة لامبدا إذا تم توفيرها. Float64 أمثلة مثال أساسي
Query
SELECT arrayAvg([1, 2, 3, 4]);
Response
2.5
الاستخدام مع دالة لامدا
Query
SELECT arrayAvg(x, y -> x*y, [2, 3], [2, 3]) AS res;
Response
6.5

arrayBottomK

أُضيفت في: v26.6.0 تعيد مصفوفة تضم أصغر K عنصرًا من مصفوفة الإدخال، مرتبة بترتيب تصاعدي. إذا تم تحديد دالة لامدا f، فتُقارَن العناصر بناءً على نتيجة تطبيق f على كل عنصر. إذا كانت f تقبل عدة وسائط، فستُمرَّر مصفوفات إضافية إلى arrayBottomK، وتكون عناصرها مطابقةً لوسائط f. يتم تخطي قيم NULL ولا تظهر في النتيجة. ويكون حجم النتيجة بحد أقصى K وقد يكون أصغر إذا كانت مصفوفة الإدخال تحتوي على عدد من العناصر غير NULL أقل من K. ويكون نوع عنصر النتيجة هو النظير غير القابل لأن تكون قيمته NULL لنوع عنصر الإدخال. arrayBottomK هي دالة عالية الرتبة. انظر أيضًا:
  • arrayTopK، التي تعيد أكبر K عنصرًا بدلًا من ذلك.
  • arrayPartialSort، التي تنتج عناصر K نفسها في المواضع [1..K] ولكن تُبقي أيضًا العناصر المتبقية بترتيب غير محدد، ولا تتخطى القيم الفارغة.
الصياغة
arrayBottomK([f,] K, arr [, arr1, ... ,arrN])
الوسيطات
  • f(arr[, arr1, ... ,arrN]) — اختياري. دالة لامدا لحساب مفتاح الفرز لكل عنصر. دالة لامدا
  • K — عدد أصغر العناصر المطلوب إرجاعها. (U)Int8/16/32/64
  • arr — مصفوفة. Array(T)
  • arr1, ... ,arrNN من المصفوفات الإضافية، في حال كانت f تقبل عدة وسيطات. Array(T)
القيمة المعادة يعيد ما يصل إلى K من عناصر arr الأصغر قيمةً (أو أصغر نتائج لامدا)، مرتبة بترتيب تصاعدي. يتم تخطي قيم NULL. وتكون المصفوفة المعادة من نوع العنصر T حتى عندما يكون الإدخال من النوع Nullable(T). أمثلة simple_int
Query
SELECT arrayBottomK(3, [1, 5, 2, 7, 3])
Response
[1,2,3]
skip_nulls
Query
SELECT arrayBottomK(3, [1, NULL, 5, 2, NULL, 7])
Response
[1,2,5]
fewer_than_k
Query
SELECT arrayBottomK(5, [1, NULL, 2])
Response
[1,2]
lambda_simple
Query
SELECT arrayBottomK((x) -> -x, 2, [5, 9, 1, 3])
Response
[9,5]
lambda_multi
Query
SELECT arrayBottomK((x, y) -> y, 2, ['a', 'b', 'c'], [3, 1, 2])
Response
['b','c']

arrayCompact

أُضيفت في: v20.1.0 تزيل العناصر المكررة المتتالية من المصفوفة، بما في ذلك قيم null. ويُحدَّد ترتيب القيم في المصفوفة الناتجة بحسب ترتيبها في المصفوفة المُدخلة. الصيغة
arrayCompact(arr)
المعاملات
  • arr — مصفوفة تُزال منها القيم المكررة. Array(T)
القيمة المعادة تُرجع مصفوفةً من دون قيم مكررة Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayCompact([1, 1, nan, nan, 2, 3, 3, 3]);
Response
[1,nan,2,3]

arrayConcat

ظهر لأول مرة في: v1.1.0 يدمج المصفوفات المُمرَّرة كوسيطات. البنية
arrayConcat(arr1 [, arr2, ... , arrN])
الوسيطات
  • arr1 [, arr2, ... , arrN] — عدد N من المصفوفات المراد ضمّها. Array(T)
القيمة المُعادة تُرجع مصفوفة واحدة مدمجة من وسيطات المصفوفات المُدخلة. Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayConcat([1, 2], [3, 4], [5, 6]) AS res
Response
[1, 2, 3, 4, 5, 6]

arrayCount

أُضيفت في: v1.1.0 تعيد عدد العناصر التي تُرجِع func(arr1[i], ..., arrN[i]) القيمة true لها. إذا لم يتم تحديد func، فإنها تعيد عدد العناصر غير الصفرية في Array. تُعد arrayCount دالة عالية الرتبة. الصياغة
arrayCount([func, ] arr1, ...)
المعاملات
  • func — اختياري. الدالة المراد تطبيقها على كل عنصر في المصفوفة (أو المصفوفات). دالة لامبدا
  • arr1, ..., arrN — عددها N من المصفوفات. Array(T)
القيمة المُعادة تعيد عدد العناصر التي تُرجع func لها القيمة true. وإلا، تعيد عدد العناصر غير الصفرية في المصفوفة. UInt32 أمثلة مثال على الاستخدام
Query
SELECT arrayCount(x -> (x % 2), groupArray(number)) FROM numbers(10)
Response
5

arrayCumSum

تم تقديمها في: v1.1.0 تعيد مصفوفة تحتوي على المجاميع الجزئية (التراكمية) لعناصر مصفوفة الإدخال. إذا جرى تحديد دالة لامبدا، فيُحسب المجموع بتطبيق دالة لامبدا على عناصر المصفوفة في كل موضع. البنية
arrayCumSum([func,] arr1[, arr2, ... , arrN])
الوسائط
  • func — اختياري. دالة لامبدا تُطبَّق على عناصر المصفوفة عند كل موضع. Lambda function
  • arr1 — مصفوفة المصدر للقيم الرقمية. Array(T)
  • [arr2, ..., arrN] — اختياري. مصفوفات إضافية بالحجم نفسه، تُمرَّر كوسائط إلى دالة لامبدا إذا جرى تحديدها. Array(T)
القيمة المُعادة تعيد مصفوفة من المجاميع الجزئية لعناصر مصفوفة المصدر. يتطابق نوع النتيجة مع النوع الرقمي لمصفوفة الإدخال. Array(T) أمثلة الاستخدام الأساسي
Query
SELECT arrayCumSum([1, 1, 1, 1]) AS res
Response
[1, 2, 3, 4]
باستخدام دالة لامبدا
Query
SELECT arrayCumSum(x -> x * 2, [1, 2, 3]) AS res
Response
[2, 6, 12]

arrayCumSumNonNegative

أُضيف في: v18.12.0 يعيد مصفوفة من المجاميع الجزئية (التراكمية) لعناصر مصفوفة المصدر، مع استبدال أي مجموع تراكمي سالب بالصفر. إذا جرى تحديد دالة لامبدا، يُحتسب المجموع عبر تطبيق دالة لامبدا على عناصر المصفوفة عند كل موضع. البنية
arrayCumSumNonNegative([func,] arr1[, arr2, ... , arrN])
الوسائط
  • func — اختياري. دالة لامبدا تُطبَّق على عناصر المصفوفة عند كل موضع. Lambda function
  • arr1 — مصفوفة المصدر للقيم الرقمية. Array(T)
  • [arr2, ..., arrN] — اختياري. مصفوفات إضافية بالحجم نفسه، تُمرَّر كوسائط إلى دالة لامبدا إذا جرى تحديدها. Array(T)
القيمة المعادة تعيد مصفوفة من المجاميع الجزئية لعناصر مصفوفة المصدر، مع استبدال أي مجموع تراكمي سالب بالصفر. يطابق نوع النتيجة النوع الرقمي لمصفوفة الإدخال. Array(T) أمثلة الاستخدام الأساسي
Query
SELECT arrayCumSumNonNegative([1, 1, -4, 1]) AS res
Response
[1, 2, 0, 1]
باستخدام دالة لامبدا
Query
SELECT arrayCumSumNonNegative(x -> x * 2, [1, -2, 3]) AS res
Response
[2, 0, 6]

arrayDifference

أُضيف في: v1.1.0 يحسب مصفوفة من الفروق بين عناصر المصفوفة المتجاورة. سيكون العنصر الأول في المصفوفة الناتجة هو 0، والثاني arr[1] - arr[0]، والثالث arr[2] - arr[1]، وهكذا. يُحدَّد نوع العناصر في المصفوفة الناتجة وفقًا لقواعد استدلال النوع الخاصة بالطرح (على سبيل المثال UInt8 - UInt8 = Int16). البنية
arrayDifference(arr)
الوسائط
  • arr — المصفوفة التي تُحسَب لها الفروق بين العناصر المتجاورة. Array(T)
القيمة المُعادة يعيد مصفوفة تحتوي على الفروق بين العناصر المتجاورة في المصفوفة UInt* أمثلة مثال على الاستخدام
Query
SELECT arrayDifference([1, 2, 3, 4]);
Response
[0,1,1,1]
مثال على تجاوز السعة بسبب نوع النتيجة Int64
Query
SELECT arrayDifference([0, 10000000000000000000]);
Response
┌─arrayDifference([0, 10000000000000000000])─┐
│ [0,-8446744073709551616]                   │
└────────────────────────────────────────────┘

arrayDistinct

أُضيفت في: v1.1.0 تُرجع مصفوفة لا تحتوي إلا على العناصر الفريدة في المصفوفة. البنية
arrayDistinct(arr)
الوسائط
  • arr — المصفوفة التي تُستخرج منها العناصر الفريدة. Array(T)
القيمة المعادة تُرجِع مصفوفة تحتوي على العناصر الفريدة Array(T) أمثلة مثال للاستخدام
Query
SELECT arrayDistinct([1, 2, 2, 3, 1]);
Response
[1,2,3]

arrayDotProduct

ظهر في: v23.5.0 يعيد الجداء النقطي لمصفوفتين.
يجب أن يكون حجما المتجهين متساويين. كما يمكن أن تحتوي Array وTuple أيضًا على أنواع عناصر مختلطة.
البنية
arrayDotProduct(v1, v2)
الوسائط القيمة المُعادة الجداء النقطي للمتجهين.
يتحدد نوع الإرجاع حسب نوع الوسائط. إذا كانت Arrays أو Tuples تحتوي على أنواع عناصر مختلطة، فسيكون نوع النتيجة هو النوع الفائق.
(U)Int* أو Float* أو Decimal أمثلة مثال على Array
Query
SELECT arrayDotProduct([1, 2, 3], [4, 5, 6]) AS res, toTypeName(res);
Response
32    UInt16
مثال على Tuple
Query
SELECT dotProduct((1::UInt16, 2::UInt8, 3::Float32),(4::Int16, 5::Float32, 6::UInt8)) AS res, toTypeName(res);
Response
32    Float64

arrayElement

قُدِّمت في: v1.1.0 تُرجِع عنصر المصفوفة المُعطاة عند الفهرس n، حيث يمكن أن يكون n أي نوع من الأعداد الصحيحة. إذا كان الفهرس خارج حدود المصفوفة، فستُرجِع قيمة افتراضية (0 للأرقام، وسلسلة فارغة للنصوص، وما إلى ذلك)، باستثناء وسيطات مصفوفة غير ثابتة وفهرس ثابت قيمته 0. في هذه الحالة سيظهر الخطأ Array indices are 1-based.
المصفوفات في ClickHouse تبدأ فهارسها من 1.
الفهارس السالبة مدعومة. في هذه الحالة، يُختار العنصر المقابل بعد العد من النهاية. على سبيل المثال، arr[-1] هو العنصر الأخير في المصفوفة. يوفّر العامل [n] الوظيفة نفسها. الصياغة
arrayElement(arr, n)
الوسيطات
  • arr — المصفوفة المراد البحث فيها. Array(T). - n — موضع العنصر المراد الحصول عليه. (U)Int*.
القيمة المُعادة يعيد مصفوفةً واحدةً مدمجة من وسيطات المصفوفات المُقدَّمة Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayElement(arr, 2) FROM (SELECT [1, 2, 3] AS arr)
Response
2
الفهرسة بالمؤشرات السالبة
Query
SELECT arrayElement(arr, -1) FROM (SELECT [1, 2, 3] AS arr)
Response
3
استخدام الصيغة [n]
Query
SELECT arr[2] FROM (SELECT [1, 2, 3] AS arr)
Response
2
الفهرس خارج نطاق المصفوفة
Query
SELECT arrayElement(arr, 4) FROM (SELECT [1, 2, 3] AS arr)
Response
0

arrayElementOrNull

أُضيفت في: v1.1.0 تسترجع العنصر من المصفوفة المحددة عند الفهرس n، حيث يمكن أن يكون n من أي نوع عدد صحيح. إذا كان الفهرس خارج حدود المصفوفة، فستُعاد NULL بدلًا من القيمة الافتراضية.
المصفوفات في ClickHouse تبدأ فهارسها من 1.
الفهارس السالبة مدعومة. في هذه الحالة، يُختار العنصر المقابل عند العد من النهاية. على سبيل المثال، arr[-1] هو آخر عنصر في المصفوفة. الصيغة
arrayElementOrNull(arrays)
الوسيطات
  • arrays — عدد غير محدد من وسيطات المصفوفة. Array
القيمة المُعادة تُرجِع مصفوفةً واحدةً مدمجة من وسيطات المصفوفة المُمرَّرة. Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayElementOrNull(arr, 2) FROM (SELECT [1, 2, 3] AS arr)
Response
2
الفهرسة بالمؤشرات السالبة
Query
SELECT arrayElementOrNull(arr, -1) FROM (SELECT [1, 2, 3] AS arr)
Response
3
الفهرس خارج نطاق المصفوفة
Query
SELECT arrayElementOrNull(arr, 4) FROM (SELECT [1, 2, 3] AS arr)
Response
NULL

arrayEnumerate

أُضيفت في: v1.1.0 يُرجع المصفوفة [1, 2, 3, ..., length (arr)] تُستخدم هذه الدالة عادةً مع عبارة ARRAY JOIN. وهي تتيح احتساب شيءٍ ما مرة واحدة فقط لكل مصفوفة بعد تطبيق ARRAY JOIN. ويمكن أيضًا استخدام هذه الدالة في الدوال عالية الرتبة. على سبيل المثال، يمكنك استخدامها للحصول على فهارس عناصر المصفوفة التي تطابق شرطًا. الصياغة
arrayEnumerate(arr)
المعاملات
  • arr — المصفوفة المطلوب تعداد عناصرها. Array
القيمة المعادة تُرجِع المصفوفة [1, 2, 3, ..., length (arr)]. Array(UInt32) أمثلة مثال أساسي مع ARRAY JOIN
Query
CREATE TABLE test
(
    `id` UInt8,
    `tag` Array(String),
    `version` Array(String)
)
ENGINE = MergeTree
ORDER BY id;

INSERT INTO test VALUES (1, ['release-stable', 'dev', 'security'], ['2.4.0', '2.6.0-alpha', '2.4.0-sec1']);

SELECT
    id,
    tag,
    version,
    seq
FROM test
ARRAY JOIN
    tag,
    version,
    arrayEnumerate(tag) AS seq
Response
┌─id─┬─tag────────────┬─version─────┬─seq─┐
│  1 │ release-stable │ 2.4.0       │   1 │
│  1 │ dev            │ 2.6.0-alpha │   2 │
│  1 │ security       │ 2.4.0-sec1  │   3 │
└────┴────────────────┴─────────────┴─────┘

arrayEnumerateDense

استُحدثت في: v18.12.0 تعيد مصفوفة بالحجم نفسه مثل المصفوفة المصدر، وتُشير إلى موضع أول ظهور لكل عنصر في المصفوفة المصدر. البنية
arrayEnumerateDense(arr)
الوسائط
  • arr — المصفوفة المطلوب ترقيم عناصرها. Array(T)
القيمة المُعادة يعيد مصفوفة بنفس حجم arr، وتشير إلى الموضع الذي يظهر فيه كل عنصر لأول مرة في المصفوفة الأصلية Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayEnumerateDense([10, 20, 10, 30])
Response
[1,2,1,3]

arrayEnumerateDenseRanked

أُضيفت في: v20.1.0 تُرجِع مصفوفة بالحجم نفسه مثل المصفوفة المصدر، مع الإشارة إلى الموضع الذي يظهر فيه كل عنصر لأول مرة في المصفوفة المصدر. وتتيح تعداد مصفوفة متعددة الأبعاد مع إمكانية تحديد مدى العمق المطلوب النظر إليه داخل المصفوفة. البنية
arrayEnumerateDenseRanked(clear_depth, arr, max_array_depth)
المعاملات
  • clear_depth — عدِّد العناصر في المستوى المحدد كلٌّ على حدة. يجب أن تكون قيمته أقل من أو تساوي max_arr_depth. UInt*
  • arr — مصفوفة متعددة الأبعاد N المطلوب تعدادها. Array(T)
  • max_array_depth — الحد الأقصى للعمق الفعّال. يجب أن يكون أقل من أو يساوي عمق arr. UInt*
القيمة المُعادة تُعيد مصفوفةً تُبيّن موضع الظهور الأول لكل عنصر في المصفوفة المصدر Array أمثلة الاستخدام الأساسي
Query
-- With clear_depth=1 and max_array_depth=1, the result is identical to what arrayEnumerateDense would give.

SELECT arrayEnumerateDenseRanked(1,[10, 20, 10, 30],1);
Response
[1,2,1,3]
الاستخدام مع مصفوفة متعددة الأبعاد
Query
-- In this example, arrayEnumerateDenseRanked is used to obtain an array indicating, for each element of the
-- multidimensional array, what its position is among elements of the same value.
-- For the first row of the passed array, [10, 10, 30, 20], the corresponding first row of the result is [1, 1, 2, 3],
-- indicating that 10 is the first number encountered in position 1 and 2, 30 the second number encountered in position 3
-- and 20 is the third number encountered in position 4.
-- For the second row, [40, 50, 10, 30], the corresponding second row of the result is [4,5,1,2], indicating that 40
-- and 50 are the fourth and fifth numbers encountered in position 1 and 2 of that row, that another 10
-- (the first encountered number) is in position 3 and 30 (the second number encountered) is in the last position.

SELECT arrayEnumerateDenseRanked(1,[[10,10,30,20],[40,50,10,30]],2);
Response
[[1,1,2,3],[4,5,1,2]]
مثال مع زيادة قيمة clear_depth
Query
-- Changing clear_depth=2 results in the enumeration occurring separately for each row anew.

SELECT arrayEnumerateDenseRanked(2,[[10,10,30,20],[40,50,10,30]],2);
Response
[[1, 1, 2, 3], [1, 2, 3, 4]]

arrayEnumerateUniq

قُدِّمت في: v1.1.0 تعيد مصفوفة بالحجم نفسه لمصفوفة المصدر، بحيث تبيّن لكل عنصر ترتيبه بين العناصر ذات القيمة نفسها. تكون هذه الدالة مفيدة عند استخدام ARRAY JOIN وتجميع عناصر المصفوفة. يمكن للدالة قبول عدة مصفوفات بالحجم نفسه كوسيطات. في هذه الحالة، يُحدَّد التفرد وفقًا لـ Tuple المكوَّن من العناصر الواقعة في المواضع نفسها عبر جميع المصفوفات. الصيغة
arrayEnumerateUniq(arr1[, arr2, ... , arrN])
الوسائط
  • arr1 — المصفوفة الأولى المراد معالجتها. Array(T)
  • arr2, ... — اختياري. مصفوفات إضافية بالحجم نفسه للتفرّد بحسب الـ tuple. Array(UInt32)
القيمة المعادة يعيد مصفوفة يكون كل عنصر فيها هو ترتيبه بين العناصر ذات القيمة نفسها أو الـ tuple نفسه. Array(T) أمثلة الاستخدام الأساسي
Query
SELECT arrayEnumerateUniq([10, 20, 10, 30]);
Response
[1, 1, 2, 1]
مصفوفات متعددة
Query
SELECT arrayEnumerateUniq([1, 1, 1, 2, 2, 2], [1, 1, 2, 1, 1, 2]);
Response
[1,2,1,1,2,1]
التجميع باستخدام ARRAY JOIN
Query
-- Each goal ID has a calculation of the number of conversions (each element in the Goals nested data structure is a goal that was reached, which we refer to as a conversion)
-- and the number of sessions. Without ARRAY JOIN, we would have counted the number of sessions as sum(Sign). But in this particular case,
-- the rows were multiplied by the nested Goals structure, so in order to count each session one time after this, we apply a condition to the
-- value of the arrayEnumerateUniq(Goals.ID) function.

SELECT
    Goals.ID AS GoalID,
    sum(Sign) AS Reaches,
    sumIf(Sign, num = 1) AS Visits
FROM test.visits
ARRAY JOIN
    Goals,
    arrayEnumerateUniq(Goals.ID) AS num
WHERE CounterID = 160656
GROUP BY GoalID
ORDER BY Reaches DESC
LIMIT 10
Response
┌──GoalID─┬─Reaches─┬─Visits─┐
│   53225 │    3214 │   1097 │
│ 2825062 │    3188 │   1097 │
│   56600 │    2803 │    488 │
│ 1989037 │    2401 │    365 │
│ 2830064 │    2396 │    910 │
│ 1113562 │    2372 │    373 │
│ 3270895 │    2262 │    812 │
│ 1084657 │    2262 │    345 │
│   56599 │    2260 │    799 │
│ 3271094 │    2256 │    812 │
└─────────┴─────────┴────────┘

arrayEnumerateUniqRanked

قُدِّمت في: v20.1.0 تُرجع مصفوفة (أو مصفوفة متعددة الأبعاد) بالأبعاد نفسها مثل المصفوفة المصدر، وتوضّح، لكل عنصر، ترتيبه بين العناصر ذات القيمة نفسها. وتتيح تعداد مصفوفة متعددة الأبعاد مع إمكانية تحديد عمق البحث داخل المصفوفة. الصيغة
arrayEnumerateUniqRanked(clear_depth, arr, max_array_depth)
الوسيطات
  • clear_depth — رقّم العناصر في المستوى المحدد كلٌّ على حدة. عدد صحيح موجب أصغر من أو يساوي max_arr_depth. UInt*
  • arr — مصفوفة متعددة الأبعاد المطلوب ترقيمها. Array(T)
  • max_array_depth — الحد الأقصى للعمق الفعّال. عدد صحيح موجب أصغر من أو يساوي عمق arr. UInt*
القيمة المعادة تعيد مصفوفة متعددة الأبعاد لها الحجم نفسه الذي لـ arr، بحيث يبيّن كل عنصر موضعه بالنسبة إلى العناصر الأخرى ذات القيمة نفسها. Array(T) أمثلة المثال 1
Query
-- With clear_depth=1 and max_array_depth=1, the result of arrayEnumerateUniqRanked
-- is identical to that which arrayEnumerateUniq would give for the same array.

SELECT arrayEnumerateUniqRanked(1, [1, 2, 1], 1);
Response
[1, 1, 2]
مثال 2
Query
-- with clear_depth=1 and max_array_depth=1, the result of arrayEnumerateUniqRanked
-- is identical to that which arrayEnumerateUniqwould give for the same array.

SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2);", "[[1, 1, 1], [2, 3, 2], [2]]
Response
[1, 1, 2]
مثال 3
Query
-- In this example, arrayEnumerateUniqRanked is used to obtain an array indicating,
-- for each element of the multidimensional array, what its position is among elements
-- of the same value. For the first row of the passed array, [1, 2, 3], the corresponding
-- result is [1, 1, 1], indicating that this is the first time 1, 2 and 3 are encountered.
-- For the second row of the provided array, [2, 2, 1], the corresponding result is [2, 3, 3],
-- indicating that 2 is encountered for a second and third time, and 1 is encountered
-- for the second time. Likewise, for the third row of the provided array [3] the
-- corresponding result is [2] indicating that 3 is encountered for the second time.

SELECT arrayEnumerateUniqRanked(1, [[1, 2, 3], [2, 2, 1], [3]], 2);
Response
[[1, 1, 1], [2, 3, 2], [2]]
مثال 4
Query
-- Changing clear_depth=2, results in elements being enumerated separately for each row.
SELECT arrayEnumerateUniqRanked(2,[[1, 2, 3],[2, 2, 1],[3]], 2);
Response
[[1, 1, 1], [1, 2, 1], [1]]

arrayExcept

أُضيف في: v25.9.0 يُرجع مصفوفة تحتوي على العناصر الموجودة في source وغير الموجودة في except، مع الحفاظ على ترتيبها الأصلي. تُجري هذه الدالة عملية فرق بين مصفوفتين. ولكل عنصر في source، تتحقق مما إذا كان هذا العنصر موجودًا في except (باستخدام مقارنة تامة). وإذا لم يكن موجودًا، فسيُدرج في النتيجة. تحافظ هذه العملية على الخصائص التالية:
  1. يُحفَظ ترتيب العناصر القادمة من source
  2. تُحفَظ العناصر المكررة في source إذا لم تكن موجودة في except
  3. يُتعامل مع NULL بوصفه قيمة مستقلة
الصياغة
arrayExcept(source, except)
الوسائط
  • source — مصفوفة المصدر التي تحتوي على العناصر المطلوب تصفيتها. Array(T)
  • except — المصفوفة التي تحتوي على العناصر المطلوب استبعادها من النتيجة. Array(T)
القيمة المعادة تعيد مصفوفة من النوع نفسه لمصفوفة الإدخال، وتحتوي على عناصر من source لم يُعثر عليها في except. Array(T) أمثلة أساسي
Query
SELECT arrayExcept([1, 2, 3, 2, 4], [3, 5])
Response
[1, 2, 2, 4]
with_nulls1
Query
SELECT arrayExcept([1, NULL, 2, NULL], [2])
Response
[1, NULL, NULL]
with_nulls2
Query
SELECT arrayExcept([1, NULL, 2, NULL], [NULL, 2, NULL])
Response
[1]
السلاسل النصية
Query
SELECT arrayExcept(['apple', 'banana', 'cherry'], ['banana', 'date'])
Response
['apple', 'cherry']

arrayExists

قُدِّم في: v1.1.0 يعيد 1 إذا وُجد عنصر واحد على الأقل في المصفوفة المصدر بحيث تُعيد func(x[, y1, y2, ... yN]) القيمة true. وإلا، يعيد 0. البنية
arrayExists(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])
الوسيطات
  • func(x[, y1, ..., yN]) — دالة لامدا تعمل على عناصر المصفوفة المصدر (x) ومصفوفات الشرط (y). Lambda function
  • source_arr — المصفوفة المصدر المطلوب معالجتها. Array(T)
  • [, cond1_arr, ... , condN_arr] — اختياري. عدد N من مصفوفات الشرط التي توفّر وسيطات إضافية لدالة لامدا. Array(T)
القيمة المعادة تعيد 1 إذا أعادت دالة لامدا القيمة true لعنصر واحد على الأقل، و0 خلاف ذلك UInt8 أمثلة مثال للاستخدام
Query
SELECT arrayExists(x, y -> x=y, [1, 2, 3], [0, 0, 0])
Response
0

arrayFill

أُضيفت في: v20.1.0 تعالج الدالة arrayFill مصفوفة المصدر بالتسلسل من العنصر الأول إلى العنصر الأخير، مع تقييم شرط دالة lambda عند كل موضع باستخدام عناصر من مصفوفة المصدر ومصفوفات الشرط. عندما يُقيَّم شرط دالة lambda إلى false عند الموضع i، تستبدل الدالة ذلك العنصر بالعنصر الموجود عند الموضع i-1 من الحالة الحالية للمصفوفة. ويُحفَظ العنصر الأول دائمًا بغضّ النظر عن أي شرط. البنية
arrayFill(func(x [, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])
الوسائط
  • func(x [, y1, ..., yN]) — دالة لامدا func(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN]) تعمل على عناصر المصفوفة المصدر (x) ومصفوفات الشروط (y). دالة لامدا
  • source_arr — المصفوفة المصدر المطلوب معالجتها. دالة لامدا
  • [, cond1_arr, ... , condN_arr] — اختياري. عدد N من مصفوفات الشروط التي توفّر وسائط إضافية لدالة لامدا. Array(T)
القيمة المُعادة تعيد مصفوفة Array(T) أمثلة مثال باستخدام مصفوفة واحدة
Query
SELECT arrayFill(x -> not isNull(x), [1, null, 2, null]) AS res
Response
[1, 1, 2, 2]
مثال على مصفوفتين
Query
SELECT arrayFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [10, 2, 8, 5]) AS res
Response
[5, 5, 6, 6]

arrayFilter

متوفّرة منذ: v1.1.0 تُرجع مصفوفة تحتوي فقط على العناصر في المصفوفة المصدر التي تُرجع لها دالة لامبدا القيمة true. البنية
arrayFilter(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])]
الوسائط
  • func(x[, y1, ..., yN]) — دالة لامبدا تعمل على عناصر مصفوفة المصدر (x) ومصفوفات الشرط (y). Lambda function
  • source_arr — مصفوفة المصدر المراد معالجتها. Array(T)
  • [, cond1_arr, ... , condN_arr] — اختياري. عدد N من مصفوفات الشرط التي توفّر وسائط إضافية لدالة لامبدا. Array(T)
القيمة المُعادة تعيد مجموعة فرعية من مصفوفة المصدر Array(T) أمثلة مثال 1
Query
SELECT arrayFilter(x -> x LIKE '%World%', ['Hello', 'abc World']) AS res
Response
['abc World']
مثال 2
Query
SELECT
    arrayFilter(
        (i, x) -> x LIKE '%World%',
        arrayEnumerate(arr),
        ['Hello', 'abc World'] AS arr)
    AS res
Response
[2]

arrayFirst

قُدِّمت في: v1.1.0 تُعيد أول عنصر في المصفوفة المصدر تُرجع له func(x[, y1, y2, ... yN]) القيمة true، وإلا فتُعيد القيمة الافتراضية. الصيغة
arrayFirst(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])
الوسائط
  • func(x[, y1, ..., yN]) — دالة لامدا تعمل على عناصر مصفوفة المصدر (x) ومصفوفات الشرط (y). دالة لامدا. - source_arr — مصفوفة المصدر المطلوب معالجتها. Array(T). - [, cond1_arr, ... , condN_arr] — اختياري. عدد N من مصفوفات الشرط التي توفّر وسائط إضافية لدالة لامدا. Array(T).
القيمة المُعادة تعيد أول عنصر من مصفوفة المصدر تتحقق له λ، وإلا تُعيد القيمة الافتراضية لـ T. أمثلة مثال على الاستخدام
Query
SELECT arrayFirst(x, y -> x=y, ['a', 'b', 'c'], ['c', 'b', 'a'])
Response
b
لا توجد مطابقة
Query
SELECT arrayFirst(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res)
Response
0 UInt8

arrayFirstIndex

أُضيفت في: v1.1.0 تُرجِع فهرس أول عنصر في مصفوفة المصدر تُرجِع له func(x[, y1, y2, ... yN]) القيمة true، وإلا فتُرجِع ‘0’. الصيغة
arrayFirstIndex(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])
المعاملات
  • func(x[, y1, ..., yN]) — دالة لامبدا تعمل على عناصر المصفوفة المصدر (x) ومصفوفات الشرط (y). دالة لامبدا. - source_arr — المصفوفة المصدر المطلوب معالجتها. Array(T). - [, cond1_arr, ... , condN_arr] — اختياري. عدد N من مصفوفات الشرط التي توفّر معاملات إضافية لدالة لامبدا. Array(T).
القيمة المُعادة يعيد فهرس أول عنصر في المصفوفة المصدر تكون فيه func مساوية لـ true، وإلا يعيد 0 UInt32 أمثلة مثال على الاستخدام
Query
SELECT arrayFirstIndex(x, y -> x=y, ['a', 'b', 'c'], ['c', 'b', 'a'])
Response
2
لا يوجد تطابق
Query
SELECT arrayFirstIndex(x, y -> x=y, ['a', 'b', 'c'], ['d', 'e', 'f'])
Response
0

arrayFirstOrNull

أُضيفت في: v1.1.0 تُرجع أول عنصر في مصفوفة المصدر تُرجع له الدالة func(x[, y1, y2, ... yN]) القيمة true، وإلا فتُرجع NULL. البنية
arrayFirstOrNull(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])
الوسيطات
  • func(x[, y1, ..., yN]) — دالة لامبدا تعمل على عناصر المصفوفة المصدر (x) والمصفوفات الشرطية (y). Lambda function
  • source_arr — المصفوفة المصدر المطلوب معالجتها. Array(T)
  • [, cond1_arr, ... , condN_arr] — اختياري. عدد N من المصفوفات الشرطية التي توفّر وسيطات إضافية لدالة لامبدا. Array(T)
القيمة المعادة يعيد العنصر الأول من المصفوفة المصدر الذي تكون func بالنسبة إليه true، وإلا فيعيد NULL. أمثلة مثال على الاستخدام
Query
SELECT arrayFirstOrNull(x, y -> x=y, ['a', 'b', 'c'], ['c', 'b', 'a'])
Response
b
لا يوجد تطابق
Query
SELECT arrayFirstOrNull(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res)
Response
NULL Nullable(UInt8)

arrayFlatten

أُضيفت في: v20.1.0 تحوّل مصفوفة من المصفوفات إلى مصفوفة مسطّحة. الدالة:
  • تنطبق على أي مستوى من تداخل المصفوفات.
  • لا تغيّر المصفوفات المسطّحة أصلًا.
تحتوي المصفوفة المسطّحة على جميع العناصر من كل المصفوفات المُدخلة. البنية
arrayFlatten(arr)
الأسماء البديلة: flatten الوسيطات القيمة المُعادة تُرجع مصفوفة مُسطَّحة من المصفوفة متعددة الأبعاد Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayFlatten([[[1]], [[2], [3]]]);
Response
[1, 2, 3]

arrayFold

تم تقديمه في: v23.10.0 يطبّق دالة لامدا على مصفوفة واحدة أو أكثر من المصفوفات متساوية الحجم، ويجمع النتيجة في مُراكِم. الصيغة
arrayFold(λ(acc, x1 [, x2, x3, ... xN]), arr1 [, arr2, arr3, ... arrN], acc)
الوسيطات
  • λ(x, x1 [, x2, x3, ... xN]) — دالة لامدا λ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN])، حيث تمثل F عمليةً تُطبَّق على acc وعلى قيم المصفوفة من x، مع إعادة استخدام الناتج في acc. Lambda function
  • arr1 [, arr2, arr3, ... arrN] — عدد N من المصفوفات التي تُطبَّق عليها العملية. Array(T)
  • acc — قيمة المُجمِّع، ويكون نوعها مطابقًا لنوع الإرجاع الخاص بدالة لامدا.
القيمة المعادة تُرجع القيمة النهائية acc. أمثلة مثال على الاستخدام
Query
SELECT arrayFold(acc,x -> acc + x*2, [1, 2, 3, 4], 3::Int64) AS res;
Response
23
متتالية فيبوناتشي
Query
SELECT arrayFold(acc, x -> (acc.2, acc.2 + acc.1),range(number),(1::Int64, 0::Int64)).1 AS fibonacci FROM numbers(1,10);
Response
┌─fibonacci─┐
│         0 │
│         1 │
│         1 │
│         2 │
│         3 │
│         5 │
│         8 │
│        13 │
│        21 │
│        34 │
└───────────┘
مثال على استخدام عدة مصفوفات
Query
SELECT arrayFold(
(acc, x, y) -> acc + (x * y),
[1, 2, 3, 4],
[10, 20, 30, 40],
0::Int64
) AS res;
Response
300

arrayIntersect

قُدِّمت في: v1.1.0 تأخذ عدة مصفوفات وتُرجِع مصفوفة تضم العناصر الموجودة في جميع المصفوفات المصدر. ولا تحتوي النتيجة إلا على قيم فريدة. البنية
arrayIntersect(arr, arr1, ..., arrN)
الوسيطات
  • arrN — ‏N من المصفوفات التي تُنشأ منها المصفوفة الجديدة. Array(T).
القيمة المعادة تعيد مصفوفة تحتوي على عناصر مميزة موجودة في جميع المصفوفات N Array(T) أمثلة مثال على الاستخدام
Query
SELECT
arrayIntersect([1, 2], [1, 3], [2, 3]) AS empty_intersection,
arrayIntersect([1, 2], [1, 3], [1, 4]) AS non_empty_intersection
Response
┌─empty_intersection─┬─non_empty_intersection─┐
│ []                 │ [1]                    │
└────────────────────┴────────────────────────┘

arrayJaccardIndex

أُضيف في: v23.7.0 يعيد مؤشر Jaccard لمصفوفتين. البنية
arrayJaccardIndex(arr_x, arr_y)
الوسائط
  • arr_x — المصفوفة الأولى. Array(T)
  • arr_y — المصفوفة الثانية. Array(T)
القيمة المعادة تعيد قيمة مؤشر جاكارد لـ arr_x وarr_y من النوع Float64 أمثلة مثال على الاستخدام
Query
SELECT arrayJaccardIndex([1, 2], [2, 3]) AS res
Response
0.3333333333333333

arrayJoin

أُضيفت في: v1.1.0 تأخذ الدالة arrayJoin صفًا يحتوي على مصفوفة وتبسطه إلى عدة صفوف، بحيث يقابل كل عنصر في المصفوفة صفٌّ واحد. وهذا بخلاف الدوال العادية في ClickHouse التي تربط قيم الإدخال بقيم الإخراج داخل الصف نفسه، والدوال التجميعية التي تأخذ مجموعة من الصفوف وتقوم “بضغطها” أو “اختزالها” إلى صف تلخيصي واحد (أو إلى قيمة واحدة داخل صف تلخيصي إذا استُخدمت مع GROUP BY). تُنسخ جميع القيم في الأعمدة كما هي، باستثناء القيم الموجودة في العمود الذي تُطبَّق عليه هذه الدالة؛ إذ تُستبدل هذه القيم بقيمة العنصر المقابل في المصفوفة. الصياغة
arrayJoin(arr)
الأسماء المستعارة: unnest الوسائط
  • arr — مصفوفة يُراد فردها. Array(T)
القيمة المعادة تُرجِع مجموعة من الصفوف الناتجة عن فرد arr. أمثلة الاستخدام الأساسي
Query
SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src
Response
┌─dst─┬─\'Hello\'─┬─src─────┐
│   1 │ Hello     │ [1,2,3] │
│   2 │ Hello     │ [1,2,3] │
│   3 │ Hello     │ [1,2,3] │
└─────┴───────────┴─────────┘
arrayJoin يؤثر في جميع أجزاء الاستعلام
Query
-- The arrayJoin function affects all sections of the query, including the WHERE section. Notice the result 2, even though the subquery returned 1 row.

SELECT sum(1) AS impressions
FROM
(
    SELECT ['Istanbul', 'Berlin', 'Bobruisk'] AS cities
)
WHERE arrayJoin(cities) IN ['Istanbul', 'Berlin'];
Response
┌─impressions─┐
│           2 │
└─────────────┘
استخدام دوال arrayJoin متعددة
Query
- A query can use multiple arrayJoin functions. In this case, the transformation is performed multiple times and the rows are multiplied.

SELECT
    sum(1) AS impressions,
    arrayJoin(cities) AS city,
    arrayJoin(browsers) AS browser
FROM
(
    SELECT
        ['Istanbul', 'Berlin', 'Bobruisk'] AS cities,
        ['Firefox', 'Chrome', 'Chrome'] AS browsers
)
GROUP BY
    2,
    3
Response
┌─impressions─┬─city─────┬─browser─┐
│           2 │ Istanbul │ Chrome  │
│           1 │ Istanbul │ Firefox │
│           2 │ Berlin   │ Chrome  │
│           1 │ Berlin   │ Firefox │
│           2 │ Bobruisk │ Chrome  │
│           1 │ Bobruisk │ Firefox │
└─────────────┴──────────┴─────────┘
نتائج غير متوقعة بسبب التحسينات
Query
-- Using multiple arrayJoin with the same expression may not produce the expected result due to optimizations.
-- For these cases, consider modifying the repeated array expression with extra operations that do not affect join result.
- e.g. arrayJoin(arraySort(arr)), arrayJoin(arrayConcat(arr, []))

SELECT
    arrayJoin(dice) as first_throw,
    /* arrayJoin(dice) as second_throw */ -- is technically correct, but will annihilate result set
    arrayJoin(arrayConcat(dice, [])) as second_throw -- intentionally changed expression to force re-evaluation
FROM (
    SELECT [1, 2, 3, 4, 5, 6] as dice
);
Response
┌─first_throw─┬─second_throw─┐
│           1 │            1 │
│           1 │            2 │
│           1 │            3 │
│           1 │            4 │
│           1 │            5 │
│           1 │            6 │
│           2 │            1 │
│           2 │            2 │
│           2 │            3 │
│           2 │            4 │
│           2 │            5 │
│           2 │            6 │
│           3 │            1 │
│           3 │            2 │
│           3 │            3 │
│           3 │            4 │
│           3 │            5 │
│           3 │            6 │
│           4 │            1 │
│           4 │            2 │
│           4 │            3 │
│           4 │            4 │
│           4 │            5 │
│           4 │            6 │
│           5 │            1 │
│           5 │            2 │
│           5 │            3 │
│           5 │            4 │
│           5 │            5 │
│           5 │            6 │
│           6 │            1 │
│           6 │            2 │
│           6 │            3 │
│           6 │            4 │
│           6 │            5 │
│           6 │            6 │
└─────────────┴──────────────┘
استخدام بنية ARRAY JOIN
Query
-- Note the ARRAY JOIN syntax in the `SELECT` query below, which provides broader possibilities.
-- ARRAY JOIN allows you to convert multiple arrays with the same number of elements at a time.

SELECT
    sum(1) AS impressions,
    city,
    browser
FROM
(
    SELECT
        ['Istanbul', 'Berlin', 'Bobruisk'] AS cities,
        ['Firefox', 'Chrome', 'Chrome'] AS browsers
)
ARRAY JOIN
    cities AS city,
    browsers AS browser
GROUP BY
    2,
    3
Response
┌─impressions─┬─city─────┬─browser─┐
│           1 │ Istanbul │ Firefox │
│           1 │ Berlin   │ Chrome  │
│           1 │ Bobruisk │ Chrome  │
└─────────────┴──────────┴─────────┘
استخدام Tuple
Query
-- You can also use Tuple

SELECT
    sum(1) AS impressions,
    (arrayJoin(arrayZip(cities, browsers)) AS t).1 AS city,
    t.2 AS browser
FROM
(
    SELECT
        ['Istanbul', 'Berlin', 'Bobruisk'] AS cities,
        ['Firefox', 'Chrome', 'Chrome'] AS browsers
)
GROUP BY
    2,
    3
Response
┌─impressions─┬─city─────┬─browser─┐
│           1 │ Istanbul │ Firefox │
│           1 │ Berlin   │ Chrome  │
│           1 │ Bobruisk │ Chrome  │
└─────────────┴──────────┴─────────┘

arrayLast

أُضيفت في: v1.1.0 تُرجِع آخر عنصر في المصفوفة المصدر تُرجِع له دالة لامبدا func(x [, y1, y2, ... yN]) القيمة true، وإلا فتُرجِع قيمة افتراضية. الصياغة
arrayLast(func(x[, y1, ..., yN]), source[, cond1, ... , condN_arr])
الوسيطات
  • func(x[, y1, ..., yN]) — دالة لامبدا تُطبَّق على عناصر المصفوفة المصدر (x) ومصفوفات الشرط (y). دالة لامبدا. - source — المصفوفة المصدر المطلوب معالجتها. Array(T). - [, cond1, ... , condN] — اختياري. N من مصفوفات الشرط التي توفّر وسيطات إضافية لدالة لامبدا. Array(T).
القيمة المُعادة تعيد آخر عنصر من المصفوفة المصدر تكون func صحيحةً له، وإلا فتعيد القيمة الافتراضية لـ T. أمثلة مثال على الاستخدام
Query
SELECT arrayLast(x, y -> x=y, ['a', 'b', 'c'], ['a', 'b', 'c'])
Response
c
لا يوجد تطابق
Query
SELECT arrayFirst(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res)
Response
0 UInt8

arrayLastIndex

أُضيفت في: v1.1.0 تُرجع فهرس آخر عنصر في المصفوفة المصدر تُرجع الدالة func(x[, y1, y2, ... yN]) له القيمة true، وإلا فتُرجع ‘0’. البنية
arrayLastIndex(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])
الوسيطات
  • func(x[, y1, ..., yN]) — دالة لامبدا تعمل على عناصر مصفوفة المصدر (x) ومصفوفات الشرط (y). Lambda function
  • source_arr — مصفوفة المصدر المطلوب معالجتها. Array(T)
  • [, cond1_arr, ... , condN_arr] — اختياري. عدد N من مصفوفات الشرط التي توفّر وسيطات إضافية لدالة لامبدا. Array(T)
القيمة المعادة يعيد فهرس آخر عنصر في مصفوفة المصدر تكون الدالة func صحيحة له، وإلا يعيد 0 UInt32 أمثلة مثال على الاستخدام
Query
SELECT arrayLastIndex(x, y -> x=y, ['a', 'b', 'c'], ['a', 'b', 'c']);
Response
3
لا توجد مطابقة
Query
SELECT arrayLastIndex(x, y -> x=y, ['a', 'b', 'c'], ['d', 'e', 'f']);
Response
0

arrayLastOrNull

أُضيف في: v1.1.0 يعيد آخر عنصر في المصفوفة الأصلية تُرجع له دالة lambda func(x [, y1, y2, ... yN]) القيمة true، وإلا فيُرجع NULL. البنية
arrayLastOrNull(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])
الوسيطات
  • func(x [, y1, ..., yN]) — دالة لامبدا تعمل على عناصر المصفوفة المصدر (x) ومصفوفات الشرط (y). دالة لامبدا. - source_arr — المصفوفة المصدر المراد معالجتها. Array(T). - [, cond1_arr, ... , condN_arr] — اختياري. عدد N من مصفوفات الشرط التي توفّر وسيطات إضافية لدالة لامبدا. Array(T).
القيمة المعادة تعيد آخر عنصر من المصفوفة المصدر لا تكون قيمة λ له true، وإلا فتعيد NULL. أمثلة مثال على الاستخدام
Query
SELECT arrayLastOrNull(x, y -> x=y, ['a', 'b', 'c'], ['a', 'b', 'c'])
Response
c
لا يوجد تطابق
Query
SELECT arrayLastOrNull(x, y -> x=y, [0, 1, 2], [3, 3, 3]) AS res, toTypeName(res)
Response
NULL Nullable(UInt8)

arrayLevenshteinDistance

قُدِّمت في: v25.4.0 تحسب مسافة Levenshtein بين مصفوفتين. البنية
arrayLevenshteinDistance(from, to)
الوسيطات
  • from — المصفوفة الأولى. Array(T). - to — المصفوفة الثانية. Array(T).
القيمة المعادة مسافة Levenshtein بين المصفوفتين الأولى والثانية. Float64 أمثلة مثال للاستخدام
Query
SELECT arrayLevenshteinDistance([1, 2, 4], [1, 2, 3])
Response
1

arrayLevenshteinDistanceWeighted

قُدِّمت في: v25.4.0 تحسب مسافة ليفنشتاين لمصفوفتين باستخدام أوزان مخصصة لكل عنصر. يجب أن يتطابق عدد عناصر المصفوفة مع عدد الأوزان الخاصة بها. الصيغة
arrayLevenshteinDistanceWeighted(from, to, from_weights, to_weights)
الوسيطات القيمة المُعادة مسافة Levenshtein بين المصفوفتين الأولى والثانية مع أوزان مخصّصة لكل عنصر Float64 أمثلة مثال استخدام
Query
SELECT arrayLevenshteinDistanceWeighted(['A', 'B', 'C'], ['A', 'K', 'L'], [1.0, 2, 3], [3.0, 4, 5])
Response
14

arrayMap

أُضيفت في: v1.1.0 تُرجِع مصفوفةً ناتجةً من المصفوفات الأصلية بتطبيق دالة لامدا على كل عنصر. البنية
arrayMap(func, arr)
الوسائط
  • func — دالة لامبدا تعمل على عناصر المصفوفة المصدر (x) ومصفوفات الشرط (y). Lambda function
  • arr — عدد N من المصفوفات المطلوب معالجتها. Array(T)
القيمة المُعادة تعيد مصفوفة من نتائج دالة لامبدا Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayMap(x -> (x + 2), [1, 2, 3]) as res;
Response
[3, 4, 5]
إنشاء tuple من عناصر مأخوذة من مصفوفات مختلفة
Query
SELECT arrayMap((x, y) -> (x, y), [1, 2, 3], [4, 5, 6]) AS res
Response
[(1, 4),(2, 5),(3, 6)]

arrayMax

قُدِّمت في: v21.1.0 تُرجع أكبر عنصر في مصفوفة الإدخال. إذا جرى تحديد دالة لامدا func، فتُرجع أكبر عنصر من نتائج دالة لامدا. الصياغة
arrayMax([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr])
الوسيطات
  • func(x[, y1, ..., yN]) — اختياري. دالة لامدا تعمل على عناصر المصفوفة المصدر (x) ومصفوفات الشروط (y). دالة لامدا
  • source_arr — المصفوفة المصدر المطلوب معالجتها. Array(T)
  • [, cond1_arr, ... , condN_arr] — اختياري. N من مصفوفات الشروط التي توفّر وسيطات إضافية لدالة لامدا. Array(T)
القيمة المُعادة تعيد أكبر عنصر في المصفوفة المصدر، أو أكبر عنصر من نتائج دالة لامدا إذا تم توفيرها. أمثلة مثال أساسي
Query
SELECT arrayMax([5, 3, 2, 7]);
Response
7
الاستخدام مع دالة Lambda
Query
SELECT arrayMax(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]);
Response
12

arrayMin

ظهر لأول مرة في: v21.1.0 يُرجع أصغر عنصر في المصفوفة المصدر. إذا تم تحديد دالة لامبدا func، فسيُرجع أصغر عنصر من نتائج دالة لامبدا. البنية
arrayMin([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr])
الوسائط
  • func(x[, y1, ..., yN]) — اختياري. دالة لامبدا تعمل على عناصر مصفوفة المصدر (x) ومصفوفات الشرط (y). دالة لامبدا
  • source_arr — مصفوفة المصدر المطلوب معالجتها. Array(T)
  • cond1_arr, ... — اختياري. عدد N من مصفوفات الشرط التي توفّر معاملات إضافية لدالة لامبدا. Array(T)
القيمة المُعادة تعيد أصغر عنصر في مصفوفة المصدر، أو أصغر عنصر من نتائج دالة لامبدا إذا تم توفيرها. أمثلة مثال أساسي
Query
SELECT arrayMin([5, 3, 2, 7]);
Response
2
الاستخدام مع دالة lambda
Query
SELECT arrayMin(x, y -> x/y, [4, 8, 12, 16], [1, 2, 1, 2]);
Response
4

arrayNormalizedGini

قُدِّم في: v25.1.0 يحسب معامل جيني المُطبَّع. الصيغة
arrayNormalizedGini(predicted, label)
الوسيطات
  • predicted — القيمة المتوقعة. Array(T)
  • label — القيمة الفعلية. Array(T)
القيمة المُعادة Tuple يحتوي على معاملات جيني للقيم المتوقعة، ومعامل جيني للقيم المُطبَّعة، ومعامل جيني المُطبَّع (= نسبة معاملي جيني السابقين) Tuple(Float64, Float64, Float64) أمثلة مثال على الاستخدام
Query
SELECT arrayNormalizedGini([0.9, 0.3, 0.8, 0.7],[6, 1, 0, 2]);
Response
(0.18055555555555558, 0.2638888888888889, 0.6842105263157896)

arrayPartialReverseSort

أُضيفت في: v23.2.0 هذه الدالة مماثلة لـ arrayReverseSort، ولكنها تتضمن وسيطة limit إضافية تتيح الفرز الجزئي.
للاحتفاظ بالعناصر المُرتَّبة فقط، استخدم arrayResize.
البنية
arrayPartialReverseSort([f,] limit, arr [, arr1, ... ,arrN])
الوسائط
  • f(arr[, arr1, ... ,arrN]) — دالة لامدا المطلوب تطبيقها على عناصر المصفوفة x. Lambda function
  • limit — قيمة الفهرس التي يُجرى الفرز حتى الوصول إليها. (U)Int*
  • arr — المصفوفة المطلوب فرزها. Array(T)
  • arr1, ... ,arrNN من المصفوفات الإضافية، في حال كانت f تقبل عدة وسائط. Array(T)
القيمة المعادة تعيد مصفوفةً بالحجم نفسه للمصفوفة الأصلية، بحيث تكون العناصر ضمن النطاق [1..limit] مرتبة ترتيبًا تنازليًا. أما العناصر المتبقية (limit..N] فتكون بترتيب غير محدد. أمثلة simple_int
Query
SELECT arrayPartialReverseSort(2, [5, 9, 1, 3])
Response
[9, 5, 1, 3]
simple_string
Query
SELECT arrayPartialReverseSort(2, ['expenses','lasso','embolism','gladly'])
Response
['lasso','gladly','expenses','embolism']
retain_sorted
Query
SELECT arrayResize(arrayPartialReverseSort(2, [5, 9, 1, 3]), 2)
Response
[9, 5]
lambda_simple
Query
SELECT arrayPartialReverseSort((x) -> -x, 2, [5, 9, 1, 3])
Response
[1, 3, 5, 9]
lambda_complex
Query
SELECT arrayPartialReverseSort((x, y) -> -y, 1, [0, 1, 2], [1, 2, 3]) as res
Response
[0, 1, 2]

arrayPartialShuffle

أُضيف في: v23.2.0 تعيد هذه الدالة مصفوفة بالحجم نفسه للمصفوفة الأصلية، بحيث تكون العناصر ضمن النطاق [1..limit] مجموعة فرعية عشوائية من المصفوفة الأصلية. أما العناصر المتبقية ضمن (limit..n] فتحتوي على العناصر غير الموجودة في النطاق [1..limit] بترتيب غير محدد. يجب أن تكون قيمة limit ضمن النطاق [1..n]. أما القيم الواقعة خارج هذا النطاق فتعادل تنفيذ arrayShuffle بالكامل:
لن تُجسِّد هذه الدالة الثوابت.يجب أن تكون قيمة limit ضمن النطاق [1..N]. أما القيم الواقعة خارج هذا النطاق فتعادل تنفيذ arrayShuffle بالكامل.
الصياغة
arrayPartialShuffle(arr [, limit[, seed]])
الوسائط
  • arr — المصفوفة المراد خلط عناصرها. Array(T)
  • seed — اختياري. البذرة المستخدمة في توليد الأرقام العشوائية. وإذا لم تُوفَّر، تُستخدم بذرة عشوائية. (U)Int*
  • limit — اختياري. العدد الذي يُستخدم لتقييد عدد تبديلات العناصر، ضمن النطاق [1..N]. (U)Int*
القيمة المُعادة مصفوفة عناصرها مخلوطة جزئيًا. Array(T) أمثلة no_limit1
Query
SELECT arrayPartialShuffle([1, 2, 3, 4], 0)
Response
[2, 4, 3, 1]
no_limit2
Query
SELECT arrayPartialShuffle([1, 2, 3, 4])
Response
[4, 1, 3, 2]
random_seed
Query
SELECT arrayPartialShuffle([1, 2, 3, 4], 2)
Response
[3, 4, 1, 2]
explicit_seed
Query
SELECT arrayPartialShuffle([1, 2, 3, 4], 2, 41)
Response
[3, 2, 1, 4]
materialize
Query
SELECT arrayPartialShuffle(materialize([1, 2, 3, 4]), 2, 42), arrayPartialShuffle([1, 2, 3], 2, 42) FROM numbers(10)
Response
┌─arrayPartial⋯4]), 2, 42)─┬─arrayPartial⋯ 3], 2, 42)─┐
│ [3,2,1,4]                │ [3,2,1]                  │
│ [3,2,1,4]                │ [3,2,1]                  │
│ [4,3,2,1]                │ [3,2,1]                  │
│ [1,4,3,2]                │ [3,2,1]                  │
│ [3,4,1,2]                │ [3,2,1]                  │
│ [1,2,3,4]                │ [3,2,1]                  │
│ [1,4,3,2]                │ [3,2,1]                  │
│ [1,4,3,2]                │ [3,2,1]                  │
│ [3,1,2,4]                │ [3,2,1]                  │
│ [1,3,2,4]                │ [3,2,1]                  │
└──────────────────────────┴──────────────────────────┘

arrayPartialSort

تم تقديمها في: v23.2.0 هذه الدالة مماثلة لـ arraySort، ولكنها تتضمن وسيطة limit إضافية تتيح الفرز الجزئي.
للاحتفاظ بالعناصر المفروزة فقط، استخدم arrayResize.
الصياغة
arrayPartialSort([f,] limit, arr [, arr1, ... ,arrN])
الوسائط
  • f(arr[, arr1, ... ,arrN]) — دالة لامبدا المُطبَّقة على عناصر المصفوفة x. Lambda function
  • limit — قيمة الفهرس التي سيجري الفرز حتى الوصول إليها. (U)Int*
  • arr — المصفوفة المطلوب فرزها. Array(T)
  • arr1, ... ,arrN — عدد N من المصفوفات الإضافية، في حال كانت f تقبل عدة وسائط. Array(T)
القيمة المُعادة تُعيد مصفوفة بالحجم نفسه للمصفوفة الأصلية، بحيث تكون العناصر ضمن النطاق [1..limit] مرتبة ترتيبًا تصاعديًا. أما العناصر المتبقية (limit..N] فتكون بترتيب غير محدد. أمثلة simple_int
Query
SELECT arrayPartialSort(2, [5, 9, 1, 3])
Response
[1, 3, 5, 9]
simple_string
Query
SELECT arrayPartialSort(2, ['expenses', 'lasso', 'embolism', 'gladly'])
Response
['embolism', 'expenses', 'gladly', 'lasso']
retain_sorted
Query
SELECT arrayResize(arrayPartialSort(2, [5, 9, 1, 3]), 2)
Response
[1, 3]
lambda_simple
Query
SELECT arrayPartialSort((x) -> -x, 2, [5, 9, 1, 3])
Response
[9, 5, 1, 3]
lambda_complex
Query
SELECT arrayPartialSort((x, y) -> -y, 1, [0, 1, 2], [1, 2, 3]) as res
Response
[2, 1, 0]

arrayPopBack

تم تقديمه في: v1.1.0 يزيل العنصر الأخير من المصفوفة. الصيغة
arrayPopBack(arr)
الوسائط
  • arr — المصفوفة التي يُزال منها العنصر الأخير. Array(T)
القيمة المعادة يعيد مصفوفة مطابقة لـ arr ولكن من دون العنصر الأخير منها Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayPopBack([1, 2, 3]) AS res;
Response
[1, 2]

arrayPopFront

أُضيفت في: v1.1.0 يزيل العنصر الأول من المصفوفة. الصياغة
arrayPopFront(arr)
الوسائط
  • arr — المصفوفة التي يُزال منها العنصر الأول. Array(T)
القيمة المُعادة يُرجع مصفوفة مطابقة لـ arr ولكن من دون العنصر الأول فيها Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayPopFront([1, 2, 3]) AS res;
Response
[2, 3]

arrayProduct

مُقدَّم في: v21.1.0 يُرجِع حاصل ضرب عناصر المصفوفة المصدر. إذا جرى تحديد دالة لامبدا func، فإنه يُرجِع حاصل ضرب عناصر نتائج اللامبدا. الصياغة
arrayProduct([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr])
الوسائط
  • func(x[, y1, ..., yN]) — اختياري. دالة لامدا تعمل على عناصر مصفوفة المصدر (x) ومصفوفات الشرط (y). Lambda function
  • source_arr — مصفوفة المصدر المراد معالجتها. Array(T)
  • [, cond1_arr, ... , condN_arr] — اختياري. ‏N من مصفوفات الشرط التي توفّر وسائط إضافية لدالة لامدا. Array(T)
القيمة المعادة تعيد حاصل ضرب العناصر في مصفوفة المصدر، أو حاصل ضرب العناصر الناتجة عن دالة لامدا إذا تم توفيرها. Float64 أمثلة مثال أساسي
Query
SELECT arrayProduct([1, 2, 3, 4]);
Response
24
الاستخدام مع دالة lambda
Query
SELECT arrayProduct(x, y -> x+y, [2, 2], [2, 2]) AS res;
Response
16

arrayPushBack

أُضيفت في: v1.1.0 تُضيف عنصرًا واحدًا إلى نهاية المصفوفة. الصيغة
arrayPushBack(arr, x)
الوسيطات
  • arr — المصفوفة التي تُضاف القيمة x إلى نهايتها. Array(T)
  • x
  • قيمة واحدة تُضاف إلى نهاية المصفوفة. Array(T).
  • لا يمكن إضافة سوى الأرقام إلى مصفوفة أرقام، ولا يمكن إضافة سوى السلاسل النصية إلى مصفوفة سلاسل نصية.
  • عند إضافة الأرقام، يحدّد ClickHouse تلقائيًا نوع x وفقًا لنوع بيانات المصفوفة.
  • يمكن أن تكون NULL. تضيف الدالة عنصرًا من نوع NULL إلى المصفوفة، ويتحوّل نوع عناصر المصفوفة إلى Nullable.
لمزيد من المعلومات حول أنواع البيانات في ClickHouse، راجع أنواع البيانات.
القيمة المُعادة تعيد مصفوفة مطابقة لـ arr ولكن مع إضافة القيمة x إلى نهاية المصفوفة Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayPushBack(['a'], 'b') AS res;
Response
['a','b']

arrayPushFront

أُضيفت في: v1.1.0 تضيف عنصرًا واحدًا إلى بداية المصفوفة. الصياغة
arrayPushFront(arr, x)
الوسيطات
  • arr — المصفوفة التي تُضاف القيمة x إلى نهايتها. Array(T). - x
  • قيمة مفردة تُضاف إلى بداية المصفوفة. Array(T).
  • لا يمكن إضافة سوى الأرقام إلى مصفوفة أرقام، ولا يمكن إضافة سوى السلاسل النصية إلى مصفوفة سلاسل نصية.
  • عند إضافة أرقام، يحدّد ClickHouse تلقائيًا نوع x وفقًا لنوع بيانات المصفوفة.
  • يمكن أن تكون NULL. تضيف الدالة عنصر NULL إلى المصفوفة، ويتحوّل نوع عناصر المصفوفة إلى Nullable.
لمزيد من المعلومات حول أنواع البيانات في ClickHouse، راجع أنواع البيانات.
القيمة المُعادة تعيد مصفوفة مطابقة لـ arr، ولكن مع قيمة إضافية x في بداية المصفوفة Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayPushFront(['b'], 'a') AS res;
Response
['a','b']

arrayROCAUC

استُحدث في: v20.4.0 يحسب المساحة تحت منحنى خصائص تشغيل المستقبِل (ROC). يُنشأ منحنى ROC برسم معدل الإيجابيات الحقيقية (TPR) على المحور y ومعدل الإيجابيات الكاذبة (FPR) على المحور x عبر جميع العتبات. وتتراوح القيمة الناتجة بين صفر وواحد، وتشير القيمة الأعلى إلى أداء أفضل للنموذج. يُعد ROC AUC (ويُعرف أيضًا اختصارًا باسم AUC) مفهومًا في تعلّم الآلة. لمزيد من التفاصيل، يُرجى الاطلاع هنا، وهنا، وهنا. الصيغة
arrayROCAUC(scores, labels[, scale[, partial_offsets]])
الأسماء البديلة: arrayAUC الوسائط
  • scores — الدرجات التي ينتجها نموذج التنبؤ. Array((U)Int*) أو Array(Float*)
  • labels — تسميات العينات، وعادةً تكون 1 للعينة الإيجابية و0 للعينة السلبية. Array((U)Int*) أو Enum
  • scale — اختياري. يحدد ما إذا كان سيُرجِع المساحة المُطبَّعة. إذا كانت القيمة false، فسيُرجِع بدلًا من ذلك المساحة تحت منحنى TP (الإيجابيات الحقيقية) × FP (الإيجابيات الكاذبة). القيمة الافتراضية: true. Bool
  • partial_offsets
  • مصفوفة من أربعة أعداد صحيحة غير سالبة تُستخدم لحساب مساحة جزئية تحت منحنى ROC (وهو ما يعادل شريطًا رأسيًا في فضاء ROC) بدلًا من AUC بالكامل. يفيد هذا الخيار في الحساب الموزع لـ ROC AUC. يجب أن تحتوي المصفوفة على العناصر التالية [higher_partitions_tp, higher_partitions_fp, total_positives, total_negatives]. Array من Integers غير سالبة. اختياري.
    • higher_partitions_tp: عدد التسميات الإيجابية في الأقسام ذات الدرجات الأعلى.
    • higher_partitions_fp: عدد التسميات السلبية في الأقسام ذات الدرجات الأعلى.
    • total_positives: العدد الإجمالي للعينات الإيجابية في مجموعة البيانات بالكامل.
    • total_negatives: العدد الإجمالي للعينات السلبية في مجموعة البيانات بالكامل.
عند استخدام arr_partial_offsets، يجب أن يكون كل من arr_scores و arr_labels مجرد قسم من مجموعة البيانات بالكامل، وأن يحتوي على نطاق من الدرجات. يجب تقسيم مجموعة البيانات إلى أقسام متجاورة، بحيث يحتوي كل قسم على مجموعة فرعية من البيانات تقع درجاتها ضمن نطاق محدد. على سبيل المثال:
  • قد يحتوي أحد الأقسام على جميع الدرجات ضمن النطاق [0, 0.5).
  • وقد يحتوي قسم آخر على الدرجات ضمن النطاق [0.5, 1.0].
القيمة المُعادة تُرجِع المساحة تحت منحنى خصائص تشغيل المستقبل (ROC). Float64 أمثلة مثال على الاستخدام
Query
SELECT arrayROCAUC([0.1, 0.4, 0.35, 0.8], [0, 0, 1, 1]);
Response
0.75

arrayRandomSample

أُضيفت في: v23.10.0 تعيد مجموعة فرعية تضم samples عنصرًا عشوائيًا من مصفوفة الإدخال. وإذا كانت قيمة samples أكبر من حجم مصفوفة الإدخال، فسيُقتصر حجم العينة على حجم المصفوفة، أي ستُعاد جميع عناصر المصفوفة، ولكن من دون ضمان ترتيبها. ويمكن للدالة التعامل مع كلٍّ من المصفوفات المسطحة والمصفوفات المتداخلة. البنية
arrayRandomSample(arr, samples)
الوسيطات
  • arr — مصفوفة الإدخال أو المصفوفة متعددة الأبعاد التي تُؤخذ منها عيّنة من العناصر. Array(T)
  • samples — عدد العناصر التي ستُدرج في العيّنة العشوائية. (U)Int*
القيمة المعادة مصفوفة تحتوي على عيّنة عشوائية من عناصر مصفوفة الإدخال Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayRandomSample(['apple', 'banana', 'cherry', 'date'], 2) as res;
Response
['cherry','apple']
استخدام مصفوفة متعددة الأبعاد
Query
SELECT arrayRandomSample([[1, 2], [3, 4], [5, 6]], 2) as res;
Response
[[3,4],[5,6]]

arrayReduce

أُضيفت في: v1.1.0 تُطبِّق دالة تجميع على عناصر المصفوفة وتُرجِع ناتجها. يُمرَّر اسم دالة التجميع كسلسلة نصية بين علامتَي اقتباس مفردتَين 'max'، 'sum'. عند استخدام الدوال التجميعية ذات المعلمات، تُحدَّد المعلمة بعد اسم الدالة بين قوسين 'uniqUpTo(6)'. البنية
arrayReduce(agg_f, arr1[, arr2, ... , arrN])
الوسيطات
  • agg_f — اسم دالة تجميع، ويجب أن يكون قيمة ثابتة. String
  • arr1[, arr2, ... , arrN]N مصفوفات تقابل وسيطات agg_f. Array(T)
القيمة المُعادة تعيد ناتج دالة التجميع أمثلة مثال على الاستخدام
Query
SELECT arrayReduce('max', [1, 2, 3]);
Response
┌─arrayReduce('max', [1, 2, 3])─┐
│                             3 │
└───────────────────────────────┘
مثال على استخدام دالة تجميعية بعدة وسيطات
Query
--If an aggregate function takes multiple arguments, then this function must be applied to multiple arrays of the same size.

SELECT arrayReduce('maxIf', [3, 5], [1, 0]);
Response
┌─arrayReduce('maxIf', [3, 5], [1, 0])─┐
│                                    3 │
└──────────────────────────────────────┘
مثال على دالة تجميع مُعامِلية
Query
SELECT arrayReduce('uniqUpTo(3)', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
Response
┌─arrayReduce('uniqUpTo(3)', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])─┐
│                                                           4 │
└─────────────────────────────────────────────────────────────┘

arrayReduceInRanges

قُدِّمت في: v20.4.0 تُطبِّق دالةً تجميعية على عناصر المصفوفة ضمن النطاقات المحددة، وتُرجِع مصفوفةً تتضمن النتيجة المقابلة لكل نطاق. تُرجِع الدالة النتيجة نفسها كما لو استُخدم arrayReduce(agg_func, arraySlice(arr1, index, length), ...) عدة مرات. الصياغة
arrayReduceInRanges(agg_f, ranges, arr1[, arr2, ... ,arrN])
الوسيطات
  • agg_f — اسم الدالة التجميعية المراد استخدامها. String
  • ranges — النطاق الذي سيُجرى عليه التجميع. وهي مصفوفة من قيم Tuple، (i, r)، تحتوي على الفهرس i الذي يبدأ منه التجميع، والنطاق r الذي سيُجرى عليه التجميع. Array(T) أو Tuple(T)
  • arr1[, arr2, ... ,arrN] — عدد N من المصفوفات كوسيطات للدالة التجميعية. Array(T)
القيمة المعادة تعيد مصفوفة تحتوي على نتائج الدالة التجميعية عبر النطاقات المحددة Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayReduceInRanges(
    'sum',
    [(1, 5), (2, 3), (3, 4), (4, 4)],
    [1000000, 200000, 30000, 4000, 500, 60, 7]
) AS res
Response
┌─res─────────────────────────┐
│ [1234500,234000,34560,4567] │
└─────────────────────────────┘

arrayRemove

أُضيفت في: v25.11.0 تزيل جميع العناصر التي تساوي قيمةً معيّنة من المصفوفة. تُعامل قيم NULL على أنها متساوية. الصيغة
arrayRemove(arr, elem)
الأسماء البديلة: array_remove الوسيطات
  • arr — Array(T) - elem — T
القيمة المُعادة تعيد جزءًا فرعيًا من المصفوفة المصدر Array(T) أمثلة مثال 1
Query
SELECT arrayRemove([1, 2, 2, 3], 2)
Response
[1, 3]
مثال 2
Query
SELECT arrayRemove(['a', NULL, 'b', NULL], NULL)
Response
['a', 'b']

arrayResize

أُضيف في: v1.1.0 يغيّر طول المصفوفة. الصياغة
arrayResize(arr, size[, extender])
المعاملات
  • arr — المصفوفة المطلوب تغيير حجمها. Array(T)
  • size — -الطول الجديد للمصفوفة. إذا كانت size أصغر من الحجم الأصلي للمصفوفة، فسيتم اقتطاع المصفوفة من اليمين. إذا كانت size أكبر من الحجم الأصلي للمصفوفة، فسيتم تمديد المصفوفة إلى اليمين باستخدام قيم extender أو القيم الافتراضية لنوع بيانات عناصر المصفوفة.
  • extender — القيمة المستخدمة لتمديد المصفوفة. يمكن أن تكون NULL.
القيمة المعادة مصفوفة بطول size. Array(T) أمثلة مثال 1
Query
SELECT arrayResize([1], 3);
Response
[1,0,0]
المثال 2
Query
SELECT arrayResize([1], 3, NULL);
Response
[1,NULL,NULL]

arrayReverse

أُضيف في: v1.1.0 يعكس ترتيب عناصر المصفوفة المعطاة.
تؤدي الدالة reverse(arr) الوظيفة نفسها، لكنها تعمل أيضًا على أنواع بيانات أخرى بالإضافة إلى المصفوفات.
الصيغة
arrayReverse(arr)
الوسائط
  • arr — المصفوفة المراد عكسها. Array(T)
القيمة المُعادة تعيد مصفوفة بالحجم نفسه للمصفوفة الأصلية، وتحتوي على العناصر بترتيب عكسي. Array(T) أمثلة مثال للاستخدام
Query
SELECT arrayReverse([1, 2, 3])
Response
[3,2,1]

arrayReverseFill

قُدِّمت في: v20.1.0 تعالج الدالة arrayReverseFill مصفوفة المصدر تسلسليًا من العنصر الأخير إلى الأول، مع تقييم شرط lambda عند كل موضع باستخدام عناصر من مصفوفة المصدر ومصفوفات الشرط. عندما يُقيَّم الشرط إلى القيمة false عند الموضع i، تستبدل الدالة ذلك العنصر بالعنصر الموجود عند الموضع i+1 من الحالة الحالية للمصفوفة. ويُحفَظ العنصر الأخير دائمًا بغض النظر عن أي شرط. البنية
arrayReverseFill(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])
الوسائط
  • func(x[, y1, ..., yN]) — دالة لامبدا تعمل على عناصر المصفوفة المصدر (x) ومصفوفات الشرط (y). دالة لامبدا
  • source_arr — المصفوفة المصدر المراد معالجتها. Array(T)
  • [, cond1_arr, ... , condN_arr] — اختياري. N من مصفوفات الشرط التي توفّر وسائط إضافية لدالة لامبدا. Array(T)
القيمة المُعادة تعيد مصفوفةً تُستبدل فيها عناصر المصفوفة المصدر بنتائج دالة لامبدا. Array(T) أمثلة مثال باستخدام مصفوفة واحدة
Query
SELECT arrayReverseFill(x -> not isNull(x), [1, null, 2, null]) AS res
Response
[1, 2, 2, NULL]
مثال على مصفوفتين
Query
SELECT arrayReverseFill(x, y, z -> x > y AND x < z, [5, 3, 6, 2], [4, 7, 1, 3], [10, 2, 8, 5]) AS res;
Response
[5, 6, 6, 2]

arrayReverseSort

أُضيفت في: v1.1.0 ترتّب عناصر المصفوفة ترتيبًا تنازليًا. إذا جرى تحديد الدالة f، فستُرتَّب المصفوفة المعطاة وفقًا لنتيجة تطبيق الدالة على عناصر المصفوفة، ثم تُعكس المصفوفة بعد ترتيبها. إذا كانت f تقبل عدة وسائط، فستُمرَّر عدة مصفوفات إلى الدالة arrayReverseSort بحيث تقابل وسائط func هذه المصفوفات. إذا كانت المصفوفة المطلوب ترتيبها تحتوي على -Inf أو NULL أو NaN أو Inf، فسيكون ترتيبها كما يلي:
  1. -Inf
  2. Inf
  3. NaN
  4. NULL
تُعد arrayReverseSort دالة عالية الرتبة. الصياغة
arrayReverseSort([f,] arr [, arr1, ... ,arrN])
الوسيطات
  • f(y1[, y2 ... yN]) — دالة لامبدا تُطبَّق على عناصر المصفوفة x. - arr — مصفوفة مطلوب فرزها. Array(T) - arr1, ..., arrN — اختياري. عدد N من المصفوفات الإضافية، في حال كانت f تقبل عدة وسيطات.
القيمة المعادة تعيد المصفوفة x مرتبةً ترتيبًا تنازليًا إذا لم يتم توفير دالة لامبدا، وإلا فتعيد مصفوفة مرتبة وفقًا لمنطق دالة لامبدا المقدَّمة، ثم معكوسة. Array(T). أمثلة مثال 1
Query
SELECT arrayReverseSort((x, y) -> y, [4, 3, 5], ['a', 'b', 'c']) AS res;
Response
[5,3,4]
مثال 2
Query
SELECT arrayReverseSort((x, y) -> -y, [4, 3, 5], [1, 2, 3]) AS res;
Response
[4,3,5]

arrayReverseSplit

تم تقديمه في: v20.1.0 قسّم مصفوفة المصدر إلى عدة مصفوفات. عندما تُرجِع func(x[, y1, ..., yN]) قيمة غير صفرية، تُقسَّم المصفوفة إلى يمين ذلك العنصر. ولا تُقسَّم المصفوفة بعد العنصر الأخير. الصياغة
arrayReverseSplit(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])
الوسائط
  • func(x[, y1, ..., yN]) — دالة لامدا تعمل على عناصر المصفوفة المصدر (x) ومصفوفات الشرط (y). Lambda function
  • source_arr — المصفوفة المصدر المطلوب معالجتها. Lambda function
  • [, cond1_arr, ... , condN_arr] — اختياري. عدد N من مصفوفات الشرط التي توفّر وسائط إضافية لدالة لامدا. Array(T)
القيمة المُعادة تعيد مصفوفة من المصفوفات. Array(Array(T)) أمثلة مثال على الاستخدام
Query
SELECT arrayReverseSplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res
Response
[[1], [2, 3, 4], [5]]

arrayRotateLeft

أُضيف في: v23.8.0 يُدوِّر مصفوفة إلى اليسار بعدد العناصر المحدد. وتُعامَل القيم السالبة لـ n على أنها تدوير إلى اليمين بمقدار القيمة المطلقة للتدوير. الصياغة
arrayRotateLeft(arr, n)
الوسيطات
  • arr — المصفوفة التي تُدوَّر عناصرها.Array(T). - n — عدد العناصر المراد تدويرها. (U)Int8/16/32/64.
القيمة المُعادة مصفوفة بعد تدويرها إلى اليسار بعدد العناصر المحدد Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayRotateLeft([1,2,3,4,5,6], 2) as res;
Response
[3,4,5,6,1,2]
القيمة السالبة لـ n
Query
SELECT arrayRotateLeft([1,2,3,4,5,6], -2) as res;
Response
[5,6,1,2,3,4]

arrayRotateRight

تم تقديمه في: v23.8.0 يُدوِّر مصفوفة إلى اليمين بعدد العناصر المحدد. وتُعامَل القيم السالبة لـ n على أنها تدوير إلى اليسار بمقدار القيمة المطلقة. البنية
arrayRotateRight(arr, n)
الوسيطات
  • arr — المصفوفة المطلوب تدوير عناصرها.Array(T). - n — عدد العناصر المطلوب تدويرها. (U)Int8/16/32/64.
القيمة المُعادة مصفوفة جرى تدويرها إلى اليمين بعدد العناصر المحدد Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayRotateRight([1,2,3,4,5,6], 2) as res;
Response
[5,6,1,2,3,4]
عندما تكون قيمة n سالبة
Query
SELECT arrayRotateRight([1,2,3,4,5,6], -2) as res;
Response
[3,4,5,6,1,2]

arrayShiftLeft

أُضيف في: v23.8.0 تُزاح المصفوفة إلى اليسار بعدد العناصر المحدد. تُملأ العناصر الجديدة بالوسيطة المُمرَّرة أو بالقيمة الافتراضية لنوع عنصر المصفوفة. إذا كان عدد العناصر سالبًا، تُزاح المصفوفة إلى اليمين. الصياغة
arrayShiftLeft(arr, n[, default])
المعاملات
  • arr — المصفوفة المطلوب إزاحة عناصرها.Array(T). - n — عدد العناصر المطلوب إزاحتها.(U)Int8/16/32/64. - default — اختياري. القيمة الافتراضية للعناصر الجديدة.
القيمة المُعادة مصفوفة مزاحة إلى اليسار بعدد العناصر المحدد Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayShiftLeft([1,2,3,4,5,6], 2) as res;
Response
[3,4,5,6,0,0]
القيمة السالبة لـ n
Query
SELECT arrayShiftLeft([1,2,3,4,5,6], -2) as res;
Response
[0,0,1,2,3,4]
استخدام قيمة افتراضية
Query
SELECT arrayShiftLeft([1,2,3,4,5,6], 2, 42) as res;
Response
[3,4,5,6,42,42]

arrayShiftRight

أُضيف في: v23.8.0 يُزيح مصفوفة إلى اليمين بعدد العناصر المحدد. تُملأ العناصر الجديدة بالوسيطة المُمرَّرة أو بالقيمة الافتراضية لنوع عنصر المصفوفة. إذا كان عدد العناصر سالبًا، فتُزاح المصفوفة إلى اليسار. البنية
arrayShiftRight(arr, n[, default])
الوسيطات
  • arr — المصفوفة المطلوب إزاحة عناصرها. Array(T)
  • n — عدد العناصر المراد إزاحتها. (U)Int8/16/32/64
  • default — اختياري. القيمة الافتراضية للعناصر الجديدة.
القيمة المُعادة مصفوفة مُزاحة إلى اليمين بعدد العناصر المحدد. Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayShiftRight([1, 2, 3, 4, 5, 6], 2) as res;
Response
[0, 0, 1, 2, 3, 4]
القيمة السالبة لـ n
Query
SELECT arrayShiftRight([1, 2, 3, 4, 5, 6], -2) as res;
Response
[3, 4, 5, 6, 0, 0]
استخدام قيمة افتراضية
Query
SELECT arrayShiftRight([1, 2, 3, 4, 5, 6], 2, 42) as res;
Response
[42, 42, 1, 2, 3, 4]

arrayShingles

أُضيفت في: v24.1.0 تُنشئ مصفوفة من الشينغلز (على غرار ngrams في السلاسل النصية)، أي مصفوفات فرعية متتالية بطول محدد من مصفوفة الإدخال. البنية
arrayShingles(arr, l)
الوسائط
  • arr — المصفوفة التي سيتم إنشاء مصفوفة من shingles منها. Array(T)
  • l — طول كل shingle. (U)Int*
القيمة المُعادة مصفوفة shingles المُنشأة Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayShingles([1, 2, 3, 4], 3) as res;
Response
[[1, 2, 3], [2, 3, 4]]

arrayShuffle

أُضيفت في: v23.2.0 تعيد مصفوفةً بالحجم نفسه للمصفوفة الأصلية، مع عناصرها بترتيب عشوائي. تُعادُ ترتيب العناصر بحيث يكون لكل ترتيب ممكن لهذه العناصر الاحتمال نفسه للظهور.
لن تقوم هذه الدالة بتجسيد الثوابت.
البنية
arrayShuffle(arr [, seed])
الوسائط
  • arr — المصفوفة المراد خلطها. Array(T)
  • seed (optional) — اختياري. البذرة المستخدمة في توليد الأرقام العشوائية. وإذا لم تُوفَّر، تُستخدم بذرة عشوائية. (U)Int*
القيمة المُعادة مصفوفة بعد خلط عناصرها Array(T) أمثلة مثال بدون seed (نتائج غير مستقرة)
Query
SELECT arrayShuffle([1, 2, 3, 4]);
Response
[1,4,2,3]
مثال من دون seed (نتائج ثابتة)
Query
SELECT arrayShuffle([1, 2, 3, 4], 41);
Response
[3,2,1,4]

arraySimilarity

تم تقديمها في: v25.4.0 تحسب درجة التشابه بين مصفوفتين من 0 إلى 1 استنادًا إلى مسافة Levenshtein الموزونة. البنية
arraySimilarity(from, to, from_weights, to_weights)
الوسيطات
  • from — المصفوفة الأولى Array(T)
  • to — المصفوفة الثانية Array(T)
  • from_weights — الأوزان الخاصة بالمصفوفة الأولى. Array((U)Int*|Float*)
  • to_weights — الأوزان الخاصة بالمصفوفة الثانية. Array((U)Int*|Float*)
القيمة المُعادة يعيد قيمة التشابه بين المصفوفتين ضمن النطاق 0 إلى 1 استنادًا إلى مسافة Levenshtein الموزونة Float64 أمثلة مثال على الاستخدام
Query
SELECT arraySimilarity(['A', 'B', 'C'], ['A', 'K', 'L'], [1.0, 2, 3], [3.0, 4, 5]);
Response
0.2222222222222222

arraySlice

أُضيف في: v1.1.0 يعيد جزءًا من المصفوفة، مع تضمين عناصر NULL. الصياغة
arraySlice(arr, offset [, length])
الوسيطات
  • arr — المصفوفة المطلوب أخذ شريحة منها. Array(T)
  • offset — الإزاحة من طرف المصفوفة. تشير القيمة الموجبة إلى إزاحة من اليسار، وتشير القيمة السالبة إلى إزاحة من اليمين. يبدأ ترقيم عناصر المصفوفة من 1. (U)Int*
  • length — طول الشريحة المطلوبة. إذا حددت قيمة سالبة، فستُرجع الدالة شريحة مفتوحة [offset, array_length - length]. وإذا حذفت القيمة، فستُرجع الدالة الشريحة [offset, the_end_of_array]. (U)Int*
القيمة المُعادة ترجع شريحة من المصفوفة تتكون من length عنصرًا بدءًا من offset المحدد Array(T) أمثلة مثال على الاستخدام
Query
SELECT arraySlice([1, 2, NULL, 4, 5], 2, 3) AS res;
Response
[2, NULL, 4]

arraySort

أُضيفت في: v1.1.0 ترتّب عناصر المصفوفة المُعطاة بترتيب تصاعدي. إذا جرى تحديد دالة لامبدا f، فإن ترتيب الفرز يتحدّد بناءً على نتيجة تطبيق دالة لامبدا على كل عنصر من عناصر المصفوفة. إذا كانت دالة لامبدا تقبل عدة وسائط، فسيُمرَّر إلى الدالة arraySort عدة مصفوفات تقابل وسائط f. إذا كانت المصفوفة المطلوب فرزها تحتوي على -Inf أو NULL أو NaN أو Inf، فسيجري فرزها بالترتيب التالي:
  1. -Inf
  2. Inf
  3. NaN
  4. NULL
arraySort هي دالة عالية الرتبة. البنية
arraySort([f,] arr [, arr1, ... ,arrN])
الوسائط
  • f(y1[, y2 ... yN]) — دالة لامدا تُطبَّق على عناصر المصفوفة x. - arr — المصفوفة المطلوب فرزها. Array(T) - arr1, ..., arrN — اختياري. عدد N من المصفوفات الإضافية، وذلك عندما تقبل f عدة وسائط.
القيمة المُعادة تُعيد المصفوفة arr مرتبةً ترتيبًا تصاعديًا إذا لم يتم توفير دالة لامدا، وإلا فإنها تُعيد مصفوفة مرتبة وفقًا للمنطق الذي تحدده دالة لامدا المُقدَّمة. Array(T). أمثلة مثال 1
Query
SELECT arraySort([1, 3, 3, 0]);
Response
[0,1,3,3]
مثال 2
Query
SELECT arraySort(['hello', 'world', '!']);
Response
['!','hello','world']
مثال 3
Query
SELECT arraySort([1, nan, 2, NULL, 3, nan, -4, NULL, inf, -inf]);
Response
[-inf,-4,1,2,3,inf,nan,nan,NULL,NULL]

arraySplit

استُحدثت في: v20.1.0 قسِّم المصفوفة المصدر إلى عدة مصفوفات. عندما تُرجِع func(x [, y1, ..., yN]) قيمةً غير صفرية، ستُقسَّم المصفوفة إلى يسار ذلك العنصر. لن تُقسَّم المصفوفة قبل العنصر الأول. الصياغة
arraySplit(func(x[, y1, ..., yN]), source_arr[, cond1_arr, ... , condN_arr])
الوسائط
  • func(x[, y1, ..., yN]) — دالة لامبدا تُطبَّق على عناصر المصفوفة المصدر (x) ومصفوفات الشروط (y).دالة لامبدا. - source_arr — المصفوفة المصدر المطلوب تقسيمها Array(T). - [, cond1_arr, ... , condN_arr] — اختياري. عدد N من مصفوفات الشروط التي توفّر وسائط إضافية لدالة لامبدا. Array(T).
القيمة المعادة تعيد مصفوفة من المصفوفات Array(Array(T)) أمثلة مثال على الاستخدام
Query
SELECT arraySplit((x, y) -> y, [1, 2, 3, 4, 5], [1, 0, 0, 1, 0]) AS res
Response
[[1, 2, 3], [4, 5]]

arraySum

تم تقديمه في: v21.1.0 يعيد مجموع عناصر المصفوفة المصدر. إذا جرى تحديد دالة لامبدا func، فإنه يعيد مجموع عناصر نتائج لامبدا. البنية
arraySum([func(x[, y1, ..., yN])], source_arr[, cond1_arr, ... , condN_arr])
الوسيطات
  • func(x[, y1, ..., yN]) — اختياري. دالة لامبدا تعمل على عناصر المصفوفة المصدر (x) ومصفوفات الشرط (y). دالة لامبدا
  • source_arr — المصفوفة المصدر المطلوب معالجتها. Array(T)
  • , cond1_arr, ... , condN_arr] — اختياري. عدد N من مصفوفات الشرط التي توفّر وسيطات إضافية لدالة لامبدا. Array(T)
القيمة المُعادة تعيد مجموع العناصر في المصفوفة المصدر، أو مجموع عناصر نتائج دالة لامبدا إذا تم توفيرها. أمثلة مثال أساسي
Query
SELECT arraySum([1, 2, 3, 4]);
Response
10
الاستخدام مع دالة Lambda
Query
SELECT arraySum(x, y -> x+y, [1, 1, 1, 1], [1, 1, 1, 1]);
Response
8

arraySymmetricDifference

أُضيفت في: v25.4.0 تأخذ هذه الدالة عدة مصفوفات وتُرجع مصفوفة بالعناصر غير الموجودة في جميع مصفوفات الإدخال. ولا تتضمن النتيجة إلا قيماً فريدة.
يُعرَّف الفرق المتماثل لأكثر من مجموعتَين رياضياً بأنه مجموعة جميع عناصر الإدخال التي تظهر في عدد فردي من مجموعات الإدخال. وعلى النقيض من ذلك، تُرجع الدالة arraySymmetricDifference ببساطة مجموعة عناصر الإدخال التي لا تظهر في جميع مجموعات الإدخال.
البنية
arraySymmetricDifference(arr1, arr2, ... , arrN)
الوسائط
  • arrN — ‏N من المصفوفات التي ستُنشأ منها المصفوفة الجديدة. Array(T).
القيمة المُعادة يعيد مصفوفة من العناصر المميّزة غير الموجودة في جميع مصفوفات المصدر Array(T) أمثلة مثال على الاستخدام
Query
SELECT
arraySymmetricDifference([1, 2], [1, 2], [1, 2]) AS empty_symmetric_difference,
arraySymmetricDifference([1, 2], [1, 2], [1, 3]) AS non_empty_symmetric_difference;
Response
┌─empty_symmetric_difference─┬─non_empty_symmetric_difference─┐
│ []                         │ [3,2]                          │
└────────────────────────────┴────────────────────────────────┘

arrayTopK

أُضيفت في: v26.6.0 تُرجِع مصفوفة تحتوي على أكبر K عناصر من مصفوفة الإدخال، مرتبة ترتيبًا تنازليًا. إذا جرى تحديد lambda functionf، فتُقارَن العناصر بناءً على ناتج تطبيق f على كل عنصر. إذا كانت f تقبل عدة وسيطات، فستُمرَّر مصفوفات إضافية إلى arrayTopK، وتكون عناصرها مطابقةً لوسيطات f. تُتخطى القيم NULL ولا تظهر في النتيجة. ويكون حجم النتيجة بحد أقصى K وقد يكون أصغر إذا كانت مصفوفة الإدخال تحتوي على عدد من العناصر غير NULL أقل من K. ويكون نوع عنصر النتيجة هو النظير غير القابل لـ NULL لنوع عنصر الإدخال. تُعد arrayTopK دالة من الرتبة العليا. انظر أيضًا إلى arrayBottomK، التي تُرجِع أصغر K عناصر بدلًا من ذلك. الصياغة
arrayTopK([f,] K, arr [, arr1, ... ,arrN])
الوسائط
  • f(arr[, arr1, ... ,arrN]) — اختياري. دالة لامبدا لحساب مفتاح الترتيب لكل عنصر. دالة لامبدا
  • K — عدد أكبر العناصر المراد إرجاعها. (U)Int8/16/32/64
  • arr — مصفوفة. Array(T)
  • arr1, ... ,arrN — ‏N من المصفوفات الإضافية، إذا كانت f تقبل عدة وسائط. Array(T)
القيمة المعادة تُرجع ما يصل إلى K من عناصر arr ذات القيم الأكبر (أو أكبر نواتج دالة لامبدا)، مرتبة ترتيبًا تنازليًا. تُتخطى قيم NULL. ويكون نوع عنصر المصفوفة المعادة هو T حتى عندما يكون الإدخال من النوع Nullable(T). أمثلة simple_int
Query
SELECT arrayTopK(3, [1, 5, 2, 7, 3])
Response
[7,5,3]
skip_nulls
Query
SELECT arrayTopK(3, [1, NULL, 5, 2, NULL, 7])
Response
[7,5,2]
fewer_than_k
Query
SELECT arrayTopK(5, [1, NULL, 2])
Response
[2,1]
lambda_simple
Query
SELECT arrayTopK((x) -> -x, 2, [5, 9, 1, 3])
Response
[1,3]
lambda_multi
Query
SELECT arrayTopK((x, y) -> y, 2, ['a', 'b', 'c'], [3, 1, 2])
Response
['a','c']

arrayTranspose

استُحدث في: v26.4.0 يبدّل صفوف المصفوفة ثنائية الأبعاد وأعمدتها. يجب أن تكون جميع المصفوفات الداخلية بالطول نفسه. الصيغة
arrayTranspose(arr)
الوسائط
  • arr — مصفوفة ثنائية الأبعاد يُراد نقلها. يجب أن يكون طول جميع المصفوفات الداخلية متماثلًا. Array(Array(T))
القيمة المعادة مصفوفة ثنائية الأبعاد منقولة، بحيث يكون العنصر [i][j] في النتيجة مساويًا للعنصر [j][i] في المُدخل. Array(Array(T)) أمثلة مصفوفة مربعة
Query
SELECT arrayTranspose([[1, 2], [3, 4]])
Response
[[1, 3], [2, 4]]
مصفوفة غير مربعة
Query
SELECT arrayTranspose([[1, 2, 3], [4, 5, 6]])
Response
[[1, 4], [2, 5], [3, 6]]
عناصر من النوع String
Query
SELECT arrayTranspose([['a', 'b'], ['c', 'd']])
Response
[['a', 'c'], ['b', 'd']]

arrayUnion

أُضيف في: v24.10.0 يأخذ عدة مصفوفات ويُرجع مصفوفةً تتضمن جميع العناصر الموجودة في أيٍّ من المصفوفات المصدرية. وتحتوي النتيجة على قيم فريدة فقط. الصياغة
arrayUnion(arr1, arr2, ..., arrN)
الوسائط
  • arrN — عدد N من المصفوفات التي تُنشأ منها المصفوفة الجديدة. Array(T)
القيمة المعادة تعيد مصفوفة تضم عناصر مميزة من المصفوفات المصدر Array(T) أمثلة مثال على الاستخدام
Query
SELECT
arrayUnion([-2, 1], [10, 1], [-2], []) as num_example,
arrayUnion(['hi'], [], ['hello', 'hi']) as str_example,
arrayUnion([1, 3, NULL], [2, 3, NULL]) as null_example
Response
┌─num_example─┬─str_example────┬─null_example─┐
│ [10,-2,1]   │ ['hello','hi'] │ [3,2,1,NULL] │
└─────────────┴────────────────┴──────────────┘

arrayUniq

قُدِّمت في: v1.1.0 عند تمرير وسيط واحد، تحسب عدد العناصر المختلفة في المصفوفة. وعند تمرير عدة وسائط، تحسب عدد tuples المختلفة المتكوِّنة من العناصر الموجودة في المواضع المتطابقة عبر عدة مصفوفات. على سبيل المثال، سيُنشئ SELECT arrayUniq([1,2], [3,4], [5,6]) الـ tuples التالية:
  • الموضع 1: (1,3,5)
  • الموضع 2: (2,4,6)
بعد ذلك، ستحسب عدد الـ tuples الفريدة. في هذه الحالة تكون القيمة 2. يجب أن تكون جميع المصفوفات المُمرَّرة بالطول نفسه.
إذا كنت تريد الحصول على قائمة بالعناصر الفريدة في المصفوفة، فيمكنك استخدام arrayReduce('groupUniqArray', arr).
الصياغة
arrayUniq(arr1[, arr2, ..., arrN])
الوسائط
  • arr1 — المصفوفة التي يُراد حساب عدد العناصر الفريدة فيها. Array(T)
  • [, arr2, ..., arrN] — اختياري. مصفوفات إضافية تُستخدم لحساب عدد Tuples الفريدة المتكوّنة من العناصر الموجودة في المواضع المناظرة عبر عدة مصفوفات. Array(T)
القيمة المُعادة عند استخدام وسيط واحد، تُرجِع عدد العناصر الفريدة. وعند استخدام عدة وسائط، تُرجِع عدد Tuples الفريدة المتكوّنة من العناصر الموجودة في المواضع المناظرة عبر المصفوفات. UInt32 أمثلة وسيط واحد
Query
SELECT arrayUniq([1, 1, 2, 2])
Response
2
وسائط متعددة
Query
SELECT arrayUniq([1, 2, 3, 1], [4, 5, 6, 4])
Response
3

arrayWithConstant

أُضيفت في: v20.1.0 ينشئ مصفوفة بطول length مملوءة بالقيمة الثابتة x. الصياغة
arrayWithConstant(N, x)
الوسيطات
  • length — عدد العناصر في المصفوفة. (U)Int*
  • x — قيمة العناصر N في المصفوفة، ويمكن أن تكون من أي نوع.
القيمة المُعادة تعيد مصفوفة تضم N عنصرًا، قيمة كل منها x. Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayWithConstant(3, 1)
Response
[1, 1, 1]

arrayZip

أُضيفت في: v20.1.0 تجمع عدة مصفوفات في مصفوفة واحدة. تحتوي المصفوفة الناتجة على العناصر المناظرة من مصفوفات الإدخال، مجمَّعةً في Tupleات وفق ترتيب الوسيطات المذكور. الصياغة
arrayZip(arr1, arr2, ... , arrN)
الوسائط
  • arr1, arr2, ... , arrN — عدد N من المصفوفات لدمجها في مصفوفة واحدة. Array(T)
القيمة المُعادة تعيد مصفوفةً تحتوي على عناصر من المصفوفات المصدر، مجمّعةً في Tuples. تكون أنواع البيانات في الـ Tuple هي نفسها أنواع بيانات المصفوفات المُدخلة، وبالترتيب نفسه الذي تُمرَّر به المصفوفات Array(T) أمثلة مثال على الاستخدام
Query
SELECT arrayZip(['a', 'b', 'c'], [5, 2, 1]);
Response
[('a', 5), ('b', 2), ('c', 1)]

arrayZipUnaligned

أُضيف في: v20.1.0 يجمع عدة مصفوفات في مصفوفة واحدة، مع دعم المصفوفات غير المتحاذية (أي المصفوفات ذات الأطوال المختلفة). وتحتوي المصفوفة الناتجة على العناصر المناظرة من المصفوفات المصدر، مجمَّعة في Tuples وفق ترتيب الوسيطات المذكور. البنية
arrayZipUnaligned(arr1, arr2, ..., arrN)
الوسيطات
  • arr1, arr2, ..., arrN — عدد N من المصفوفات لدمجها في مصفوفة واحدة. Array(T)
القيمة المعادة تعيد مصفوفةً تضم عناصر من مصفوفات المصدر مجمّعةً في قيم Tuple. وتكون أنواع البيانات داخل الـ Tuple مطابقةً لأنواع مصفوفات الإدخال وبالترتيب نفسه الذي تُمرَّر به المصفوفات. Array(T) أو Tuple(T1, T2, ...) أمثلة مثال على الاستخدام
Query
SELECT arrayZipUnaligned(['a'], [1, 2, 3]);
Response
[('a', 1),(NULL, 2),(NULL, 3)]

countEqual

تم تقديمها في: v1.1.0 تعيد عدد العناصر في المصفوفة التي تساوي x. وهي مكافئة لـ arrayCount(elem -> elem = x, arr). تُعامَل عناصر NULL كقيم منفصلة. البنية
countEqual(arr, x)
الوسائط
  • arr — المصفوفة المراد البحث فيها. Array(T)
  • x — القيمة المطلوب عدّها في المصفوفة. أي نوع.
القيمة المعادة يعيد عدد العناصر في المصفوفة التي تساوي x UInt64 أمثلة مثال على الاستخدام
Query
SELECT countEqual([1, 2, NULL, NULL], NULL)
Response
2

empty

قُدِّم في: v1.1.0 يتحقق مما إذا كانت المصفوفة المُدخلة فارغة. تُعد المصفوفة فارغة إذا كانت لا تحتوي على أي عناصر.
يمكن تحسين أداء هذه الدالة بتفعيل إعداد optimize_functions_to_subcolumns. عند ضبط optimize_functions_to_subcolumns = 1، تقرأ الدالة فقط العمود الفرعي size0 بدلًا من قراءة عمود المصفوفة بالكامل ومعالجته. ويتحوّل الاستعلام SELECT empty(arr) FROM TABLE; إلى SELECT arr.size0 = 0 FROM TABLE;.
تعمل هذه الدالة أيضًا مع Strings أو UUIDs. البنية
empty(arr)
المعاملات
  • arr — مصفوفة الإدخال. Array(T)
القيمة المُعادة يعيد 1 للمصفوفة الفارغة، أو 0 للمصفوفة غير الفارغة UInt8 أمثلة مثال استخدام
Query
SELECT empty([]);
Response
1

emptyArrayDate

أُضيفت في: v1.1.0 تُرجع مصفوفة Date فارغة البنية
emptyArrayDate()
الوسيطات
  • لا شيء.
القيمة المعادة مصفوفة Date فارغة. Array(T) أمثلة مثال على الاستخدام
Query
SELECT emptyArrayDate
Response
[]

emptyArrayDateTime

أُضيفت في: v1.1.0 تُرجع مصفوفة DateTime فارغة الصياغة
emptyArrayDateTime()
الوسيطات
  • لا شيء.
القيمة المُعادة مصفوفة DateTime فارغة. Array(T) أمثلة مثال على الاستخدام
Query
SELECT emptyArrayDateTime
Response
[]

emptyArrayFloat32

أُضيف في: v1.1.0 يعيد مصفوفة Float32 فارغة الصيغة
emptyArrayFloat32()
الوسائط
  • لا شيء.
القيمة المعادة مصفوفة فارغة من نوع Float32. Array(T) أمثلة مثال على الاستخدام
Query
SELECT emptyArrayFloat32
Response
[]

emptyArrayFloat64

قُدِّم في: v1.1.0 يعيد مصفوفة فارغة من نوع Float64 الصيغة
emptyArrayFloat64()
الوسائط
  • لا شيء.
القيمة المُعادة مصفوفة Float64 فارغة. Array(T) أمثلة مثال على الاستخدام
Query
SELECT emptyArrayFloat64
Response
[]

emptyArrayInt16

أُضيف في: v1.1.0 تعيد مصفوفة Int16 فارغة البنية
emptyArrayInt16()
المعاملات
  • لا شيء.
القيمة المُعادة مصفوفة فارغة من النوع Int16. Array(T) أمثلة مثال على الاستخدام
Query
SELECT emptyArrayInt16
Response
[]

emptyArrayInt32

أُضيف في: v1.1.0 يُرجع مصفوفة Int32 فارغة الصيغة
emptyArrayInt32()
الوسائط
  • لا شيء.
القيمة المُعادة مصفوفة Int32 فارغة. Array(T) أمثلة مثال للاستخدام
Query
SELECT emptyArrayInt32
Response
[]

emptyArrayInt64

أُضيف في: v1.1.0 يعيد مصفوفة Int64 فارغة الصيغة
emptyArrayInt64()
الوسائط
  • لا شيء.
القيمة المُعادة مصفوفة Int64 فارغة. Array(T) أمثلة مثال على الاستخدام
Query
SELECT emptyArrayInt64
Response
[]

emptyArrayInt8

أُضيفت في: v1.1.0 تُرجِع مصفوفة Int8 فارغة الصياغة
emptyArrayInt8()
المعاملات
  • لا شيء.
القيمة المُعادة مصفوفة Int8 فارغة. Array(T) أمثلة مثال للاستخدام
Query
SELECT emptyArrayInt8
Response
[]

emptyArrayString

أُضيف في: v1.1.0 يعيد مصفوفة String فارغة الصياغة
emptyArrayString()
الوسيطات
  • لا شيء.
القيمة المعادة مصفوفة فارغة من نوع String. Array(T) أمثلة مثال على الاستخدام
Query
SELECT emptyArrayString
Response
[]

emptyArrayToSingle

قُدِّمت في: v1.1.0 تقبل مصفوفة فارغة وتُرجع مصفوفة من عنصر واحد تساوي القيمة الافتراضية. البنية
emptyArrayToSingle(arr)
المعاملات
  • arr — مصفوفة فارغة. Array(T)
القيمة المُعادة مصفوفة تحتوي على قيمة واحدة من النوع الافتراضي للمصفوفة. Array(T) أمثلة مثال أساسي
Query
CREATE TABLE test (
  a Array(Int32),
  b Array(String),
  c Array(DateTime)
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO test VALUES ([], [], []);

SELECT emptyArrayToSingle(a), emptyArrayToSingle(b), emptyArrayToSingle(c) FROM test;
Response
┌─emptyArrayToSingle(a)─┬─emptyArrayToSingle(b)─┬─emptyArrayToSingle(c)───┐
│ [0]                   │ ['']                  │ ['1970-01-01 01:00:00'] │
└───────────────────────┴───────────────────────┴─────────────────────────┘

emptyArrayUInt16

أُضيفت في: v1.1.0 تُرجع مصفوفة UInt16 فارغة الصيغة
emptyArrayUInt16()
المعاملات
  • لا شيء.
القيمة المُعادة مصفوفة فارغة من نوع UInt16. Array(T) أمثلة مثال على الاستخدام
Query
SELECT emptyArrayUInt16
Response
[]

emptyArrayUInt32

أُضيفت في: v1.1.0 تعيد مصفوفة UInt32 فارغة البنية
emptyArrayUInt32()
المعاملات
  • لا توجد.
القيمة المُعادة مصفوفة فارغة من نوع UInt32. Array(T) أمثلة مثال على الاستخدام
Query
SELECT emptyArrayUInt32
Response
[]

emptyArrayUInt64

أُضيفت في: v1.1.0 تُرجع مصفوفة UInt64 فارغة البنية
emptyArrayUInt64()
المعاملات
  • لا شيء.
القيمة المُعادة مصفوفة UInt64 فارغة. Array(T) أمثلة مثال على الاستخدام
Query
SELECT emptyArrayUInt64
Response
[]

emptyArrayUInt8

أُضيف في: v1.1.0 يعيد مصفوفة UInt8 فارغة البنية
emptyArrayUInt8()
الوسائط
  • لا شيء.
القيمة المُعادة مصفوفة فارغة من نوع UInt8. Array(T) أمثلة مثال على الاستخدام
Query
SELECT emptyArrayUInt8
Response
[]

has

تم تقديمه في: v1.1.0 يُرجع ما إذا كانت المصفوفة تحتوي على العنصر المحدد، أو ما إذا كان الـ Map يحتوي على المفتاح المحدد، أو ما إذا كان كائن JSON يحتوي على المسار المحدد. في JSON، تكون المسارات المتداخلة مدعومة باستخدام صيغة النقطة (على سبيل المثال، ‘a.b.c’). عندما تكون الوسيطة الأولى مصفوفة ثابتة وتكون الوسيطة الثانية عمودًا أو expression، فإن has(constant_array, column) يعمل مثل column IN (constant_array) ويمكنه استخدام المفتاح الأساسي وData-skipping indexes لتحسين الأداء. على سبيل المثال، يمكن أن يستفيد has([1, 10, 100], id) من فهرس المفتاح الأساسي إذا كان id جزءًا من PRIMARY KEY. ينطبق هذا التحسين أيضًا عندما يكون العمود مغلفًا داخل دوال رتيبة (على سبيل المثال، has([...], toDate(ts))). البنية
has(haystack, needle)
المعاملات
  • haystack — مصفوفة الإدخال أو الخريطة أو JSON. Array أو Map أو JSON
  • needle — القيمة المطلوب البحث عنها (عنصر في المصفوفة، أو مفتاح في الخريطة، أو سلسلة مسار في JSON).
القيمة المُعادة يعيد 1 إذا كان haystack يحتوي على needle المحددة، وإلا فيعيد 0. UInt8 أمثلة الاستخدام الأساسي لـ Array
Query
SELECT has([1, 2, 3], 2)
Response
1
Array غير موجودة
Query
SELECT has([1, 2, 3], 4)
Response
0
الاستخدام الأساسي لـ Map
Query
SELECT has(map('a', 1, 'b', 2), 'b')
Response
1
مسار JSON
Query
SELECT has('{"a": {"b": 1}}'::JSON, 'a.b')
Response
1

hasAll

أُضيفت في: v1.1.0 يتحقق مما إذا كانت مصفوفة ما مجموعة فرعية من مصفوفة أخرى.
  • المصفوفة الفارغة هي مجموعة فرعية من أي مصفوفة.
  • تُعالَج NULL على أنها قيمة.
  • لا يهم ترتيب القيم في أيٍّ من المصفوفتين.
الصياغة
hasAll(set, subset)
الوسيطات
  • set — مصفوفة من أي نوع تحتوي على مجموعة من العناصر. Array(T)
  • subset — مصفوفة من أي نوع تشترك مع set في نوع أسمى مشترك، وتحتوي على العناصر المطلوب اختبار ما إذا كانت مجموعة فرعية من set. Array(T)
القيمة المُعادة
  • 1، إذا كانت set تحتوي على جميع العناصر الموجودة في subset.
  • 0، بخلاف ذلك.
يُطلق استثناء NO_COMMON_TYPE إذا كانت عناصر set وsubset لا تشترك في نوع أسمى مشترك. أمثلة المصفوفات الفارغة
Query
SELECT hasAll([], [])
Response
1
المصفوفات التي تتضمن قيم NULL
Query
SELECT hasAll([1, Null], [Null])
Response
1
مصفوفات تحتوي على قيم من نوع آخر
Query
SELECT hasAll([1.0, 2, 3, 4], [1, 3])
Response
1
مصفوفات تحتوي على قيم من النوع String
Query
SELECT hasAll(['a', 'b'], ['a'])
Response
1
المصفوفات بلا نوع مشترك
Query
SELECT hasAll([1], ['a'])
Response
Raises a NO_COMMON_TYPE exception
مصفوفة من المصفوفات
Query
SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [3, 5]])
Response
0

hasAny

أُضيفت في: v1.1.0 يتحقق مما إذا كان هناك تقاطع بين مصفوفتين في بعض العناصر.
  • تُعامَل Null على أنها قيمة.
  • لا يهم ترتيب القيم في أيٍّ من المصفوفتين.
البنية
hasAny(arr_x, arr_y)
الوسيطات
  • arr_x — مصفوفة من أي نوع تضم مجموعة من العناصر. Array(T)
  • arr_y — مصفوفة من أي نوع تشترك مع المصفوفة arr_x في نوع أعلى مشترك. Array(T)
القيمة المُعادة
  • 1، إذا كان لدى arr_x وarr_y عنصر واحد متشابه على الأقل.
  • 0، بخلاف ذلك.
يُطلق الاستثناء NO_COMMON_TYPE إذا كان أي عنصر من عناصر المصفوفتين لا يشترك في نوع أعلى مشترك. أمثلة إحدى المصفوفتين فارغة
Query
SELECT hasAny([1], [])
Response
0
المصفوفات التي تحتوي على قيم NULL
Query
SELECT hasAny([Null], [Null, 1])
Response
1
المصفوفات التي تحتوي على قيم من نوع آخر
Query
SELECT hasAny([-128, 1., 512], [1])
Response
1
مصفوفات بلا نوع مشترك
Query
SELECT hasAny([[1, 2], [3, 4]], ['a', 'c'])
Response
Raises a `NO_COMMON_TYPE` exception
مصفوفة من مصفوفات
Query
SELECT hasAll([[1, 2], [3, 4]], [[1, 2], [1, 2]])
Response
1

hasSubstr

أُضيفت في: v20.6.0 تتحقق مما إذا كانت جميع عناصر array2 تظهر في array1 وبالترتيب نفسه تمامًا. لذلك، تُرجع الدالة 1 إذا وفقط إذا كان array1 = بادئة + array2 + لاحقة. بعبارة أخرى، تتحقق الدالة مما إذا كانت جميع عناصر array2 موجودة في array1 كما في الدالة hasAll. بالإضافة إلى ذلك، تتحقق من أن العناصر تظهر بالترتيب نفسه في كلٍّ من array1 وarray2.
  • تُرجع الدالة 1 إذا كانت array2 فارغة.
  • تُعامَل NULL على أنها قيمة. بعبارة أخرى، تُرجع hasSubstr([1, 2, NULL, 3, 4], [2,3]) القيمة 0. ومع ذلك، تُرجع hasSubstr([1, 2, NULL, 3, 4], [2,NULL,3]) القيمة 1
  • ترتيب القيم في كلتا المصفوفتين مهم.
يُطلق الاستثناء NO_COMMON_TYPE إذا كان أي عنصر من عناصر المصفوفتين لا يشترك في نوع أعلى مشترك. البنية
hasSubstr(arr1, arr2)
الوسيطات
  • arr1 — مصفوفة من أي نوع تضم مجموعة من العناصر. Array(T)
  • arr2 — مصفوفة من أي نوع تضم مجموعة من العناصر. Array(T)
القيمة المُعادة تُرجِع 1 إذا كانت المصفوفة arr1 تحتوي على المصفوفة arr2، وإلا فتُرجِع 0. UInt8 أمثلة كلتا المصفوفتين فارغتان
Query
SELECT hasSubstr([], [])
Response
1
مصفوفات تحتوي على قيم NULL
Query
SELECT hasSubstr([1, Null], [Null])
Response
1
مصفوفات تحتوي على قيم من نوع مختلف
Query
SELECT hasSubstr([1.0, 2, 3, 4], [1, 3])
Response
0
المصفوفات التي تحتوي على سلاسل نصية
Query
SELECT hasSubstr(['a', 'b'], ['a'])
Response
1
المصفوفات ذات الترتيب الصحيح
Query
SELECT hasSubstr(['a', 'b' , 'c'], ['a', 'b'])
Response
1
المصفوفات ذات الترتيب غير الصحيح
Query
SELECT hasSubstr(['a', 'b' , 'c'], ['a', 'c'])
Response
0
مصفوفة من مصفوفات
Query
SELECT hasSubstr([[1, 2], [3, 4], [5, 6]], [[1, 2], [3, 4]])
Response
1
المصفوفات بلا نوع مشترك
Query
SELECT hasSubstr([1, 2, NULL, 3, 4], ['a'])
Response
Raises a `NO_COMMON_TYPE` exception

indexOf

أُضيف في: v1.1.0 يعيد موضع أول عنصر ذي القيمة ‘x’ (بدءًا من 1) إذا كان موجودًا في المصفوفة. إذا كانت المصفوفة لا تحتوي على القيمة المطلوب البحث عنها، فستُرجِع الدالة 0. تُعامَل العناصر المعيّنة إلى NULL على أنها قيم عادية. البنية
indexOf(arr, x)
الوسائط
  • arr — مصفوفة يُبحث فيها عن x. Array(T)
  • x — قيمة أول عنصر مطابق في arr يُراد إرجاع فهرسه. UInt64
القيمة المُعادة يُرجع فهرس أول x في arr (مرقّمًا بدءًا من 1) إذا كان موجودًا. وإلا، يُرجع 0. UInt64 أمثلة مثال أساسي
Query
SELECT indexOf([5, 4, 1, 3], 3)
Response
4
مصفوفة بقيم NULL
Query
SELECT indexOf([1, 3, NULL, NULL], NULL)
Response
3

indexOfAssumeSorted

قُدِّمت في: v24.12.0 تُرجِع فهرس أول عنصر ذي القيمة ‘x’ (بدءًا من 1) إذا كان موجودًا في المصفوفة. إذا لم تحتوي المصفوفة على القيمة المطلوب البحث عنها، فستُرجِع الدالة 0.
بخلاف الدالة indexOf، تفترض هذه الدالة أن المصفوفة مرتبة ترتيبًا تصاعديًا. وإذا لم تكن المصفوفة مرتبة، فالنتائج غير معرّفة.
البنية
indexOfAssumeSorted(arr, x)
الوسيطات
  • arr — مصفوفة مرتبة للبحث فيها. Array(T)
  • x — قيمة أول عنصر مطابق في arr المرتبة يُراد إرجاع فهرسه. UInt64
القيمة المُعادة يعيد الفهرس (المرقّم بدءًا من واحد) لأول قيمة x في arr إذا كانت موجودة. وإلا، يعيد 0. UInt64 أمثلة مثال أساسي
Query
SELECT indexOfAssumeSorted([1, 3, 3, 3, 4, 4, 5], 4)
Response
5

kql_array_sort_asc

أُضيف في: v23.10.0 يرتّب مصفوفة واحدة أو أكثر بترتيب تصاعدي. تُرتَّب المصفوفة الأولى، ثم يُعاد ترتيب المصفوفات اللاحقة لتتوافق مع الترتيب المرتّب للمصفوفة الأولى. توضع القيم NULL في النهاية. هذه دالة توافق مع KQL ‏(Kusto Query Language). البنية
kql_array_sort_asc(array1[, array2, ..., nulls_last])
الوسيطات
  • array1 — المصفوفة المراد فرزها. Array(T)
  • array2 — اختياري. مصفوفات إضافية لإعادة ترتيبها وفقًا لترتيب فرز array1. Array(T)
  • nulls_last — اختياري. قيمة منطقية تشير إلى ما إذا كان يجب أن تظهر قيم NULL في النهاية. القيمة الافتراضية هي true. UInt8
القيمة المُعادة يعيد Tuple من المصفوفات مرتبة ترتيبًا تصاعديًا. Tuple(Array, ...) أمثلة الاستخدام الأساسي
Query
SELECT kql_array_sort_asc([3, 1, 2])
Response
([1, 2, 3])

kql_array_sort_desc

أُضيفت في: v23.10.0 ترتّب مصفوفة واحدة أو أكثر ترتيبًا تنازليًا. تُرتَّب المصفوفة الأولى، ثم تُعاد ترتيب المصفوفات اللاحقة لتتوافق مع الترتيب الناتج للمصفوفة الأولى. تُوضَع قيم NULL في النهاية. هذه دالة للتوافق مع KQL ‏(Kusto Query Language). البنية
kql_array_sort_desc(array1[, array2, ..., nulls_last])
الوسيطات
  • array1 — المصفوفة المطلوب فرزها. Array(T)
  • array2 — مصفوفات إضافية اختيارية يُعاد ترتيبها وفقًا لترتيب فرز array1. Array(T)
  • nulls_last — قيمة منطقية اختيارية تشير إلى ما إذا كان ينبغي أن تظهر قيم NULL أخيرًا. القيمة الافتراضية هي true. UInt8
القيمة المعادة يعيد Tuple من المصفوفات مرتبة ترتيبًا تنازليًا. Tuple(Array, ...) أمثلة الاستخدام الأساسي
Query
SELECT kql_array_sort_desc([3, 1, 2])
Response
([3, 2, 1])

length

أُضيف في: v1.1.0 يحسب طول سلسلة نصية أو مصفوفة.
  • بالنسبة إلى وسيطات String أو FixedString: يحسب عدد البايتات في السلسلة النصية.
  • بالنسبة إلى وسيطات Array: يحسب عدد العناصر في المصفوفة.
  • إذا طُبِّق على وسيطة FixedString، فإن الدالة تكون تعبيرًا ثابتًا.
يرجى ملاحظة أن عدد البايتات في السلسلة النصية لا يساوي عدد Unicode “code points”، ولا يساوي عدد Unicode “grapheme clusters” (ما نسمّيه عادةً “المحارف”)، كما أنه لا يساوي العرض المرئي للسلسلة النصية. لا بأس بوجود بايتات NULL من نوع ASCII في السلاسل النصية، وسيتم احتسابها أيضًا. الصياغة
length(x)
الأسماء البديلة: CARDINALITY, OCTET_LENGTH الوسيطات
  • x — القيمة التي يُحسَب لها عدد البايتات (في String/FixedString) أو عدد العناصر (في Array). String أو FixedString أو Array(T)
القيمة المُعادة يعيد عدد البايتات في String/FixedString x / عدد العناصر في المصفوفة x UInt64 أمثلة مثال على String
Query
SELECT length('Hello, world!')
Response
13
مثال على Array
Query
SELECT length(['Hello', 'world'])
Response
2
مثال constexpr
Query
WITH 'hello' || toString(number) AS str
SELECT str,
isConstant(length(str)) AS str_length_is_constant,
isConstant(length(str::FixedString(6))) AS fixed_str_length_is_constant
FROM numbers(3)
Response
┌─str────┬─str_length_is_constant─┬─fixed_str_length_is_constant─┐
│ hello0 │                      0 │                            1 │
│ hello1 │                      0 │                            1 │
│ hello2 │                      0 │                            1 │
└────────┴────────────────────────┴──────────────────────────────┘
مثال Unicode
Query
SELECT 'ёлка' AS str1, length(str1), lengthUTF8(str1), normalizeUTF8NFKD(str1) AS str2, length(str2), lengthUTF8(str2)
Response
┌─str1─┬─length(str1)─┬─lengthUTF8(str1)─┬─str2─┬─length(str2)─┬─lengthUTF8(str2)─┐
│ ёлка │            8 │                4 │ ёлка │           10 │                5 │
└──────┴──────────────┴──────────────────┴──────┴──────────────┴──────────────────┘
مثال على ascii_vs_utf8
Query
SELECT 'ábc' AS str, length(str), lengthUTF8(str)
Response
┌─str─┬─length(str)──┬─lengthUTF8(str)─┐
│ ábc │            4 │               3 │
└─────┴──────────────┴─────────────────┘

notEmpty

أُضيف في: v1.1.0 يتحقق مما إذا كانت المصفوفة المُدخلة غير فارغة. تُعدّ المصفوفة غير فارغة إذا كانت تحتوي على عنصر واحد على الأقل.
يمكن تحسينها عبر تمكين الإعداد optimize_functions_to_subcolumns. عند ضبط optimize_functions_to_subcolumns = 1، تقرأ الدالة العمود الفرعي size0 فقط بدلًا من قراءة عمود المصفوفة بالكامل ومعالجته. ويتحوّل الاستعلام SELECT notEmpty(arr) FROM table إلى SELECT arr.size0 != 0 FROM TABLE.
تعمل الدالة أيضًا مع السلاسل النصية أو معرّفات UUID. الصياغة
notEmpty(arr)
المعاملات
  • arr — مصفوفة الإدخال. Array(T)
القيمة المُعادة تُرجع 1 للمصفوفة غير الفارغة، أو 0 للمصفوفة الفارغة UInt8 أمثلة مثال على الاستخدام
Query
SELECT notEmpty([1,2]);
Response
1

range

تم تقديمه في: v1.1.0 يعيد مصفوفة من الأرقام من start إلى end - 1 بخطوة step. الأنواع المدعومة هي:
  • UInt8/16/32/64
  • Int8/16/32/64]
  • يجب أن تكون جميع الوسائط start وend وstep من أحد الأنواع المدعومة أعلاه. وستكون عناصر المصفوفة المُعادة من نوع أعم مشتق من أنواع الوسائط.
  • يُطرَح استثناء إذا أعادت الدالة مصفوفة يتجاوز طولها الإجمالي عدد العناصر المحدد في الإعداد function_range_max_elements_in_block.
  • يعيد NULL إذا كان أي وسيط من النوع Nullable(nothing). ويُطرَح استثناء إذا كانت قيمة أي وسيط هي NULL (من النوع Nullable(T)).
البنية
range([start, ] end [, step])
الوسائط
  • start — اختياري. العنصر الأول في المصفوفة. مطلوب إذا استُخدم step. القيمة الافتراضية: 0. - end — مطلوب. الرقم الذي تُنشأ المصفوفة قبله. - step — اختياري. يحدّد مقدار الزيادة بين كل عنصر في المصفوفة. القيمة الافتراضية: 1.
القيمة المُعادة مصفوفة من الأرقام تبدأ من start حتى end - 1 بخطوة step. Array(T) أمثلة مثال على الاستخدام
Query
SELECT range(5), range(1, 5), range(1, 5, 2), range(-1, 5, 2);
Response
┌─range(5)────┬─range(1, 5)─┬─range(1, 5, 2)─┬─range(-1, 5, 2)─┐
│ [0,1,2,3,4] │ [1,2,3,4]   │ [1,3]          │ [-1,1,3]        │
└─────────────┴─────────────┴────────────────┴─────────────────┘

replicate

أُضيف في: v1.1.0 ينشئ مصفوفة تحتوي على قيمة واحدة. الصيغة
replicate(x, arr)
الوسائط
  • x — القيمة التي ستُملأ بها مصفوفة النتيجة. Any
  • arr — مصفوفة. Array(T)
القيمة المعادة تُعيد مصفوفةً بنفس طول arr، مملوءةً بالقيمة x. Array(T) أمثلة مثال على الاستخدام
Query
SELECT replicate(1, ['a', 'b', 'c']);
Response
┌─replicate(1, ['a', 'b', 'c'])───┐
│ [1, 1, 1]                       │
└─────────────────────────────────┘

reverse

أُضيف في: v1.1.0 يعكس ترتيب العناصر في مصفوفة الإدخال أو ترتيب الأحرف في سلسلة الإدخال. الصيغة
reverse(arr | str)
الوسيطات
  • arr | str — المصفوفة أو السلسلة النصية المُدخلة. Array(T) أو String
القيمة المعادة تعيد مصفوفة أو سلسلة نصية بترتيب معكوس للعناصر أو الأحرف. أمثلة عكس المصفوفة
Query
SELECT reverse([1, 2, 3, 4]);
Response
[4, 3, 2, 1]
عكس السلسلة النصية
Query
SELECT reverse('abcd');
Response
'dcba'

دوال المسافة

جميع الدوال المدعومة موضّحة في وثائق دوال المسافة.
آخر تعديل في ٢٥ يونيو ٢٠٢٦