استُحدث في: v1.1.0يفسّر العدد UInt64 على أنه عنوان MAC بتنسيق big-endian.
ويُرجع عنوان MAC المقابل بالتنسيق AA:BB:CC:DD:EE:FF (قيم مفصولة بنقطتين بالصيغة الست عشرية) كسلسلة نصية.الصياغة
أُضيف في: v1.1.0إذا أُعطي عنوان MAC بالتنسيق AA:BB:CC:DD:EE:FF (أرقام مفصولة بنقطتين بالصيغة السداسية العشرية)، فإنه يعيد أول ثلاثة أوكتيتات على هيئة رقم UInt64. وإذا كان عنوان MAC بتنسيق غير صالح، فإنه يعيد 0.بنية الجملة
أُضيفت في: v25.11.0إذا جرى تبديل مستخدم الجلسة باستخدام الأمر EXECUTE AS، فستُرجع هذه الدالة اسم المستخدم الأصلي الذي استُخدم للمصادقة وإنشاء الجلسة.
الاسم البديل: authUser()البنية
authenticatedUser()
الأسماء البديلة: authUserالوسائط
لا يوجد.
القيمة المعادةاسم المستخدم الذي تمت المصادقة عليه. Stringأمثلةمثال على الاستخدام
Query
EXECUTE as u1; SELECT currentUser(), authenticatedUser();
استُحدث في: v1.1.0ينشئ مخططًا شريطيًا.
يرسم شريطًا بعرض يتناسب مع (x - min)، ويكون مساويًا لعدد المحارف في width عندما تكون x = max.
يُرسَم الشريط بدقة تصل إلى ثُمن المحرف.البنية
أُضيف في: v1.1.0يعيد رقمًا تسلسليًا يزداد باطراد لـالكتلة التي تحتوي على الصف.
ويُحدَّث رقم الكتلة المُعاد قدر الإمكان، أي قد لا يكون دقيقًا تمامًا.الصيغة
blockNumber()
الوسائط
لا شيء.
القيمة المعادةالرقم التسلسلي لكتلة البيانات التي يقع فيها الصف. UInt64أمثلةالاستخدام الأساسي
قُدِّمت في: v20.5.0تُرجِع معرّف البناء الذي يُنشئه مصرّف للملف التنفيذي لخادم ClickHouse قيد التشغيل.
إذا نُفِّذت في سياق جدول موزّع، فستُنشئ هذه الدالة عمودًا عاديًا بقيم مرتبطة بكل shard.
وإلا فإنها تُنتج قيمة ثابتة.الصيغة
buildId()
المعاملات
لا توجد.
القيمة المُعادةيُرجع معرّف البناء. Stringأمثلةمثال على الاستخدام
أُضيفت في: v21.1.0تعيد تقديرًا لحجم البايت غير المضغوط لوسيطاتها في الذاكرة.
بالنسبة إلى الوسيطات من النوع String، تعيد الدالة طول السلسلة + 8 (الطول).
إذا كانت للدالة عدة وسيطات، فإنها تحسب مجموع أحجام البايت الخاصة بها.البنية
byteSize(arg1[, arg2, ...])
الوسائط
arg1[, arg2, ...] — قيم من أي نوع بيانات يُراد تقدير حجمها بالبايت في صورتها غير المضغوطة. Any
القيمة المُعادةتعيد تقديرًا لحجم الوسائط بالبايت في الذاكرة. UInt64أمثلةمثال على الاستخدام
أُضيف في: v22.9.0قيِّم نموذج CatBoost خارجيًا. CatBoost مكتبة تعزيز تدرّجي مفتوحة المصدر طوّرتها Yandex للتعلّم الآلي.
تقبل مسارًا إلى نموذج CatBoost ووسيطات النموذج (السمات).المتطلبات المسبقة
ابنِ مكتبة تقييم CatBoost
قبل تقييم نماذج CatBoost، يجب إتاحة المكتبة libcatboostmodel.<so|dylib>. راجع توثيق CatBoost لمعرفة كيفية تجميعها.بعد ذلك، حدِّد المسار إلى libcatboostmodel.<so|dylib> في تهيئة ClickHouse:
لأسباب تتعلق بالأمان والعزل، لا يُجرى تقييم النموذج داخل عملية الخادم، بل داخل عملية clickhouse-library-bridge.
عند أول تنفيذ للدالة catboostEvaluate()، يبدأ الخادم عملية جسر المكتبة إذا لم تكن قيد التشغيل بالفعل. وتتواصل العمليتان
باستخدام واجهة HTTP. يُستخدم المنفذ 9012 افتراضيًا. ويمكن تحديد منفذ مختلف كما يلي - ويكون ذلك مفيدًا إذا كان المنفذ
9012 مخصّصًا بالفعل لخدمة مختلفة.
أُضيفت في: v26.2.0تحوّل لونًا من فضاء الألوان الإدراكي OKLab إلى فضاء الألوان sRGB.يُحدَّد لون الإدخال في فضاء الألوان OKLab. إذا كانت قيم الإدخال خارج
نطاقات OKLab المعتادة، فتُحدَّد النتيجة وفقًا للتنفيذ.يستخدم OKLab ثلاثة مكوّنات:
L: الإضاءة الإدراكية (عادةً في النطاق [0..1])
a: المحور التقابلي الأخضر-الأحمر
b: المحور التقابلي الأزرق-الأصفر
مكوّنا a و b غير محدودين نظريًا، لكنهما عمليًا يقعان بين -0.4 و 0.4.
صُمّم OKLab ليكون موحّدًا إدراكيًا
مع بقائه قليل الكلفة حسابيًا.يُفترض أن يكون هذا التحويل معكوسًا لـ colorSRGBToOKLAB، ويتكوّن من
المراحل التالية:
التحويل من OKLab إلى Linear sRGB.
2) التحويل من Linear sRGB إلى sRGB مُرمَّز بالغاما.
gamma — اختياري. الأسّ المستخدم لتحويل Linear sRGB مرة أخرى إلى sRGB عبر تطبيق (x ^ (1 / gamma)) * 255 على كل قناة x. القيمة الافتراضية هي 2.2. Float64
القيمة المعادةتعيد قيمة Tuple بالشكل (R, G, B) تمثل قيم ألوان sRGB. Tuple(Float64, Float64, Float64)أمثلةتحويل OKLAB إلى sRGB (Float)
Query
SELECT colorOKLABToSRGB((0.4466, 0.0991, 0.44)) AS rgb;
أُضيف في: v25.7.0يحوّل لونًا من فضاء الألوان الإدراكي OKLCH إلى فضاء الألوان sRGB المألوف.إذا كانت L خارج النطاق [0...1]، أو كانت C سالبة، أو كانت H خارج النطاق [0...360]، فإن النتيجة تكون مُعرَّفة بحسب التنفيذ.
OKLCH هو نسخة أسطوانية من فضاء الألوان OKLab.
إحداثياته الثلاث هي L (السطوع ضمن النطاق [0...1])، وC (التشبّع >= 0)، وH (تدرّج اللون بالدرجات ضمن [0...360]).
صُمّم OKLab/OKLCH ليكون متجانسًا إدراكيًا مع بقائه منخفض الكلفة حسابيًا.
من OKLCH إلى OKLab.
2) من OKLab إلى Linear sRGB
3) من Linear sRGB إلى sRGB
تُستخدم الوسيطة الثانية gamma في المرحلة الأخيرة.للاطلاع على أمثلة مرجعية للألوان في فضاء OKLCH، وكيفية توافقها مع ألوان sRGB، يُرجى مراجعة https://oklch.com/.الصياغة
colorOKLCHToSRGB(tuple [, gamma])
الوسيطات
tuple — قيمة من النوع Tuple تتألف من ثلاث قيم رقمية L وC وH، حيث تكون L ضمن النطاق [0...1]، وC >= 0، وH ضمن النطاق [0...360]. Tuple(Float64, Float64, Float64)
gamma — اختياري. الأسّ المستخدم لتحويل Linear sRGB إلى sRGB مرة أخرى، وذلك بتطبيق (x ^ (1 / gamma)) * 255 على كل قناة x. القيمة الافتراضية هي 2.2. Float64
القيمة المعادةتعيد قيمة من النوع Tuple (R, G, B) تمثل قيم ألوان sRGB. Tuple(Float64, Float64, Float64)أمثلةتحويل OKLCH إلى sRGB
أُضيف في: v26.2.0يحوّل لونًا مُرمَّزًا في فضاء الألوان sRGB إلى فضاء الألوان OKLAB المتجانس إدراكيًا.إذا كانت أي قناة إدخال خارج [0...255] أو كانت قيمة gamma غير موجبة، فإن السلوك يعتمد على التنفيذ.
OKLAB هو فضاء ألوان متجانس إدراكيًا.
إحداثياته الثلاث هي L (السطوع ضمن النطاق [0...1]) وa (Green-Red axis) وb (Blue-Yellow axis).
صُمّم OKLab ليكون متجانسًا إدراكيًا مع الحفاظ على انخفاض الكلفة الحسابية.
أُضيف في: v25.7.0يحوّل لونًا مُرمَّزًا في فضاء الألوان sRGB إلى فضاء الألوان OKLCH المتجانس إدراكيًا.إذا كانت أي قناة إدخال خارج النطاق [0...255] أو كانت قيمة gamma غير موجبة، فإن السلوك يعتمد على التنفيذ.
OKLCH هو نسخة أسطوانية من فضاء الألوان OKLab.
إحداثياته الثلاث هي L (السطوع ضمن النطاق [0...1])، وC (الكروما >= 0) وH (تدرّج اللون بالدرجات ضمن [0...360]).
صُمِّم OKLab/OKLCH ليكون متجانسًا إدراكيًا مع بقائه منخفض الكلفة حسابيًا.
يتكوّن التحويل من ثلاث مراحل:
من sRGB إلى Linear sRGB
2) من Linear sRGB إلى OKLab
3) من OKLab إلى OKLCH.
للاطلاع على مراجع الألوان في فضاء OKLCH وكيف تقابل ألوانَ sRGB، يُرجى مراجعة https://OKLCH.com/.الصياغة
أُضيفت في: v21.3.0تعيد معرّف الاتصال للعميل الذي أرسل الاستعلام الحالي.
تكون هذه الدالة مفيدة بشكل خاص في سيناريوهات تصحيح الأخطاء.
أُنشئت للتوافق مع الدالة CONNECTION_ID في MySQL.
ولا تُستخدم عادةً في استعلامات الإنتاج.البنية
connectionId()
المعاملات
لا يوجد.
القيمة المعادةيُرجِع معرّف اتصال العميل الحالي. UInt64أمثلةمثال على الاستخدام
أُضيف في: v1.1.0يُرجع اسم قاعدة البيانات الحالية.
ويفيد ذلك في معاملات محرك الجدول ضمن استعلامات CREATE TABLE عندما تحتاج إلى تحديد قاعدة البيانات.راجع أيضًا تعليمة SET.الصياغة
القيمة المُعادةتُرجع القيمة الافتراضية لاسم النوع المحدد: 0 للأرقام، وسلسلة فارغة للسلاسل النصية، أو NULL في حالة Nullable UInt8 أو String أو NULLأمثلةمثال على الاستخدام
أُضيف في: v20.1.0يعيد مقدار المساحة الحرة في نظام الملفات الذي يستضيف التخزين الدائم لقاعدة البيانات.
تكون القيمة المعادة دائمًا أقل من إجمالي المساحة الحرة (filesystemUnreserved) لأن بعض المساحة تكون محجوزة لنظام التشغيل.الصياغة
filesystemAvailable([disk_name])
الوسائط
disk_name — اختياري. اسم القرص المراد معرفة مقدار المساحة الحرة فيه. إذا لم يُحدَّد، فسيُستخدم القرص default. String أو FixedString
القيمة المعادةتعيد مقدار المساحة المتبقية المتاحة بالبايت. UInt64أمثلةمثال على الاستخدام
Query
SELECT formatReadableSize(filesystemAvailable()) AS "Available space";
قُدِّمت في: v22.12.0تعيد إجمالي المساحة الحرة على نظام الملفات الذي يستضيف التخزين الدائم لقاعدة البيانات (وكان يُسمى سابقًا filesystemFree).
انظر أيضًا filesystemAvailable.الصياغة
filesystemUnreserved([disk_name])
الوسيطات
disk_name — اختياري. اسم القرص المطلوب معرفة إجمالي المساحة الحرة فيه. إذا لم يتم تحديده، فسيُستخدم القرص الافتراضي. String أو FixedString
القيمة المعادةيعيد مقدار المساحة الحرة بالبايت. UInt64أمثلةمثال على الاستخدام
Query
SELECT formatReadableSize(filesystemUnreserved()) AS "Free space";
WITH initializeAggregation('sumState', number) AS one_row_sum_stateSELECT number, finalizeAggregation(one_row_sum_state) AS one_row_sum, runningAccumulate(one_row_sum_state) AS cumulative_sumFROM numbers(5);
أُضيفت في: v25.11.0تبدّل هذه الدالة الإحداثيين x وy في الكائنات الهندسية. تؤدي هذه العملية إلى تبديل خط العرض وخط الطول، وهو ما يفيد عند التحويل بين أنظمة إحداثيات مختلفة أو تصحيح ترتيب الإحداثيات.بالنسبة إلى Point، فهي تبدّل الإحداثيين x وy. وبالنسبة إلى الأشكال الهندسية الأكثر تعقيدًا (LineString وPolygon وMultiPolygon وRing وMultiLineString)، فإنها تطبّق هذا التحويل تكراريًا على كل زوج من الإحداثيات.تدعم الدالة كلاً من الأنواع الهندسية الفردية (Point وRing وPolygon وMultiPolygon وLineString وMultiLineString) ونوع Geometry المتغاير.الصياغة
flipCoordinates(geometry)
الوسائط
geometry — العنصر الهندسي المراد تحويله. الأنواع المدعومة: Point (Tuple(Float64, Float64))، وRing (Array(Point))، وPolygon (Array(Ring))، وMultiPolygon (Array(Polygon))، وLineString (Array(Point))، وMultiLineString (Array(LineString))، أو Geometry (نوع Variant يحتوي على أي من هذه الأنواع).
استُحدثت في: v23.10.0تعيد نسخة منسّقة من استعلام SQL المُعطى، وقد تكون متعددة الأسطر. وتُطلق استثناءً عند حدوث خطأ في التحليل.
[example:multiline]الصيغة
أُضيف في: v23.10.0مشابه لـ formatQuery()، لكن السلسلة المنسّقة المُعادة لا تحتوي على فواصل أسطر. ويُظهر خطأً عند حدوث خطأ في التحليل.
[example:multiline]الصياغة
أُضيف في: v23.11.0مثل formatQuery()، ولكن السلسلة المنسّقة المُعادة لا تحتوي على فواصل أسطر. ويُرجع NULL في حالة حدوث خطأ في التحليل.
[example:multiline]الصيغة
أُضيفت في: v22.11.0عند إعطائها حجمًا معيّنًا (عددًا من البايتات)، تُرجِع هذه الدالة حجمًا مقروءًا ومقرّبًا مع لاحقة (KB وMB وما إلى ذلك) على هيئة سلسلة نصية.العمليات العكسية لهذه الدالة هي parseReadableSize.الصياغة
أُضيفت في: v20.10.0عند إعطائها رقمًا، تُرجِع هذه الدالة رقمًا مُقرَّبًا مع لاحقة (ألف، مليون، مليار، إلخ) في صورة سلسلة نصية.تقبل هذه الدالة أي نوع رقمي كمدخل، لكنها تحوّله داخليًا إلى Float64.
قد لا تكون النتائج مثالية مع القيم الكبيرة.البنية
أُضيفت في: v1.1.0عند إعطائها حجمًا (عددًا من البايتات)، تُرجع هذه الدالة حجمًا مقروءًا ومقربًا مع لاحقة (KiB، MiB، إلخ) على هيئة سلسلة نصية.العمليات العكسية لهذه الدالة هي parseReadableSize، وparseReadableSizeOrZero، وparseReadableSizeOrNull.
تقبل هذه الدالة أي نوع رقمي كمدخل، لكنها تحوّله داخليًا إلى Float64. قد لا تكون النتائج مثالية مع القيم الكبيرة.الصيغة
أُضيفت في: v20.12.0إذا أُعطيت هذه الدالة فترةً زمنية (delta) بالثواني أو تعبيرًا من نوع INTERVAL، فإنها تُرجع فرقًا زمنيًا كسلسلة نصية بصيغة year/month/day/hour/minute/second/millisecond/microsecond/nanosecond.تقبل هذه الدالة أي نوع رقمي كمدخل، لكنها تحوّله داخليًا إلى Float64. وقد لا تكون النتائج مثالية مع القيم الكبيرة.عند تمرير تعبير من نوع INTERVAL، تُحوَّل قيمته إلى ثوانٍ. ولا تكون وحدات interval من MONTH فما فوق (MONTH, QUARTER, YEAR) مدعومة، لأنها لا تمثل فترةً ثابتة المقدار بالثواني.الصياغة
column — عمود يحتوي على فرق زمني رقمي، أو تعبير INTERVAL. وحدات INTERVAL من MONTH فما فوق غير مدعومة. Float64 أو Interval
maximum_unit — اختياري. أكبر وحدة تُعرض. القيم المقبولة: nanoseconds، microseconds، milliseconds، seconds، minutes، hours، days، months، years. القيمة الافتراضية: years. const String
minimum_unit — اختياري. أصغر وحدة تُعرض. تُحذف جميع الوحدات الأصغر. القيم المقبولة: nanoseconds، microseconds، milliseconds، seconds، minutes، hours، days، months، years. إذا كانت القيمة المحددة صراحةً أكبر من maximum_unit، فسيُطلق استثناء. القيمة الافتراضية: seconds إذا كان maximum_unit يساوي seconds أو أكبر، وإلا nanoseconds. const String
القيمة المعادةتعيد فرقًا زمنيًا على هيئة سلسلة نصية. Stringأمثلةمثال على الاستخدام
Query
SELECT arrayJoin([100, 12345, 432546534]) AS elapsed, formatReadableTimeDelta(elapsed) AS time_delta
Response
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐│ 100 │ 1 minute and 40 seconds ││ 12345 │ 3 hours, 25 minutes and 45 seconds ││ 432546534 │ 13 years, 8 months, 17 days, 7 hours, 48 minutes and 54 seconds│└────────────┴────────────────────────────────────────────────────────────────┘
مع أكبر وحدة
Query
SELECT arrayJoin([100, 12345, 432546534]) AS elapsed, formatReadableTimeDelta(elapsed, 'minutes') AS time_delta
Response
┌────elapsed─┬─time_delta─────────────────────────────────────────────────────┐│ 100 │ 1 minute and 40 seconds ││ 12345 │ 205 minutes and 45 seconds ││ 432546534 │ 7209108 minutes and 54 seconds │└────────────┴─────────────────────────────────────────────────────────────────┘
باستخدام تعبير INTERVAL
Query
SELECT formatReadableTimeDelta(INTERVAL 12345 SECOND) AS time_delta
Response
┌─time_delta─────────────────────────┐│ 3 hours, 25 minutes and 45 seconds │└────────────────────────────────────┘
أُضيفت في: v26.2.0تُحلِّل سلسلة الاستعلام المعطاة وتُطبِّق عليها طفرات عشوائية على AST (التشويش). وتُرجِع الاستعلام الناتج عن التشويش كسلسلة نصية. غير حتمي: قد يُنتِج كل استدعاء نتيجة مختلفة. وتتطلب allow_fuzz_query_functions = 1.الصيغة
number_of_columns — العدد المطلوب من الأعمدة في بنية الجدول الناتجة. إذا ضُبطت القيمة على 0 أو Null، فسيكون عدد الأعمدة عشوائيًا بين 1 و128. القيمة الافتراضية: Null. UInt64
seed — بذرة عشوائية لإنتاج نتائج ثابتة. إذا لم يتم تحديد seed أو ضُبطت قيمته على Null، فسيتم توليدها عشوائيًا. UInt64
القيمة المُعادةبنية جدول مُولَّدة عشوائيًا. Stringأمثلةمثال على الاستخدام
أُضيفت في: v25.1.0تُولِّد هذه الدالة أرقامًا تسلسلية وتُعيدها بدءًا من قيمة العداد السابقة.
تأخذ هذه الدالة وسيطًا نصيًا — معرّف السلسلة — وقيمة بدء اختيارية.
يجب تهيئة الخادم لاستخدام Keeper.
تُخزَّن السلاسل في عُقد Keeper تحت المسار، الذي يمكن تهيئته في series_keeper_path ضمن تهيئة الخادم.الصياغة
start_value — اختياري. قيمة بداية العداد. القيمة الافتراضية هي 0. ملاحظة: لا تُستخدم هذه القيمة إلا عند إنشاء سلسلة جديدة، ويجري تجاهلها إذا كانت السلسلة موجودة بالفعل UInt*
القيمة المُعادةيعيد أرقامًا متسلسلة تبدأ من قيمة العداد السابقة. UInt64أمثلةالاستدعاء الأول
أُضيف في: v24.5.0تعيد قيمة ترويسة HTTP.
إذا لم تكن هناك ترويسة بهذا الاسم، أو إذا لم يُنفَّذ الطلب الحالي عبر واجهة HTTP، فستُرجع الدالة سلسلة فارغة.
بعض ترويسات HTTP (مثل Authentication و X-ClickHouse-*) مقيّدة.
يتطلب تمكين الإعداد allow_get_client_http_headerتتطلب الدالة أن يكون الإعداد allow_get_client_http_header مُمكّنًا.
لا يكون هذا الإعداد مُمكّنًا افتراضيًا لأسباب أمنية، لأن بعض الترويسات، مثل Cookie، قد تحتوي على معلومات حساسة.
تكون ترويسات HTTP في هذه الدالة حساسة لحالة الأحرف.
إذا استُخدمت الدالة في سياق استعلام موزّع، فإنها لا تُرجع نتيجة غير فارغة إلا على العقدة المُبادِئة.البنية
أُضيف في: v20.1.0يعيد قيمة ماكرو من ملف تهيئة الخادم.
تُعرَّف وحدات الماكرو في قسم <macros> من ملف التهيئة، ويمكن استخدامها لتمييز الخوادم بأسماء مناسبة حتى لو كانت أسماء المضيفين الخاصة بها معقدة.
إذا نُفِّذت الدالة في سياق جدول موزّع، فإنها تُنشئ عمودًا عاديًا بقيم مرتبطة بكل shard.البنية
قُدِّمت في: v24.10.0تعيد القيمة الحالية لإعداد ما، أو تعيد القيمة الافتراضية المحددة في الوسيطة الثانية إذا لم يكن الإعداد معيّنًا في الملف الشخصي الحالي.البنية
قُدِّمت في: v20.5.0تأخذ وسيطة String ثابتة وتُرجع قيمة المتغير العام الذي يحمل هذا الاسم. هذه الدالة مخصّصة للتوافق مع MySQL، وليست مطلوبة أو مفيدة للتشغيل العادي لـ ClickHouse. لا يوجد سوى عدد قليل من المتغيرات العامة الوهمية المعرَّفة.البنية
أُضيفت في: v1.1.0يتحقق مما إذا كان عمود محدد موجودًا في جدول بقاعدة بيانات.
وبالنسبة إلى العناصر ضمن بنية بيانات متداخلة، تتحقق الدالة من وجود عمود.
أما بنية البيانات المتداخلة نفسها، فتعيد الدالة القيمة 0.بناء الجملة
أُضيف في: v26.5.0يحلّل سلسلة query في ClickHouse SQL ويُرجع Array من النطاقات المميّزة لاستخدامها في تمييز الصياغة.
كل نطاق عبارة عن named tuple يتضمن موضع البداية (بالبايتات)، وموضع النهاية، ونوع التمييز.
وتصف أنواع التمييز الدور النحوي للمقطع (keyword، أو identifier، أو function، وما إلى ذلك)
ويمكن استخدامها لتعيين الألوان في واجهة المستخدم. داخل أنماط السلاسل النصية لـ LIKE وREGEXP، تُميَّز المحارف الفوقية
وأحرف الإفلات كلٌّ على حدة.الصياغة
أُضيفت في: v20.5.0تعيد اسم المضيف الذي نُفِّذت عليه هذه الدالة.
إذا نُفِّذت الدالة على خادم بعيد (المعالجة الموزعة)، فسيُعاد اسم الخادم البعيد.
إذا نُفِّذت الدالة ضمن سياق جدول موزّع، فإنها تُنشئ عمودًا عاديًا بقيم تخص كل جزء.
وفي غير ذلك، فإنها تُنتج قيمة ثابتة.الصيغة
hostName()
الأسماء المستعارة: hostnameالوسائط
لا شيء.
القيمة المُعادةيعيد اسم المضيف. Stringأمثلةمثال على الاستخدام
أُضيفت في: v1.1.0تعيد هذه الدالة الوسيطة التي تمرّرها إليها، وهو ما يفيد في تصحيح الأخطاء والاختبار. كما تتيح لك تجاوز استخدام الفهرس لمعاينة أداء المسح الكامل بدلًا من ذلك. ويتجاهل محلل الاستعلام أي شيء داخل دوال identity عند البحث عن الفهارس التي سيستخدمها، كما يعطّل أيضًا طيّ الثوابت.الصياغة
أُضيف في: v1.1.0هذه الدالة مخصّصة لأغراض تصحيح الأخطاء والفحص الداخلي.
فهي تتجاهل وسيطها وتُرجع دائمًا 1.
كما أن الوسائط لا تُقيَّم.أثناء تحليل الفهرس، يُفترَض أن وسيط هذه الدالة ليس مغلّفًا داخل indexHint.
ويتيح لك ذلك تحديد البيانات ضمن نطاقات الفهرس وفقًا للشرط المقابل، ولكن من دون إجراء تصفية إضافية بناءً على هذا الشرط.
وبما أن الفهرس في ClickHouse متناثر، فإن استخدام indexHint سيؤدي إلى إرجاع بيانات أكثر من تحديد الشرط نفسه مباشرةً.
الشرح
عندما تُشغِّل:
SELECT * FROM test WHERE key = 123;
فإن ClickHouse يقوم بأمرين:
يستخدم الفهرس لتحديد الحبيبات (كتل تضم نحو 8192 صفًا) التي قد تحتوي على key = 123
يقرأ تلك الحبيبات ويصفّيها صفًا بصف لإرجاع الصفوف التي يكون فيها key = 123 فقط
لذا، حتى إذا قرأ 8,192 صفًا من القرص، فإنه لا يُرجع إلا الصف الوحيد المطابق فعليًا.أما مع indexHint، فعندما تُشغِّل:
SELECT * FROM test WHERE indexHint(key = 123);
فإن ClickHouse يقوم بأمر واحد فقط:
يستخدم الفهرس لتحديد الحبيبات التي قد تحتوي على key = 123 ويُرجع جميع الصفوف من تلك الحبيبات من دون تصفية.
فهو يُرجع الصفوف الـ 8,192 كلها، بما في ذلك الصفوف التي فيها key = 456 وkey = 789 وما إلى ذلك. (أي كل ما صادف تخزينه في الحبيبة نفسها.)
إن indexHint() ليس مخصّصًا للأداء، بل لتصحيح الأخطاء وفهم كيفية عمل فهرس ClickHouse:
ما الحبيبات التي يحدّدها الشرط الخاص بي؟
كم عدد الصفوف الموجودة في تلك الحبيبات؟
هل يُستخدم الفهرس لديّ بفاعلية؟
ملاحظة: لا يمكن تحسين أي استعلام باستخدام الدالة indexHint. فالدالة indexHint لا تحسّن الاستعلام، لأنها لا توفّر أي معلومات إضافية لتحليل الاستعلام. كما أن وضع تعبير داخل الدالة indexHint ليس أفضل بأي شكل من عدم استخدام الدالة indexHint. ولا يمكن استخدام الدالة indexHint إلا لأغراض الفحص الداخلي وتصحيح الأخطاء، وهي لا تحسّن الأداء. وإذا رأيت استخدام indexHint من أي جهة غير المساهمين في ClickHouse، فغالبًا ما يكون ذلك خطأً ويجب عليك إزالته.الصياغة
indexHint(expression)
المعاملات
expression — أي تعبير لاختيار نطاق الفهرس. Expression
القيمة المُعادةتعيد 1 في جميع الحالات. UInt8أمثلةمثال استخدام مع التصفية حسب التاريخ
Query
SELECT FlightDate AS k, count() FROM ontime WHERE indexHint(k = '2025-09-15') GROUP BY k ORDER BY k ASC;
أُضيف في: v1.1.0يُرجع معرّف الاستعلام الحالي الأصلي.
يمكن استخراج المعلمات الأخرى الخاصة بالاستعلام من الحقل initial_query_id في system.query_log.بخلاف الدالة queryID، تُرجع initialQueryID النتائج نفسها على الشظايا المختلفة.البنية
initialQueryID()
الأسماء البديلة: initial_query_idالمعاملات
لا شيء.
القيمة المُعادةتعيد معرّف الاستعلام الحالي الأوّلي. Stringأمثلةمثال على الاستخدام
Query
CREATE TABLE tmp (str String) ENGINE = Log;INSERT INTO tmp (*) VALUES ('a');SELECT count(DISTINCT t) FROM (SELECT initialQueryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
القيمة المُعادةتعيد وقت بدء الاستعلام الحالي الأوّلي. DateTimeأمثلةمثال على الاستخدام
Query
CREATE TABLE tmp (str String) ENGINE = Log;INSERT INTO tmp (*) VALUES ('a');SELECT count(DISTINCT t) FROM (SELECT initialQueryStartTime() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
أُضيفت في: v20.6.0تحسب نتيجة دالة تجميعية استنادًا إلى قيمة واحدة.
يمكن استخدام هذه الدالة لتهيئة دوال التجميع باستخدام المُركِّب -State.
يمكنك إنشاء حالات لدوال التجميع وإدراجها في أعمدة من النوع AggregateFunction، أو استخدام التجميعات المُهيّأة كقيم افتراضية.البنية
القيمة المعادةتُرجع نتيجة التجميع لكل صف يُمرَّر إلى الدالة. ويكون نوع الإرجاع مطابقًا لنوع الإرجاع الخاص بالدالة التي تأخذها initializeAggregation بوصفها الوسيط الأول. Anyأمثلةالاستخدام الأساسي مع uniqState
Query
SELECT uniqMerge(state) FROM (SELECT initializeAggregation('uniqState', number % 3) AS state FROM numbers(10000));
Response
┌─uniqMerge(state)─┐│ 3 │└──────────────────┘
استخدام sumState و finalizeAggregation
Query
SELECT finalizeAggregation(state), toTypeName(state) FROM (SELECT initializeAggregation('sumState', number % 3) AS state FROM numbers(5));
قُدِّمت في: v20.3.0تُرجع ما إذا كانت الوسيطة تعبيرًا ثابتًا.
والتعبير الثابت هو تعبير تكون نتيجته معروفة أثناء تحليل الاستعلام، أي قبل التنفيذ.
على سبيل المثال، تُعدّ التعبيرات المبنية على القيم الحرفية تعبيرات ثابتة.
تُستخدم هذه الدالة غالبًا لأغراض التطوير وتصحيح الأخطاء والتوضيح.الصيغة
استُحدثت في: v20.8.0يتحقق مما إذا كان العدد العشري يحتوي على عدد كبير جدًا من الخانات بحيث لا يمكن تمثيله بشكل صحيح ضمن نوع البيانات Decimal عند دقة محددة.البنية
precision — اختياري. دقة النوع Decimal. إذا لم يتم تحديده، تُستخدم الدقة الأصلية للوسيطة الأولى. UInt8
القيمة المُعادةتعيد 1 إذا كانت قيمة Decimal تحتوي على عدد من الخانات أكبر مما تسمح به دقتها، و0 إذا كانت قيمة Decimal تستوفي الدقة المحددة. UInt8أمثلةمثال على الاستخدام
join_storage_table_name — معرّف يحدّد مكان إجراء البحث. يُبحث عن هذا المعرّف في قاعدة البيانات الافتراضية (راجع المَعلمة default_database في ملف الإعدادات). لتجاوز قاعدة البيانات الافتراضية، استخدم الاستعلام USE database_name أو حدّد قاعدة البيانات والجدول باستخدام نقطة، مثل database_name.table_name. String
value_column — اسم عمود الجدول الذي يحتوي على البيانات المطلوبة. const String
قُدِّمت في: v20.4.0تتيح لك استخراج البيانات من جدول بالطريقة نفسها المتبعة مع القاموس.
تجلب البيانات من جداول Join باستخدام مفتاح join المحدد.
وعلى خلاف joinGet، فإنها تُرجع NULL عندما يكون المفتاح غير موجود.
لا تدعم إلا الجداول المُنشأة باستخدام تعليمةENGINE = Join(ANY, LEFT, <join_keys>).
join_storage_table_name — معرّف يحدّد مكان إجراء البحث. يُجرى البحث عن هذا المعرّف في قاعدة البيانات default (راجع المعامل default_database في ملف الإعدادات). لتجاوز قاعدة البيانات default، استخدم الاستعلام USE database_name أو حدِّد قاعدة البيانات والجدول باستخدام نقطة، مثل database_name.table_name. String
value_column — اسم العمود في الجدول الذي يحتوي على البيانات المطلوبة. const String
تمت إضافته في: v18.12.0تعيد هذه الدالة موضع قيمة في القاموس الخاص بعمود LowCardinality. تبدأ المواضع من 1. ونظرًا لأن LowCardinality يستخدم قواميس لكل جزء، فقد تُرجِع هذه الدالة مواضع مختلفة للقيمة نفسها في أجزاء مختلفة.الصياغة
القيمة المُعادةموضع القيمة في القاموس الخاص بالجزء الحالي. UInt64أمثلةأمثلة الاستخدام
Query
DROP TABLE IF EXISTS test;CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;-- create two parts:INSERT INTO test VALUES ('ab'), ('cd'), ('ab'), ('ab'), ('df');INSERT INTO test VALUES ('ef'), ('cd'), ('ab'), ('cd'), ('ef');SELECT s, lowCardinalityIndices(s) FROM test;
Response
┌─s──┬─lowCardinalityIndices(s)─┐│ ab │ 1 ││ cd │ 2 ││ ab │ 1 ││ ab │ 1 ││ df │ 3 │└────┴──────────────────────────┘┌─s──┬─lowCardinalityIndices(s)─┐│ ef │ 1 ││ cd │ 2 ││ ab │ 3 ││ cd │ 2 ││ ef │ 1 │└────┴──────────────────────────┘
أُضيف في: v18.12.0تُرجع قيم القاموس لعمود LowCardinality.
إذا كانت الكتلة أصغر من حجم القاموس أو أكبر منه، فستُقتطع النتيجة أو تُستكمل باستخدام القيم الافتراضية.
ونظرًا لأن LowCardinality تستخدم قواميس منفصلة لكل جزء، فقد تُرجع هذه الدالة قيم قاموس مختلفة في الأجزاء المختلفة.البنية
القيمة المُعادةيُرجع مفاتيح القاموس. UInt64أمثلةlowCardinalityKeys
Query
DROP TABLE IF EXISTS test;CREATE TABLE test (s LowCardinality(String)) ENGINE = Memory;-- create two parts:INSERT INTO test VALUES ('ab'), ('cd'), ('ab'), ('ab'), ('df');INSERT INTO test VALUES ('ef'), ('cd'), ('ab'), ('cd'), ('ef');SELECT s, lowCardinalityKeys(s) FROM test;
Response
┌─s──┬─lowCardinalityKeys(s)─┐│ ef │ ││ cd │ ef ││ ab │ cd ││ cd │ ab ││ ef │ │└────┴───────────────────────┘┌─s──┬─lowCardinalityKeys(s)─┐│ ab │ ││ cd │ ab ││ ab │ cd ││ ab │ df ││ df │ │└────┴───────────────────────┘
استُحدث في: v1.1.0يحوِّل قيمة ثابتة إلى عمود كامل يحتوي على قيمة واحدة.
تُمثَّل الأعمدة الكاملة والثوابت بصورة مختلفة في الذاكرة.
عادةً ما تنفِّذ الدوال شيفرة مختلفة للوسائط العادية والثابتة، رغم أن النتيجة ينبغي في الغالب أن تكون واحدة.
يمكن استخدام هذه الدالة لتصحيح هذا السلوك.الصيغة
القيمة المُعادةيعيد عمودًا كاملاً يحتوي على القيمة الثابتة. Anyأمثلةمثال على الاستخدام
Query
-- In the example below the `countMatches` function expects a constant second argument.-- This behaviour can be debugged by using the `materialize` function to turn a constant into a full column,-- verifying that the function throws an error for a non-constant argument.SELECT countMatches('foobarfoo', 'foo');SELECT countMatches('foobarfoo', materialize('foo'));
Response
2Code: 44. DB::Exception: Received from localhost:9000. DB::Exception: Illegal type of argument #2 'pattern' of function countMatches, expected constant String, got String
قُدِّمت في: v23.10.0تحسب الحد الأدنى المطلوب لحجم العينة لاختبار A/B يقارن متوسطات مقياس مستمر بين عينتين.تستخدم الصيغة الموضحة في هذه المقالة.
وتفترض تساوي حجمي مجموعتي المعالجة والمجموعة الضابطة.
وتُرجع حجم العينة المطلوب لمجموعة واحدة (أي إن حجم العينة المطلوب للتجربة بأكملها يساوي ضعف القيمة المُرجعة).
كما تفترض أيضًا تساوي تباين مقياس الاختبار في مجموعتي المعالجة والمجموعة الضابطة.الصيغة
baseline — القيمة المرجعية لمقياس. (U)Int* أو Float*
sigma — الانحراف المعياري المرجعي لمقياس. (U)Int* أو Float*
mde — الحد الأدنى للأثر القابل للاكتشاف (MDE) كنسبة مئوية من القيمة المرجعية (على سبيل المثال، إذا كانت القيمة المرجعية 112.25، فإن قيمة MDE البالغة 0.03 تعني تغيرًا متوقعًا إلى 112.25 ± 112.25*0.03). (U)Int* أو Float*
power — القدرة الإحصائية المطلوبة للاختبار (1 - احتمال الخطأ من النوع الثاني). (U)Int* أو Float*
alpha — مستوى الدلالة المطلوب للاختبار (احتمال الخطأ من النوع الأول). (U)Int* أو Float*
القيمة المُعادةتعيد Tuple مُسمّاة تحتوي على 3 عناصر: minimum_sample_size و detect_range_lower و detect_range_upper. وتمثل هذه العناصر، على الترتيب: حجم العينة المطلوب، والحد الأدنى لنطاق القيم التي لا يمكن اكتشافها باستخدام حجم العينة المطلوب المُعاد، ويُحسب على النحو baseline * (1 - mde)، والحد الأعلى لنطاق القيم التي لا يمكن اكتشافها باستخدام حجم العينة المطلوب المُعاد، ويُحسب على النحو baseline * (1 + mde) (Float64). Tuple(Float64, Float64, Float64)أمثلةminSampleSizeContinuous
Query
SELECT minSampleSizeContinuous(112.25, 21.1, 0.03, 0.80, 0.05) AS sample_size
أُضيف في: v22.6.0يحسب الحد الأدنى المطلوب لحجم العينة لاختبار A/B يقارن معدلات التحويل (النِّسب) بين عينتين.يستخدم الصيغة الموضحة في هذه المقالة. ويفترض تساوي حجمَي مجموعتي المعالجة والضبط. ويُرجع حجم العينة المطلوب لمجموعة واحدة (أي إن حجم العينة المطلوب للتجربة بأكملها يساوي ضعف القيمة المُعادة).الصيغة
mde — الحد الأدنى للأثر القابل للاكتشاف (MDE) بالنقاط المئوية (على سبيل المثال، إذا كان معدل التحويل الأساسي 0.25، فإن قيمة MDE البالغة 0.03 تعني تغيرًا متوقعًا إلى 0.25 ± 0.03). Float*
power — القدرة الإحصائية المطلوبة للاختبار (1 - احتمال خطأ من النوع الثاني). Float*
alpha — مستوى الدلالة المطلوب للاختبار (احتمال خطأ من النوع الأول). Float*
القيمة المعادةتعيد قيمة Tuple مُسمّاة تتكون من 3 عناصر: minimum_sample_size وdetect_range_lower وdetect_range_upper. وتمثل هذه العناصر، على الترتيب: حجم العينة المطلوب، والحد الأدنى لنطاق القيم غير القابلة للاكتشاف باستخدام حجم العينة المطلوب المُعاد، ويُحسب على أنه baseline - mde، والحد الأعلى لنطاق القيم غير القابلة للاكتشاف باستخدام حجم العينة المطلوب المُعاد، ويُحسب على أنه baseline + mde. Tuple(Float64, Float64, Float64)أمثلةminSampleSizeConversion
Query
SELECT minSampleSizeConversion(0.25, 0.03, 0.80, 0.05) AS sample_size
أُضيفت في: v20.1.0تُرجع قيمة من عمود عند إزاحة محددة من الصف الحالي.
هذه الدالة مُهملة ومعرّضة للأخطاء لأنها تعمل على الترتيب الفيزيائي لكتل البيانات، الذي قد لا يتوافق مع الترتيب المنطقي الذي يتوقعه المستخدمون.
يُنصح باستخدام دوال النافذة المناسبة بدلًا من ذلك.يمكن تمكين هذه الدالة عن طريق تعيين allow_deprecated_error_prone_window_functions = 1.البنية
أُضيفت في: v20.8.0تستبدل القيم الحرفية، وتسلسلات القيم الحرفية، والأسماء المستعارة المعقدة (التي تحتوي على فراغات، أو أكثر من رقمين، أو يبلغ طولها 36 بايتًا على الأقل مثل UUIDs) بالرمز النائب ?.البنية
قُدِّمت في: v21.2.0تستبدل القيم الحرفية وسلاسل القيم الحرفية بالعنصر النائب ?، لكنها لا تستبدل الأسماء المستعارة المعقّدة (التي تحتوي على مسافات بيضاء، أو أكثر من رقمين، أو التي يبلغ طولها 36 بايتًا على الأقل، مثل UUIDs).
يساعد ذلك على تحليل سجلات الاستعلام المعقّدة بشكل أفضل.الصيغة
القيمة المعادةتعيد سلسلة الأحرف المحددة مع العناصر النائبة. Stringأمثلةمثال على الاستخدام
Query
SELECT normalizeQuery('SELECT 1 AS aComplexName123'), normalizeQueryKeepNames('SELECT 1 AS aComplexName123')
Response
┌─normalizeQuery('SELECT 1 AS aComplexName123')─┬─normalizeQueryKeepNames('SELECT 1 AS aComplexName123')─┐│ SELECT ? AS `?` │ SELECT ? AS aComplexName123 │└───────────────────────────────────────────────┴────────────────────────────────────────────────────────┘
قُدِّمت في: v20.8.0تعيد قيم hash متطابقة بطول 64 بت، من دون قيم القيم الحرفية، للاستعلامات المتشابهة.
يمكن أن يكون ذلك مفيدًا في تحليل سجلات الاستعلامات.الصيغة
أُضيفت في: v21.2.0على غرار normalizedQueryHash، تُرجِع هذه الدالة قيم hash متطابقة بطول 64 بت للاستعلامات المتشابهة من دون قيم القيم الحرفية، لكنها لا تستبدل الأسماء المستعارة المعقدة (التي تحتوي على مسافات، أو أكثر من رقمين، أو التي يبلغ طولها 36 بايتًا على الأقل مثل UUIDs) بعنصر نائب قبل إجراء hash.
وقد يكون ذلك مفيدًا في تحليل سجلات الاستعلامات.البنية
القيمة المعادةيعيد قيمة تجزئة بطول 64 بت. UInt64أمثلةمثال على الاستخدام
Query
SELECT normalizedQueryHash('SELECT 1 AS `xyz123`') != normalizedQueryHash('SELECT 1 AS `abc123`') AS normalizedQueryHash;SELECT normalizedQueryHashKeepNames('SELECT 1 AS `xyz123`') != normalizedQueryHashKeepNames('SELECT 1 AS `abc123`') AS normalizedQueryHashKeepNames;
أُضيف في: v26.4.0يُموّه استعلام SQL عبر استبدال المعرّفات بكلمات عشوائية والقيم الحرفية بقيم عشوائية، مع الحفاظ على بنية الاستعلام.تكون هذه الدالة مفيدة لإخفاء هوية الاستعلامات قبل تسجيلها أو مشاركتها لأغراض تصحيح الأخطاء.
وستنتج الصفوف المختلفة نتائج تمويه مختلفة حتى مع استعلام الإدخال نفسه، مما يساعد
في الحفاظ على الخصوصية عند العمل مع عدة استعلامات.تمنع المعلَمة الاختيارية tag إزالة التعبيرات الفرعية المشتركة عندما يُستخدم استدعاء الدالة نفسه
عدة مرات في استعلام. ويضمن ذلك أن ينتج كل استدعاء نتيجة تمويه مختلفة.الميزات:
يستبدل أسماء الجداول وأسماء الأعمدة والأسماء المستعارة بكلمات عشوائية
أُضيف في: v26.4.0يُموّه استعلام SQL باستخدام قيمة seed محددة للحصول على نتائج حتمية.بخلاف obfuscateQuery(), تُنتج هذه الدالة نتائج حتمية عند تزويدها بالقيمة نفسها من seed.
ويكون ذلك مفيدًا عندما تحتاج إلى تمويه متسق عبر عمليات تشغيل متعددة، أو عندما تريد
إعادة إنتاج الاستعلام المُموَّه نفسه لأغراض الاختبار أو تصحيح الأخطاء.الميزات:
تمويه حتمي استنادًا إلى قيمة seed المقدمة
تؤدي قيمة seed نفسها دائمًا إلى النتيجة المُموَّهة نفسها
أُضيفت في: v24.6.0إذا أُعطيت هذه الدالة سلسلة نصية تحتوي على حجم بالبايت مع وحدة مثل B أو KiB أو KB أو MiB أو MB وما إلى ذلك (أي ISO/IEC 80000-13 أو وحدة بايت عشرية)، فستُرجع عدد البايتات المقابل.
إذا تعذّر على الدالة تحليل قيمة الإدخال، فإنها تُطلق استثناءً.العمليات العكسية لهذه الدالة هي formatReadableSize وformatReadableDecimalSize.البنية
parseReadableSize(x)
الوسائط
x — حجم بصيغة مقروءة مع وحدة ISO/IEC 80000-13 أو وحدة بايت عشرية. String
القيمة المُعادةيعيد عدد البايتات، مُقرَّبًا للأعلى إلى أقرب عدد صحيح. UInt64أمثلةمثال على الاستخدام
Query
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB']) AS readable_sizes, parseReadableSize(readable_sizes) AS sizes;
أُضيف في: v24.6.0إذا أُعطيت هذه الدالة سلسلة نصية تتضمن حجم بايت ووحدة مثل B أو KiB أو KB أو MiB أو MB وما إلى ذلك (أي ISO/IEC 80000-13 أو وحدة بايت عشرية)، فإنها تُرجع عدد البايتات المقابل.
إذا تعذّر على الدالة تحليل قيمة الإدخال، فإنها تُرجع NULL.العمليات العكسية لهذه الدالة هي formatReadableSize وformatReadableDecimalSize.الصياغة
parseReadableSizeOrNull(x)
الوسائط
x — حجم بصيغة مقروءة باستخدام ISO/IEC 80000-13 أو وحدة بايت عشرية. String
القيمة المعادةيُرجع عدد البايتات، مُقرَّبًا للأعلى إلى أقرب عدد صحيح، أو NULL إذا تعذّر تحليل الإدخال Nullable(UInt64)أمثلةمثال على الاستخدام
Query
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrNull(readable_sizes) AS sizes;
أُضيفت في: v24.6.0إذا كانت لديك سلسلة نصية تحتوي على حجم بالبايت ووحدة مثل B أو KiB أو KB أو MiB أو MB وما إلى ذلك (أي ISO/IEC 80000-13 أو وحدة البايت العشرية)، فستُرجع هذه الدالة عدد البايتات المقابل.
إذا تعذّر على الدالة تحليل قيمة الإدخال، فستُرجع 0.العمليتان العكسيتان لهذه الدالة هما formatReadableSize وformatReadableDecimalSize.الصياغة
parseReadableSizeOrZero(x)
الوسيطات
x — حجم بصيغة مقروءة وفق ISO/IEC 80000-13 أو بوحدة بايت عشرية. String
القيمة المُعادةيعيد عدد البايتات، مُقرَّبًا إلى الأعلى لأقرب عدد صحيح، أو 0 إذا تعذّر تحليل المُدخل. UInt64أمثلةمثال على الاستخدام
Query
SELECT arrayJoin(['1 B', '1 KiB', '3 MB', '5.314 KiB', 'invalid']) AS readable_sizes, parseReadableSizeOrZero(readable_sizes) AS sizes;
هذه الدالة بطيئة، ويجب عدم استدعائها لأعداد كبيرة من الصفوف.
الصيغة
partitionId(column1[, column2, ...])
الأسماء المستعارة: partitionIDالوسيطات
column1, column2, ... — العمود الذي سيُعاد معرّف القسم الخاص به.
القيمة المُعادةيُعيد معرّف القسم الذي ينتمي إليه الصف. Stringأمثلةمثال على الاستخدام
Query
DROP TABLE IF EXISTS tab;CREATE TABLE tab( i int, j int)ENGINE = MergeTreePARTITION BY iORDER BY tuple();INSERT INTO tab VALUES (1, 1), (1, 2), (1, 3), (2, 4), (2, 5), (2, 6);SELECT i, j, partitionId(i), _partition_id FROM tab ORDER BY i, j;
قُدِّمت في: v21.9.0يُرجع معرّف الاستعلام الحالي.
يمكن استخراج المعلمات الأخرى للاستعلام من الحقل query_id في الجدول system.query_log.بخلاف الدالة initialQueryID، قد تُرجع queryID نتائج مختلفة على المقاطع المختلفة.البنية
queryID()
الأسماء المستعارة: query_idالمعاملات
لا شيء.
القيمة المُعادةيُرجع معرّف الاستعلام الحالي. Stringأمثلةمثال على الاستخدام
Query
CREATE TABLE tmp (str String) ENGINE = Log;INSERT INTO tmp (*) VALUES ('a');SELECT count(DISTINCT t) FROM (SELECT queryID() AS t FROM remote('127.0.0.{1..3}', currentDatabase(), 'tmp') GROUP BY queryID());
أُضيفت في: v1.1.0تُراكم حالات دالة تجميع لكل صف ضمن كتلة بيانات.
مهملةيُعاد تعيين الحالة مع كل كتلة بيانات جديدة.
ونظرًا إلى هذا السلوك المعرّض للأخطاء، فقد أُهمِلت هذه الدالة، ويُنصح باستخدام دوال النوافذ بدلًا منها.
يمكنك استخدام الإعداد allow_deprecated_error_prone_window_functions للسماح باستخدام هذه الدالة.
grouping — اختياري. مفتاح التجميع. تُعاد تهيئة حالة الدالة إذا تغيّرت قيمة grouping. ويمكن أن يكون من أيٍّ من أنواع البيانات المدعومة التي يكون فيها عامل المساواة معرّفًا. Any
القيمة المُعادةتعيد النتيجة المتراكمة لكل صف. Anyأمثلةمثال على الاستخدام مع initializeAggregation
Query
WITH initializeAggregation('sumState', number) AS one_row_sum_stateSELECT number, finalizeAggregation(one_row_sum_state) AS one_row_sum, runningAccumulate(one_row_sum_state) AS cumulative_sumFROM numbers(5);
استُحدث في: v21.3.0يحسب عدد الأحداث المتزامنة.
لكل حدث وقت بداية ووقت نهاية.
يُحتسب وقت البداية ضمن الحدث، بينما لا يُحتسب وقت النهاية.
يجب أن تكون الأعمدة التي تتضمن وقت بداية ووقت نهاية من نوع البيانات نفسه.
تحسب الدالة العدد الإجمالي للأحداث النشطة (المتزامنة) لكل وقت بداية حدث.
المتطلباتيجب ترتيب الأحداث حسب وقت البداية ترتيبًا تصاعديًا.
إذا لم يُستوفَ هذا الشرط، فستُطلق الدالة استثناءً.
تُعالَج كل كتلة بيانات على حدة.
إذا تداخلت أحداث من كتل بيانات مختلفة، فلن تتم معالجتها على نحو صحيح.
قُدِّمت في: v1.1.0تحسب الفرق بين قيمتَي صفّين متتاليين داخل كتلة البيانات.
وتُرجِع 0 للصف الأول، أما الصفوف اللاحقة فتُرجِع الفرق مقارنةً بالصف السابق.
مهملةلا تُرجِع الفروق إلا داخل كتلة البيانات التي تُعالَج حاليًا.
وبسبب هذا السلوك المعرّض للأخطاء، أُهمِلت هذه الدالة.
يُنصَح باستخدام window functions بدلًا منها.يمكنك استخدام الإعداد allow_deprecated_error_prone_window_functions للسماح باستخدام هذه الدالة.
تعتمد نتيجة الدالة على كتل البيانات المعنية وترتيب البيانات داخل الكتلة.
وقد يختلف ترتيب الصفوف أثناء حساب runningDifference() عن ترتيب الصفوف المُعادة إلى المستخدم.
ولتجنّب ذلك، يمكنك إنشاء استعلام فرعي باستخدام ORDER BY ثم استدعاء الدالة من خارج هذا الاستعلام الفرعي.
يرجى ملاحظة أن حجم الكتلة يؤثر في النتيجة.
تُعاد تهيئة الحالة الداخلية للدالة runningDifference مع كل كتلة جديدة.الصياغة
القيمة المُعادةيعيد الفرق بين كل قيمتين متتاليتين، وتكون القيمة 0 في الصف الأول.أمثلةمثال على الاستخدام
Query
SELECT EventID, EventTime, runningDifference(EventTime) AS deltaFROM( SELECT EventID, EventTime FROM events WHERE EventDate = '2025-11-24' ORDER BY EventTime ASC LIMIT 5);
أُضيفت في: v1.1.0تحسب الفرق بين قيم الصفوف المتتالية في كتلة بيانات، ولكن بخلاف runningDifference، فإنها تُرجع القيمة الفعلية للصف الأول بدلًا من 0.
مهملةتُرجع الفروق فقط داخل كتلة البيانات الجاري معالجتها حاليًا.
ونظرًا لأن هذا السلوك قد يؤدي إلى أخطاء، فقد أُهملت هذه الدالة.
يُنصح باستخدام دوال النافذة بدلًا من ذلك.يمكنك استخدام الإعداد allow_deprecated_error_prone_window_functions للسماح باستخدام هذه الدالة.
أُضيف في: v20.1.0يعيد معرّف UUID (v4) عشوائيًا وفريدًا يُولَّد عند بدء تشغيل الخادم لأول مرة.
ويُحفَظ هذا المعرّف، أي إن تشغيل الخادم للمرة الثانية أو الثالثة أو ما بعدها يعيد معرّف UUID نفسه.الصيغة
serverUUID()
الوسائط
لا توجد.
القيمة المُعادةيُرجع معرّف UUID عشوائيًا للخادم. UUIDأمثلةمثال على الاستخدام
استُحدث في: v21.9.0يعيد العدد الإجمالي للشظايا في الاستعلام الموزع.
إذا لم يكن الاستعلام موزعًا، فستُعاد القيمة الثابتة 0.البنية
shardCount()
الوسائط
لا شيء.
القيمة المُعادةيُرجع العدد الإجمالي للشظايا أو 0. UInt32أمثلةمثال على الاستخدام
Query
-- See shardNum() example above which also demonstrates shardCount()CREATE TABLE shard_count_example (dummy UInt8)ENGINE=Distributed(test_cluster_two_shards_localhost, system, one, dummy);SELECT shardCount() FROM shard_count_example;
تم تقديمه في: v21.9.0يعيد فهرس الشظية التي تعالج جزءًا من البيانات في استعلام موزّع.
تبدأ الفهارس من 1.
إذا لم يكن الاستعلام موزّعًا، فستُعاد قيمة ثابتة هي 0.البنية
shardNum()
المعاملات
لا يوجد.
القيمة المُعادةتعيد فهرس الجزء أو القيمة الثابتة 0. UInt32أمثلةمثال على الاستخدام
أُضيف في: v22.6.0يعرض معلومات عن شهادة SSL الخاصة بالخادم الحالي إذا كانت مُهيّأة.
راجع إعداد TLS لمزيد من المعلومات حول كيفية إعداد ClickHouse لاستخدام شهادات OpenSSL للتحقق من الاتصالات.الصيغة
showCertificate()
المعاملات
لا شيء.
القيمة المُعادةتعيد خريطةً من أزواج المفتاح والقيمة المرتبطة بشهادة SSL المُعدّة. Map(String, String)أمثلةمثال على الاستخدام
قُدِّمت في: v1.1.0توقف تنفيذ الاستعلام مؤقتًا لمدة عدد الثواني المحدد.
تُستخدم هذه الدالة أساسًا لأغراض الاختبار واستكشاف الأخطاء وإصلاحها.بوجه عام، لا ينبغي استخدام الدالة sleep() في بيئات production، لأنها قد تؤثر سلبًا في أداء الاستعلام واستجابة النظام.
ومع ذلك، قد تكون مفيدة في السيناريوهات التالية:
الاختبار: عند اختبار ClickHouse أو إجراء benchmarking له، قد ترغب في محاكاة حالات تأخير أو إدخال توقفات مؤقتة لملاحظة كيفية تصرف النظام في ظروف معينة.
استكشاف الأخطاء وإصلاحها: إذا كنت بحاجة إلى فحص حالة النظام أو تنفيذ استعلام عند نقطة زمنية محددة، فيمكنك استخدام sleep() لإدخال توقف مؤقت، مما يتيح لك فحص المعلومات ذات الصلة أو جمعها.
المحاكاة: في بعض الحالات، قد ترغب في محاكاة سيناريوهات واقعية تحدث فيها حالات تأخير أو توقفات مؤقتة، مثل كمون الشبكة أو اعتماديات الأنظمة الخارجية.
من المهم استخدام الدالة sleep() بحذر وعند الضرورة فقط، لأنها قد تؤثر في الأداء العام واستجابة نظام ClickHouse لديك.
لأسباب أمنية، لا يمكن تنفيذ هذه الدالة إلا ضمن ملف تعريف المستخدم default (مع تفعيل allow_sleep).الصيغة
sleep(seconds)
الوسائط
seconds — عدد الثواني المطلوب إيقاف تنفيذ الاستعلام مؤقتًا خلالها، بحد أقصى 3 ثوانٍ. ويمكن أن تكون قيمة ذات فاصلة عائمة لتحديد أجزاء من الثانية. const UInt* أو const Float*
القيمة المعادةيعيد 0. UInt8أمثلةمثال على الاستخدام
Query
-- This query will pause for 2 seconds before completing.-- During this time, no results will be returned, and the query will appear to be hanging or unresponsive.SELECT sleep(2);
Response
┌─sleep(2)─┐│ 0 │└──────────┘1 row in set. Elapsed: 2.012 sec.
أُضيفت في: v1.1.0توقف تنفيذ الاستعلام لعدد محدد من الثواني لكل صف في مجموعة النتائج.تُستخدم الدالة sleepEachRow() بشكل أساسي لأغراض الاختبار وتصحيح الأخطاء، على غرار الدالة sleep().
وتتيح لك محاكاة حالات التأخير أو إدخال توقفات مؤقتة أثناء معالجة كل صف، مما قد يكون مفيدًا في سيناريوهات مثل:
الاختبار: عند اختبار أداء ClickHouse أو إجراء اختبارات قياس الأداء له في ظل ظروف محددة، يمكنك استخدام sleepEachRow() لمحاكاة حالات التأخير أو إدخال توقفات مؤقتة لكل صف تتم معالجته.
تصحيح الأخطاء: إذا كنت بحاجة إلى فحص حالة النظام أو تنفيذ الاستعلام لكل صف تتم معالجته، فيمكنك استخدام sleepEachRow() لإدخال توقفات مؤقتة، مما يتيح لك فحص المعلومات ذات الصلة أو جمعها.
المحاكاة: في بعض الحالات، قد ترغب في محاكاة سيناريوهات واقعية تحدث فيها حالات تأخير أو توقفات مؤقتة لكل صف تتم معالجته، مثل عند التعامل مع أنظمة خارجية أو أزمنة استجابة الشبكة.
مثل الدالة sleep()، من المهم استخدام sleepEachRow() بحذر وعند الضرورة فقط، لأنه قد يؤثر بشكل كبير في الأداء العام وسرعة استجابة نظام ClickHouse، خاصة عند التعامل مع مجموعات نتائج كبيرة.
الصياغة
sleepEachRow(seconds)
الوسائط
seconds — عدد الثواني التي يُوقَف فيها تنفيذ الاستعلام مؤقتًا لكل صف في مجموعة النتائج، بحد أقصى 3 ثوانٍ. ويمكن أن تكون قيمة فاصلة عائمة لتحديد أجزاء من الثانية. const UInt* أو const Float*
القيمة المُعادةيعيد 0 لكل صف. UInt8أمثلةمثال على الاستخدام
Query
-- The output will be delayed, with a 0.5-second pause between each row.SELECT number, sleepEachRow(0.5) FROM system.numbers LIMIT 5;
أُضيفت في: v23.8.0تحوّل بنية جدول ClickHouse إلى مخطط بتنسيق Protobuf.تأخذ هذه الدالة تعريف بنية جدول ClickHouse وتحوله إلى تعريف مخطط Protocol Buffers (Protobuf)
بصياغة proto3. وهذا مفيد لإنشاء مخططات Protobuf تتوافق مع
بُنى جداول ClickHouse لتبادل البيانات.الصيغة
أُضيفت في: v20.12.0تعيد رقم منفذ TCP الخاص بـ الواجهة الأصلية الذي يستمع عليه الخادم.
إذا نُفِّذت في سياق جدول موزّع، فستُنشئ هذه الدالة عمودًا عاديًا بقيم مرتبطة بكل جزء.
وإلا، فإنها تُنتج قيمة ثابتة.الصيغة
tcpPort()
المعاملات
لا توجد.
القيمة المُعادةيُرجع رقم منفذ TCP. UInt16أمثلةمثال على الاستخدام
قُدِّمت في: v1.1.0يطرح استثناءً إذا كانت الوسيطة x تساوي true.
لاستخدام الوسيطة error_code، يجب تمكين معلمة الإعداد allow_custom_error_code_in_throw.الصيغة
القيمة المُعادةيعيد 0 إذا كان الشرط false، ويُطلق استثناءً إذا كان الشرط true. UInt8أمثلةمثال على الاستخدام
Query
SELECT throwIf(number = 3, 'Too many') FROM numbers(10);
Response
↙ Progress: 0.00 rows, 0.00 B (0.00 rows/s., 0.00 B/s.) Received exception from server (version 19.14.1):Code: 395. DB::Exception: Received from localhost:9000. DB::Exception: Too many.
أُضيف في: v1.1.0يعيد الاسم الداخلي لنوع بيانات القيمة المحددة.
وعلى خلاف الدالة toTypeName، قد يشمل نوع البيانات المُعاد أعمدة مُغلِّفة داخلية مثل Const وLowCardinality.البنية
toColumnTypeName(value)
المعاملات
value — القيمة التي يُراد إرجاع نوع البيانات الداخلي الخاص بها. Any
القيمة المُعادةيُرجع نوع البيانات الداخلي المستخدم لتمثيل القيمة. Stringأمثلةمثال على الاستخدام
Query
SELECT toColumnTypeName(CAST('2025-01-01 01:02:03' AS DateTime));
قُدِّم في: v1.1.0يعيد اسم النوع للوسيطة المُمرَّرة.
إذا تم تمرير NULL، فستُعيد الدالة النوع Nullable(Nothing)، وهو ما يقابل التمثيل الداخلي للقيمة NULL في ClickHouse.البنية
استُحدث في: v26.5.0يُجزِّئ سلسلة استعلام ClickHouse SQL إلى رموز ويُعيد مصفوفة من الرموز.
كل رمز عبارة عن named tuple يتضمن موضع البداية (بالبايت)، وموضع النهاية، ونوع الرمز.البنية
قُدِّمت في: v1.1.0تحوِّل قيمةً وفق تعيين مُعرَّف صراحةً لبعض العناصر إلى عناصر أخرى.لهذه الدالة صيغتان:
transform(x, array_from, array_to, default) - تحوِّل x باستخدام مصفوفتَي تعيين مع قيمة default للعناصر غير المتطابقة
transform(x, array_from, array_to) - التحويل نفسه، لكنها تعيد x الأصلي إذا لم يُعثر على أي تطابق
تبحث الدالة عن x في array_from وتعيد العنصر المقابل من array_to عند الفهرس نفسه.
إذا لم يُعثر على x في array_from، فإنها تعيد إما قيمة default (في نسخة المعاملات الأربعة) أو x الأصلي (في نسخة المعاملات الثلاثة).
إذا وُجدت عدة عناصر متطابقة في array_from، فإنها تعيد العنصر المقابل لأول تطابق.المتطلبات:
يجب أن يحتوي array_from وarray_to على العدد نفسه من العناصر
لنسخة المعاملات الأربعة: transform(T, Array(T), Array(U), U) -> U حيث يمكن أن يكون T وU نوعين مختلفين لكن متوافقين
لنسخة المعاملات الثلاثة: transform(T, Array(T), Array(T)) -> T حيث يجب أن تكون جميع الأنواع متماثلة
default — اختياري. القيمة التي تُعاد إذا لم يتم العثور على x في array_from. إذا لم يتم تحديده، فستُعاد x كما هي. (U)Int* أو Decimal أو Float* أو String أو Date أو DateTime
القيمة المُعادةتُعيد القيمة المناظرة من array_to إذا كانت x تطابق عنصرًا في array_from، وإلا فتُعيد default (إذا تم تحديده) أو x (إذا لم يتم تحديد default). Anyأمثلةtransform(T, Array(T), Array(U), U) -> U
Query
SELECTtransform(SearchEngineID, [2, 3], ['Yandex', 'Google'], 'Other') AS title,count() AS cFROM test.hitsWHERE SearchEngineID != 0GROUP BY titleORDER BY c DESC
Response
┌─title─────┬──────c─┐│ Yandex │ 498635 ││ Google │ 229872 ││ Other │ 104472 │└───────────┴────────┘
transform(T, Array(T), Array(T)) -> T
Query
SELECTtransform(domain(Referer), ['yandex.ru', 'google.ru', 'vkontakte.ru'], ['www.yandex', 'example.com', 'vk.com']) AS s, count() AS cFROM test.hitsGROUP BY domain(Referer)ORDER BY count() DESCLIMIT 10
القيمة المُعادةكائن uniqThetaSketch جديد يحتوي على ناتج التقاطع. UInt64أمثلةمثال على الاستخدام
Query
SELECT finalizeAggregation(uniqThetaIntersect(a, b)) AS a_intersect_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinalityFROM(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
قُدِّم في: v22.9.0كائنان من نوع uniqThetaSketch لإجراء العملية الحسابية a_not_b (عملية على المجموعات ×)، وتكون النتيجة كائن uniqThetaSketch جديدًا.الصيغة
القيمة المُعادةيعيد كائن uniqThetaSketch جديدًا يحتوي على نتيجة a_not_b. UInt64أمثلةمثال للاستخدام
Query
SELECT finalizeAggregation(uniqThetaNot(a, b)) AS a_not_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinalityFROM(SELECT arrayReduce('uniqThetaState', [2, 3, 4]) AS a, arrayReduce('uniqThetaState', [1, 2]) AS b);
القيمة المعادةيُرجع كائن uniqThetaSketch جديدًا يحتوي على نتيجة الاتحاد. UInt64أمثلةمثال على الاستخدام
Query
SELECT finalizeAggregation(uniqThetaUnion(a, b)) AS a_union_b, finalizeAggregation(a) AS a_cardinality, finalizeAggregation(b) AS b_cardinalityFROM(SELECT arrayReduce('uniqThetaState', [1, 2]) AS a, arrayReduce('uniqThetaState', [2, 3, 4]) AS b);
أُضيف في: v1.1.0يعيد مدة تشغيل الخادم بالثواني.
إذا نُفِّذت هذه الدالة في سياق جدول موزّع، فإنها تُنشئ عمودًا عاديًا بقيم مرتبطة بكل جزء.
أما خلاف ذلك، فتنتج قيمة ثابتة.الصيغة
uptime()
الوسائط
لا يوجد.
القيمة المُعادةيُرجع مدة تشغيل الخادم بالثواني. UInt32أمثلةمثال على الاستخدام
القيمة المُعادةيُرجع عمودًا من نوع Enum يحتوي على اسم نوع Variant لكل صف. Enumأمثلةمثال على الاستخدام
Query
CREATE TABLE test (v Variant(UInt64, String, Array(UInt64))) ENGINE = Memory;INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);SELECT variantType(v) FROM test;
أُضيف في الإصدار: v1.1.0تعيد الإصدار الحالي من ClickHouse كسلسلة نصية بالصيغة: major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release.
إذا نُفِّذت في سياق جدول موزّع، فستُنشئ هذه الدالة عمودًا عاديًا بقيم خاصة بكل جزء.
وبخلاف ذلك، فإنها تُنتج قيمة ثابتة.الصياغة
version()
المعاملات
لا شيء.
القيمة المُعادةيُرجع الإصدار الحالي من ClickHouse. Stringأمثلةمثال للاستخدام
ظهر لأول مرة في: v1.1.0يحسب العرض التقريبي عند إخراج القيم إلى الطرفية بتنسيق نصي (مفصول بعلامات الجدولة).
تُستخدم هذه الدالة من قِبل النظام لتنفيذ تنسيقات Pretty.
تُمثَّل NULL كسلسلة نصية تقابل NULL في تنسيقات Pretty.الصيغة