نظرة عامة
تعمل الدوال الحسابية على أي معاملين من النوعUInt8 أو UInt16 أو UInt32 أو UInt64 أو Int8 أو Int16 أو Int32 أو Int64 أو Float32 أو Float64.
قبل تنفيذ العملية، يُحوَّل كلا المعاملين إلى نوع النتيجة. ويُحدَّد نوع النتيجة على النحو التالي (ما لم يُذكر
خلاف ذلك في توثيق الدالة أدناه):
- إذا كان عرض كلا المعاملين لا يتجاوز 32 بت، فسيكون حجم نوع النتيجة هو حجم النوع الأكبر التالي بعد أكبر
المعاملين (ترقية حجم الأعداد الصحيحة). على سبيل المثال،
UInt8 + UInt16 = UInt32أوFloat32 * Float32 = Float64. - إذا كان أحد المعاملين بعرض 64 بت أو أكثر، فسيكون حجم نوع النتيجة مساوياً لحجم أكبر
المعاملين. على سبيل المثال،
UInt32 + UInt128 = UInt128أوFloat32 * Float64 = Float64. - إذا كان أحد المعاملين موقَّعاً، فسيكون نوع النتيجة موقَّعاً أيضاً، وإلا فسيكون غير موقَّع. على سبيل المثال،
UInt32 * Int32 = Int64أوUInt32 * UInt32 = UInt64.
abs
قُدِّمت في: v1.1.0 تحسب القيمة المطلقة لـx. ولا يكون لها أي تأثير إذا كان x من نوع غير موقَّع. أما إذا كان x من نوع موقَّع، فإنها تُرجع عددًا غير موقَّع.
البنية
x— القيمة المطلقة المطلوب حسابها لـx
x
أمثلة
مثال للاستخدام
Query
Response
avg2
أُضيف في: v25.11.0 يحسب ويُرجع متوسط قيمة المعاملات المُدخلة. يدعم الأنواع العددية والزمنية. البنيةx1, x2]— يقبل قيمتين لحساب المتوسط.
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
byteSwap
طُرحت في: v23.10.0 تعكس هذه الدالة بايتات عدد صحيح، أي تغيّر ترتيب البايتات الخاص به. يمكن توضيح المثال أدناه على النحو التالي:- حوِّل العدد الصحيح ذي الأساس 10 إلى ما يقابله بالتنسيق السداسي العشري وبترتيب big-endian، أي 3351772109 -> C7 C7 FB CD (4 بايتات)
- اعكس البايتات، أي C7 C7 FB CD -> CD FB C7 C7
- حوِّل النتيجة مرة أخرى إلى عدد صحيح بافتراض ترتيب big-endian، أي CD FB C7 C7 -> 3455829959 من حالات استخدام هذه الدالة عكس عناوين IPv4:
x— قيمة عدد صحيح.(U)Int*
x بعد عكس ترتيب البايتات. (U)Int*
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
divide
أُضيف في: v1.1.0 يحسب خارج القسمة للقيمتينa وb. ويكون نوع النتيجة دائمًا Float64.
وتوفّر الدالة intDiv القسمة الصحيحة.
تؤدي القسمة على
0 إلى إرجاع inf أو -inf أو nan.x— المقسوم -y— المقسوم عليه
Query
Response
Query
Response
divideDecimal
أُضيف: v22.12.0 يجري قسمة عددين عشريين. تكون القيمة الناتجة من النوع Decimal256. يمكن تحديد مقياس النتيجة صراحةً باستخدام الوسيطresult_scale (عدد صحيح ثابت ضمن النطاق [0, 76]). وإذا لم يُحدَّد، فسيكون مقياس النتيجة هو أكبر مقياس بين الوسيطات المُعطاة.
تعمل هذه الدالة بسرعة أبطأ بكثير من
divide الاعتيادية.
إذا لم تكن بحاجة فعلًا إلى دقة مضبوطة و/أو كنت تحتاج إلى حساب سريع، ففكّر في استخدام divide.x— القيمة الأولى: Decimal. -y— القيمة الثانية: Decimal. -result_scale— مقياس النتيجة. النوع Int/UInt.
Decimal256
أمثلة
مثال 1
Query
Response
Query
Response
divideOrNull
أُضيفت في: v25.5.0 مماثلة لـdivide، لكنها تُرجع NULL عند القسمة على صفر.
الصياغة
x— المقسوم -y— المقسوم عليه
Query
Response
gcd
قُدِّمت في: v1.1.0 تُرجِع القاسم المشترك الأكبر للقيمتين a و b. يُطرَح استثناء عند القسمة على الصفر أو عند قسمة أصغر عدد سالب على سالب واحد. البنيةx— العدد الصحيح الأول -y— العدد الصحيح الثاني
x و y.
أمثلة
مثال على الاستخدام
Query
Response
ifNotFinite
أُضيفت في: v20.3.0 يتحقق مما إذا كانت قيمة الفاصلة العائمة متناهية. يمكنك الحصول على نتيجة مماثلة باستخدام المعامل الثلاثي:isFinite(x) ? x : y.
بنية
xإذا كانتxمتناهية.yإذا كانتxغير متناهية.
Query
Response
intDiv
أُضيفت في: v1.1.0 تُجري قسمةً صحيحة للقيمتينx وy. وبعبارة أخرى،
تحسب خارج القسمة مع التقريب إلى الأسفل إلى أقرب عدد صحيح أصغر.
تكون النتيجة بنفس عرض المقسوم (المعلَمة الأولى).
يُثار استثناء عند القسمة على الصفر، أو عندما لا يقع خارج القسمة ضمن
نطاق المقسوم، أو عند قسمة أصغر عدد سالب ممكن على سالب واحد.
بنية
x— المعامل الأيسر. -y— المعامل الأيمن.
x على y
أمثلة
القسمة الصحيحة لعددين من النوع Float
Query
Response
Query
Response
intDivOrNull
تم تقديمه في: v25.5.0 مماثلة لـintDiv، لكنها تُرجع NULL عند القسمة على صفر أو عند قسمة
أصغر عدد سالب على سالب واحد.
الصياغة
x و y، أو NULL.
أمثلة
القسمة الصحيحة على الصفر
Query
Response
Query
Response
intDivOrZero
أُضيفت في: v1.1.0 مماثلة لـintDiv، لكنها تُرجِع صفرًا عند القسمة على صفر أو عند قسمة
أصغر عدد صحيح سالب ممكن على سالب واحد.
البنية
a وb، أو صفر.
أمثلة
القسمة الصحيحة على صفر
Query
Response
Query
Response
isFinite
أُضيفت في: v1.1.0 تُرجع1 إذا كانت الوسيطة من النوع Float32 أو Float64 أو BFloat16 غير لانهائية وليست NaN،
وإلا فستُرجع هذه الدالة 0.
البنية
1 إذا لم تكن قيمة x غير متناهية ولم تكن NaN، وإلا فالقيمة 0.
أمثلة
اختبر ما إذا كان العدد متناهيًا
Query
Response
isInfinite
أُضيف في: v1.1.0 تُعيد1 إذا كانت الوسيطة من النوع Float32 أو Float64 أو BFloat16 قيمةً لا نهائية، وإلا فتُعيد هذه الدالة 0.
لاحظ أن القيمة 0 تُعاد أيضًا في حالة NaN.
البنية
1 إذا كان x لا نهائيًا، وإلا 0 (بما في ذلك NaN).
أمثلة
التحقق مما إذا كان العدد لا نهائيًا
Query
Response
isNaN
أُضيفت في: v1.1.0 تعيد1 إذا كانت الوسيطة من النوع Float32 أو Float64 أو BFloat16 تساوي NaN، وإلا فتعيد 0.
الصياغة
1 إذا كانت القيمة NaN، وإلا 0
أمثلة
مثال على الاستخدام
Query
Response
kqlBin
أُضيف في: v26.8.0 يقرّب قيمة إلى الأسفل إلى أقرب مضاعف لـroundTo، كما تفعل bin() في لغة استعلام Kusto.
تعتمد القاعدة على أنواع الوسيطات: يُقرَّب الرقم حسابيًا، وتُقرَّب المدة الزمنية (وهي
Interval) بمدة زمنية، ويُقرَّب التاريخ والوقت بمدة زمنية. يكون التاريخ والوقت في KQL من النوع DateTime64؛ وتُرفض
الأنواع الأضيق DateTime وDate، لأنها لا تستطيع تمثيل كل حاوية يمكن أن ينتجها تاريخ ووقت KQL.
تدعم هذه الدالة bin() عندما يكون dialect = 'kusto'. وهي غير مخصصة للاستدعاء مباشرةً
من SQL.
البنية
value— رقم أوفترة زمنيةأو تاريخ ووقت (من نوعDateTime64). -roundTo— حجمbin.
value إلى الأسفل لأقرب مضاعف لـroundTo.
أمثلة
رقم
Query
Response
Query
Response
Query
Response
kqlBinAt
أُضيف في: v26.8.0 يقرّب قيمةً نزولًا إلى مضاعف لـbinSize محسوبًا من fixedPoint، على غرار bin_at() في لغة استعلام Kusto. وقد تتراصف الحاويات قبل النقطة المرجعية أو بعدها.
تعتمد القاعدة على أنواع الوسيطات: يُقرَّب الرقم حسابيًا، وتُقرَّب المدة الزمنية (وهي Interval) بمدة زمنية انطلاقًا من مدة زمنية أخرى، ويُقرَّب التاريخ والوقت بمدة زمنية محسوبة من نقطة مرجعية للتاريخ والوقت. يمثل التاريخ والوقت في KQL النوع DateTime64؛ ويُرفض النوعان الأقل دقةً
DateTime وDate، لأنهما لا يستطيعان تمثيل كل حاوية يمكن أن ينتجها تاريخ ووقت KQL.
تدعم هذه الدالة bin_at() عندما يكون dialect = 'kusto'. وهي غير مخصصة للاستدعاء مباشرةً
من SQL.
البنية
value— رقم أو فترة زمنية أو قيمة تاريخ ووقت (من النوعDateTime64). -binSize— حجم الحاوية. -fixedPoint— النقطة التي يبدأ منها احتساب الحاويات.
value مُقرَّبة إلى الأسفل لأقرب مضاعف لـ binSize محسوبًا بدءًا من fixedPoint.
أمثلة
number
Query
Response
Query
Response
kqlDateTimeBinAt
أُضيف في: v26.8.0 يقرّب قيمة تاريخ ووقت إلى الأسفل إلى أقرب مضاعف لـ فترة زمنية، محسوبًا من نقطة مرجعية ثابتة لـ تاريخ ووقت. البنيةvalue— التاريخ والوقت المراد تقريبه. -binSize— حجم حاوية الفترة الزمنية. -fixedPoint— النقطة المرجعية للتاريخ والوقت.
kqlDivide
أُضيف في: v26.8.0 القسمة وفق تعريف لغة استعلامات Kusto: عند قسمة معاملين صحيحين تكون النتيجة عددًا صحيحًا، لذا فإن7 / 2 تساوي 3، وعند قسمة معاملين من نوع مدة زمنية (وهما قيمتا Interval) تكون النتيجة
نسبتهما كعدد حقيقي، لذا فإن 15ms / 10ms تساوي 1.5. أما أي تركيبة أخرى من أنواع المعاملات فتُقسم
كما في divide.
تدعم هذه الدالة العامل / عندما يكون dialect = 'kusto'. ولا يُفترض استدعاؤها
مباشرةً من SQL.
البنية
x— المقسوم. -y— المقسوم عليه.
intDiv(x, y) إذا كان كلا الوسيطين عددين صحيحين، أو نسبة وحدات tick للفترات الزمنية إذا كان كلاهما فترات زمنية، أو divide(x, y) في غير ذلك.
أمثلة
الأعداد الصحيحة
Query
Response
Query
Response
Query
Response
kqlMultiply
أُضيف في: v26.8.0 الضرب كما تُعرّفه لغة استعلامات Kusto: يمكن ضرب المدة الزمنية (Interval) في
عدد من أي جانب، لذا فإن 2 * 1h تساوي ساعتين. أما الوسيطتان اللتان لا تتضمنان مدة زمنية، فتُضربان كما في
multiply.
تدعم هذه الدالة العامل * عندما يكون dialect = 'kusto'. ولا يُقصد استدعاؤها
مباشرةً من SQL.
البنية
x— رقم أو مدة زمنية. -y— رقم، أو مدة زمنية إذا كانxرقمًا.
Query
Response
Query
Response
kqlRangeCount
أُضيف في: v26.8.0 عدد الصفوف التي يُنتجها مصدرrange في لغة استعلامات Kusto هو: floor((to - from) / step) + 1، ولا يقل أبدًا عن صفر. تكون الحدود وstep أعدادًا، أو قيم DateTime
تتزايد بمقدار مدة زمنية (Interval)، أو قيم مدة زمنية؛ وتُحسب الصيغ الزمنية بالنانوثواني الصحيحة،
إذ لا يمكن التعبير عنها بقسمة واحدة في ClickHouse. وتُحسب الأعداد الصحيحة والكسور العشرية
بدقة، وليس باستخدام Float64.
تدعم هذه الدالة مصدر range عندما يكون dialect = 'kusto'. وليست مخصصة للاستدعاء
مباشرةً من SQL.
البنية
from— أول قيمة في النطاق. -to— القيمة التي لا يتجاوزها النطاق. -step— الفرق بين قيمتين متتاليتين.
Query
Response
Query
Response
lcm
استُحدثت في: v1.1.0 تعيد المضاعف المشترك الأصغر للقيمتينx وy.
يُثار استثناء عند القسمة على صفر أو عند قسمة أصغر عدد سالب ممكن على سالب واحد.
البنية
x وy. (U)Int*
أمثلة
مثال على الاستخدام
Query
Response
max2
تم تقديمه في: v21.11.0 يعيد القيمة الأكبر بين قيمتين رقميتينx وy.
البنية
x— القيمة الأولى(U)Int8/16/32/64أوFloat*أوBFloat16أوDecimaly— القيمة الثانية(U)Int8/16/32/64أوFloat*أوBFloat16أوDecimal
x وy. Float64
أمثلة
مثال للاستخدام
Query
Response
midpoint
قُدِّمت في: v25.11.0 تحسب وتُرجع متوسط قيمة الوسيطات المُقدَّمة. تدعم الأنواع العددية والزمنية. البنيةx1[, x2, ...]— تقبل قيمة واحدة أو عدة قيم لحساب المتوسط.
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
min2
أُضيف في: v21.11.0 يُرجع القيمة الأصغر من بين القيمتين العدديتينx وy.
البنية
x— القيمة الأولى من النوع(U)Int8/16/32/64أوFloat*أوBFloat16أوDecimaly— القيمة الثانية من النوع(U)Int8/16/32/64أوFloat*أوBFloat16أوDecimal
x وy. Float64
أمثلة
مثال على الاستخدام
Query
Response
minus
أُضيف في: v1.1.0 يحسب الفرق بين القيمتينa وb. تكون النتيجة دائمًا موقَّعة.
وكما في plus، يمكن طرح عدد صحيح من تاريخ أو تاريخ مع وقت.
بالإضافة إلى ذلك، يُدعَم الطرح بين قيمتَي تاريخ مع وقت، وينتج عنه الفرق الزمني بينهما.
يمكن أيضًا طرح Time أو Time64 من DateTime أو DateTime64؛
تُطبَّق قيمة الوقت كإزاحة بالثواني. ينتج عن طرح Time من DateTime
قيمة DateTime، وأي تركيبة تتضمن DateTime64 أو Time64 تنتج قيمة DateTime64
بأقصى مقياس للوسيطتين.
البنية
x— المطروح منه. -y— المطروح.
Query
Response
Query
Response
modulo
أُضيف في: v1.1.0 يحسب باقي قسمة القيمتين a وb. يكون نوع النتيجة عددًا صحيحًا إذا كان كلا المُدخلين عددين صحيحين. وإذا كان أحد المُدخلين عددًا ذا فاصلة عائمة، فسيكون نوع النتيجة Float64. يُحسب الباقي كما في C++. وتُستخدم القسمة المبتورة مع الأعداد السالبة. يُطلق استثناء عند القسمة على الصفر أو عند قسمة أصغر عدد سالب على سالب واحد. البنيةmod
الوسائط
a— المقسوم -b— المقسوم عليه (الموديولس)
Query
Response
moduloLegacy
قُدِّم في: v1.1.0 يحسب باقي القسمة. هذا هو التنفيذ القديم لـmodulo الذي يستخدم العامل % في C++، وقد يُنتج نتائج سالبة عند استخدام وسيطات سالبة. وُجدت هذه الدالة للحفاظ على التوافق مع الإصدارات السابقة لمنطق تقسيم الجدول القديم. استخدم modulo أو positiveModulo للحصول على السلوك القياسي.
الصياغة
(U)Int* أو Float*
أمثلة
الاستخدام الأساسي
Query
Response
moduloOrNull
أُضيف في: v25.5.0 يحسب remainder عند قسمةa على b. وهو مشابه للدالة modulo، إلا أن moduloOrNull تُرجع NULL
عندما تؤدي العملية، لولا ذلك، إلى حدوث استثناء فاصلة عائمة. وبالنسبة إلى معاملات الفاصلة العائمة، لا يحدث هذا إلا عندما يكون
المقسوم عليه 0؛ أما بالنسبة إلى المعاملات الصحيحة، فيشمل ذلك أيضاً باقي قسمة أصغر قيمة سالبة على -1 (مثل -128 % -1 في Int8).
البنية
modOrNull
الوسيطات
القيمة المُعادة
تعيد ناتج باقي قسمة x على y، أو NULL عندما تؤدي العملية إلى حدوث استثناء فاصلة عائمة:
عندما يكون المقسوم عليه صفراً، أو، بالنسبة إلى الوسيطات الصحيحة، عند حساب أصغر قيمة سالبة بتطبيق modulo على -1.
أمثلة
moduloOrNull عندما يكون المقسوم عليه صفراً
Query
Response
Query
Response
moduloOrZero
أُضيف في: v20.3.0 تشبه modulo، لكنها تُرجع صفرًا بدلًا من استثناء للنتائج الصحيحة عندما كانت العملية ستُطلق استثناءً لولا ذلك. أما بالنسبة إلى النتائج ذات الفاصلة العائمة، فإن المقسوم عليه الصفري ينتجNaN.
الصيغة
a % b. بالنسبة إلى النتائج من النوع الصحيح، تُرجع 0 إذا كانت العملية ستُطلق استثناءً لولا ذلك.
بالنسبة إلى النتائج ذات الفاصلة العائمة، ينتج عن المقسوم عليه الصفري NaN.
أمثلة
المقسوم عليه الصفري من النوع الصحيح
Query
Response
Query
Response
multiply
متوفرة منذ: v1.1.0 يحسب حاصل ضرب القيمتينx وy.
الصيغة
Query
Response
multiplyDecimal
أُضيف في: v22.12.0 يُجري عملية ضرب على عددين من النوع Decimal. ستكون قيمة النتيجة من النوع Decimal256. يمكن تحديد مقياس النتيجة صراحةً باستخدام الوسيطresult_scale (عدد صحيح ثابت ضمن النطاق [0, 76]). وإذا لم يُحدَّد، فسيكون مقياس النتيجة هو أكبر مقياس بين الوسيطات المُعطاة.
تعمل هذه الدوال أبطأ بكثير من
multiply العادية.
إذا لم تكن بحاجة فعلًا إلى دقة مضبوطة و/أو كنت تحتاج إلى حسابات سريعة، ففكّر في استخدام multiplya— القيمة الأولى.Decimalb— القيمة الثانية.Decimalresult_scale— عدد المنازل العشرية في النتيجة.(U)Int*
Decimal256
أمثلة
مثال على الاستخدام
Query
Response
Query
Response
Query
Response
Query
Response
negate
تمت إضافته في: v1.1.0 يُرجِع نفي الوسيطةx. وتكون النتيجة دائمًا من نوع موقَّع.
الصيغة
x— القيمة المطلوب عكس إشارتها.
-x عند إدخال x
أمثلة
مثال على الاستخدام
Query
Response
plus
أُضيف في: v1.1.0 تحسب مجموع القيمتينx وy. الاسم البديل: x + y (المعامل).
يمكن أيضًا جمع عدد صحيح مع تاريخ أو تاريخ مع وقت. تزيد العملية الأولى
عدد الأيام في التاريخ، بينما تزيد العملية الثانية
عدد الثواني في التاريخ مع الوقت.
ويمكن أيضًا جمع تاريخ ووقت. تؤدي إضافة Date وTime
إلى إنتاج DateTime. كما تؤدي إضافة Date وTime64، أو Date32 و
Time أو Time64، إلى إنتاج DateTime64.
تُطبّق إضافة Time أو Time64 إلى DateTime أو DateTime64 قيمة الوقت
كإزاحة بالثواني. تؤدي إضافة DateTime وTime إلى إنتاج DateTime،
بينما تؤدي أي تركيبة تتضمن DateTime64 أو Time64 إلى إنتاج DateTime64
بأقصى مقياس للمعاملين.
البنية
x— المعامل في الطرف الأيسر. -y— المعامل في الطرف الأيمن.
Query
Response
Query
Response
Query
Response
positiveModulo
أُضيفت في: v22.11.0 تحسب الباقي عند قسمةx على y. وهي مشابهة للدالة
modulo، إلا أن positiveModulo تعيد دائمًا عددًا غير سالب.
الصيغة
positive_modulo, pmod
الوسيطات
القيمة المُعادة
تعيد الفرق بين x وأكبر عدد صحيح لا يتجاوز
x ويقبل القسمة على y.
أمثلة
مثال على الاستخدام
Query
Response
positiveModuloOrNull
تم تقديمها في: v25.5.0 تحسب الباقي عند قسمةa على b. وهي مشابهة للدالة positiveModulo، باستثناء أن positiveModuloOrNull تُرجِع NULL
عندما كانت العملية ستؤدي، لولا ذلك، إلى استثناء فاصلة عائمة. وبالنسبة إلى الوسائط ذات الفاصلة العائمة، لا يحدث هذا إلا عندما
يكون المقسوم عليه 0؛ أما بالنسبة إلى الوسائط الصحيحة، فإنه يشمل أيضاً القيمة السالبة الدنيا modulo -1 (مثل -128 % -1 بالنسبة إلى Int8).
البنية
positive_modulo_or_null, pmodOrNull
الوسيطات
x— المقسوم.(U)Int*/Float32/64. -x— المقسوم عليه (الموديولس).(U)Int*/Float32/64.
x وأقرب عدد صحيح لا يزيد عن
x ويقبل القسمة على y، أو NULL إذا كانت العملية ستؤدي إلى استثناء فاصلة عائمة: عندما يكون المقسوم عليه صفراً، أو،
بالنسبة إلى الوسائط الصحيحة، عند حساب أصغر قيمة سالبة بترديد -1.
أمثلة
positiveModuloOrNull على الصفر
Query
Response
Query
Response
sqr
تم تقديمه في: v26.7.0 يحسب مربع القيمةx.
البنية
x في نفسه.
أمثلة
تربيع عدد
Query
Response