Skip to main content
تُعدّ ميزة التحديد الديناميكي للأعمدة من ميزات ClickHouse القوية لكنها غير مستغلة بما يكفي، إذ تتيح لك تحديد الأعمدة باستخدام التعبيرات النمطية بدلًا من تسمية كل عمود على حدة. ويمكنك أيضًا تطبيق الدوال على الأعمدة المطابقة باستخدام المُعدِّل APPLY، مما يجعلها مفيدة للغاية في مهام تحليل البيانات وتحويلها. سنتعلّم كيفية استخدام هذه الميزة بالاستعانة بـمجموعة بيانات سيارات الأجرة في نيويورك، والتي يمكنك العثور عليها أيضًا في ClickHouse SQL playground.

تحديد الأعمدة التي تطابق نمطًا

لنبدأ بحالة شائعة: تحديد الأعمدة التي تحتوي على _amount فقط من مجموعة بيانات سيارات الأجرة في مدينة نيويورك. بدلًا من إدخال اسم كل عمود يدويًا، يمكننا استخدام التعبير COLUMNS مع تعبير منتظم:
جرّب هذا الاستعلام في SQL playground
يعرض هذا الاستعلام أول 10 صفوف، ولكن للأعمدة فقط التي تتطابق أسماؤها مع النمط .*_amount (أي أحرف متبوعة بـ “_amount”).
لنفترض أننا نريد أيضًا إرجاع الأعمدة التي تتضمن المصطلحين fee أو tax. يمكننا تحديث التعبير النمطي ليشملهما أيضًا:
جرّب هذا الاستعلام في SQL playground

اختيار أنماط متعددة

يمكننا دمج عدة أنماط للأعمدة ضمن استعلام واحد:
جرّب هذا الاستعلام في SQL playground

تطبيق الدوال على جميع الأعمدة

يمكننا أيضًا استخدام المُعدِّل APPLY لتطبيق الدوال على جميع الأعمدة. على سبيل المثال، إذا أردنا العثور على القيمة القصوى لكل واحد من تلك الأعمدة، فيمكننا تنفيذ الاستعلام التالي:
جرّب هذا الاستعلام في SQL playground
أو ربما نرغب في رؤية المتوسط بدلًا من ذلك:
جرّب هذا الاستعلام في SQL playground
تحتوي هذه القيم على الكثير من المنازل العشرية، لكن لحسن الحظ يمكننا معالجة ذلك بربط الدوال معًا. في هذه الحالة، سنستخدم الدالة avg، تليها الدالة round:
جرّب هذا الاستعلام في SQL playground
لكن ذلك يقرّب المتوسطات إلى أعداد صحيحة. وإذا أردنا التقريب إلى منزلتين عشريتين مثلًا، فيمكننا فعل ذلك أيضًا. وإلى جانب قبول الدوال، فإن المُعدِّل APPLY يقبل أيضًا تعبير لامبدا، مما يمنحنا المرونة لجعل الدالة round تقرّب قيم المتوسط إلى منزلتين عشريتين:
جرّب هذا الاستعلام في SQL playground

استبدال الأعمدة

الأمور تسير على ما يرام حتى الآن. لكن لنفترض أننا نريد تعديل إحدى القيم مع إبقاء القيم الأخرى كما هي. على سبيل المثال، قد نرغب في مضاعفة المبلغ الإجمالي وقسمة ضريبة MTA على 1.1. يمكننا فعل ذلك باستخدام المُعدِّل REPLACE، الذي يستبدل عمودًا مع إبقاء الأعمدة الأخرى كما هي.
جرّب هذا الاستعلام في SQL playground

استبعاد الأعمدة

يمكننا أيضًا استبعاد حقل باستخدام المُعدِّل EXCEPT. على سبيل المثال، لإزالة العمود tolls_amount، نكتب الاستعلام التالي:
جرّب هذا الاستعلام في SQL playground
آخر تعديل في ٣ يوليو ٢٠٢٦