Skip to main content
بالإضافة إلى SQL القياسية، يدعم ClickHouse عدة لغات استعلام بديلة للاستعلام عن البيانات. اللهجات المدعومة حاليًا هي: تُحدَّد لغة الاستعلام المستخدمة عبر الإعداد dialect.

SQL القياسية

تُعد SQL القياسية لغة الاستعلام الافتراضية في ClickHouse.

Pipelined Relational Query Language (PRQL)

لتمكين PRQL:
مثال لاستعلام PRQL:
في الخلفية، يستخدم ClickHouse الترجمة التحويلية من PRQL إلى SQL لتشغيل استعلامات PRQL.

Kusto Query Language (KQL)

لتمكين KQL:
Query
Response
لاحظ أن استعلامات KQL قد لا تتمكن من الوصول إلى جميع الدوال المعرَّفة في ClickHouse.

Trino SQL

لتفعيل لهجة Trino:
تُترجَم الصيغة الخاصة بـ Trino إلى ClickHouse SQL، وتُربَط أسماء دوال Trino بما يكافئها في ClickHouse:
Query
Response
تشمل الترجمة، من بين أمور أخرى، القيم الحرفية ARRAY[...]، وTRY_CAST، وUNNEST (تُترجم إلى ARRAY JOIN)، ومُنشئات وأنواع ROW، وجداول VALUES، وOFFSET قبل LIMIT، وBETWEEN SYMMETRIC، وعدة مئات من الدوال، بما فيها تلك التي ترد أسماؤها في كلا النظامين بدلالات مختلفة (على سبيل المثال، الدالة length في Trino تَعُدّ نقاط ترميز Unicode وتُترجم إلى lengthUTF8). أما دوال ClickHouse التي لا تتعارض أسماؤها مع أسماء Trino فتبقى متاحة، ما يتيح مزج عائلتي الدوال معًا في استعلام واحد. تُربط قيم JSON في Trino بنوع JSON في ClickHouse: فتتحول القيم الحرفية JSON '...' وjson_parse إلى تحويلات (casts) إلى JSON، وتتحول json_format إلى toJSONString، وتُترجم دوال المسار (json_extract, json_extract_scalar, json_value, json_query, json_exists, json_size) إلى نظائرها في ClickHouse. وبما أن نوع JSON في ClickHouse يخزّن كائنات، فإن المستندات غير الكائنية (المصفوفات والقيم القياسية على المستوى الأعلى) تُرفض عند تجسيدها كقيم JSON؛ أما دوال المسار فتقبل أي نص JSON. بعض دلالات Trino لا يمكن التعبير عنها في نص الاستعلام المترجَم، لذا تُطبَّق على سياق الاستعلام بدلاً من ذلك: فعمليات الربط الخارجية تُنتج NULL (join_use_nulls)، وعمليات المجموعات تستخدم النوع الأعلى العددي بدلاً من Variant (use_variant_as_common_type)، ويُشترط تفعيل مُحلِّل الاستعلامات (enable_analyzer). ومع ذلك، تظل الأسبقية لعبارة SETTINGS الصريحة في الاستعلام على هذه الإعدادات. أما الدلالات التي لا يمكن معالجتها بالترجمة على مستوى الاستعلام فتبقى كما هي في ClickHouse. وأبرزها أن معامل القسمة / يُجري قسمة صحيحة في Trino بينما يُجري قسمة عشرية في ClickHouse، وأن round يستخدم تقريب المصرفيين في ClickHouse مع وسائط Float. استخدم EXPLAIN SYNTAX لمعرفة كيفية ترجمة استعلام ما.
آخر تعديل في ٢٦ سبتمبر ٢٠٢٦