Skip to main content
ستتعرّف في هذا الدليل العملي على كيفية استخدام ClickHouse لتنفيذ استعلامات تحليلية على كميات ضخمة من البيانات. كما ستتعلّم كيفية استخدام قاموس لإثراء البيانات، وكيفية كتابة استعلامات الدمج (join).

المتطلبات الأساسية

ستحتاج في هذا الدليل العملي إلى ما يلي:
1

أنشئ الجدول

مجموعة البيانات المستخدمة في هذا الدليل العملي هي مجموعة بيانات سيارات الأجرة في مدينة نيويورك، وتتضمن تفاصيل ملايين رحلات سيارات الأجرة، وتحتوي على أعمدة مثل مبلغ الإكرامية ورسوم الطرق ونوع الدفع وغيرها.
  1. اختر SQL console من القائمة الجانبية اليسرى
  2. انقر على علامة التبويب + المجاورة لأيقونة الصفحة الرئيسية لإنشاء استعلام جديد
  3. اكتب الاستعلام التالي في محرر SQL، ثم انقر على Run:
Expandable
2

أدرج البيانات

بعد أن أنشأت الجدول، أضف بيانات سيارات الأجرة في مدينة نيويورك من ملفات CSV المخزّنة في S3.يُدرج الأمر التالي نحو 2,000,000 صف في جدول trips من ملفين مختلفين في S3، هما: trips_1.tsv.gz وtrips_2.tsv.gz:
Expandable
انتظر حتى يكتمل إدراج البيانات. سيجري تنزيل نحو 150MB من البيانات. بعد اكتمال إدراج البيانات، تحقّق من عدد الصفوف في جدول trips:
من المفترض أن تحصل على نتيجة تضم 1,999,657 صفًا
3

حلّل البيانات

بعد تحميل البيانات، يمكنك تشغيل بعض الاستعلامات لتحليلها.
  • احسب متوسط مبلغ الإكرامية:
  • احسب متوسط التكلفة بحسب عدد الركاب:
  • احسب العدد اليومي للرحلات التي تبدأ من كل حي:
  • احسب مدة كل رحلة بالدقائق، ثم جمّع النتائج بحسب مدة الرحلة:
  • اعرض عدد الرحلات التي تبدأ من كل حي موزّعةً على ساعات اليوم:
4

أنشئ قاموسًا

بعد ذلك، ستنشئ قاموسًا (وهو مجموعة من أزواج مفتاح-قيمة مخزّنة في الذاكرة) باسم taxi_zone_dictionary يربط بين معرّفات المواقع وأسماء الأقاليم الإدارية (boroughs) في مدينة نيويورك، ويستمد بياناته من ملف CSV يضم جميع أحياء مدينة نيويورك. تقابل هذه المعرّفات العمودين pickup_nyct2010_gid وdropoff_nyct2010_gid في جدول الرحلات.فيما يلي مقتطف من ملف CSV الذي تستخدمه، معروضًا على هيئة جدول. يقابل العمود LocationID في الملف العمودين pickup_nyct2010_gid وdropoff_nyct2010_gid في جدول trips لديك:نفّذ أمر SQL التالي، الذي ينشئ قاموسًا باسم taxi_zone_dictionary ويملؤه بالبيانات من ملف CSV المخزّن في S3. عنوان URL للملف هو https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/taxi_zone_lookup.csv.
يؤدي ضبط LIFETIME على القيمة 0 إلى تعطيل التحديثات التلقائية، وذلك لتجنّب إرسال حركة بيانات غير ضرورية إلى حاوية S3 الخاصة بنا. أما في الحالات الأخرى، فقد ترغب في تهيئته بطريقة مختلفة. لمزيد من التفاصيل، راجع تحديث بيانات القاموس باستخدام LIFETIME.
تحقّق من نجاح العملية. من المفترض أن يُرجع الاستعلام التالي 265 صفًا، أي صفًا واحدًا لكل حيّ:
5

نفّذ الاستعلامات باستخدام القاموس

يمكنك استخدام الدالة dictGet (أو أحد أشكالها) لاسترداد قيمة من القاموس. مرِّر إليها اسم القاموس، والقيمة المطلوبة، والمفتاح (وهو في مثالنا العمود LocationID من taxi_zone_dictionary)، فتُعيد إليك القيمة المطابقة. على سبيل المثال، يُرجع الاستعلام التالي قيمة Borough التي تقابل LocationID ذا القيمة 132 (أي مطار JFK):
يقع مطار JFK في حي Queens. لاحظ أن الوقت المستغرق لاسترجاع القيمة يكاد يكون صفرًا:
استخدم الدالة dictHas للتحقق من وجود مفتاح معيّن في القاموس. على سبيل المثال، يُرجع الاستعلام التالي القيمة 1 (التي تعني “true” في ClickHouse):
يُرجع الاستعلام التالي القيمة 0 لأن 4567 ليست من قيم LocationID في القاموس:
استخدم الدالة dictGet لاسترداد اسم الحي (borough) ضمن استعلام. على سبيل المثال:
يحسب هذا الاستعلام مجموع رحلات سيارات الأجرة المنتهية في مطار LaGuardia أو مطار JFK لكل borough. تبدو النتيجة كما يلي، ويُلاحَظ وجود عدد كبير من الرحلات التي يكون فيها حي الانطلاق غير معروف:
6

نفّذ عملية ضم

أخيرًا، اكتب بعض الاستعلامات التي تربط taxi_zone_dictionary بجدول trips لديك.ابدأ بعملية JOIN بسيطة تعمل على نحوٍ مشابه لاستعلام المطارات السابق:
تبدو النتيجة مطابقة لنتيجة استعلام dictGet:
لاحظ أن ناتج استعلام JOIN أعلاه مطابق لناتج الاستعلام السابق الذي استخدم dictGetOrDefault (باستثناء أن قيم Unknown غير مُضمَّنة). في الواقع، تستدعي ClickHouse خلف الكواليس الدالة dictGet على القاموس taxi_zone_dictionary، غير أن صيغة JOIN أكثر ألفةً لدى مطوري SQL.
يُرجع هذا الاستعلام صفوف الرحلات الـ 1000 ذات أعلى قيمة إكرامية، ثم يُجري ربطًا داخليًا (inner join) بين كل صف والقاموس:
يُفضَّل تحديد الأعمدة التي يحتاجها الاستعلام فقط بدلاً من استخدام SELECT *. فنظرًا لأن ClickHouse يخزّن البيانات على هيئة أعمدة، فإن اختيار عدد أقل من الأعمدة يقلّل مباشرةً حجم البيانات التي تُقرأ ويُفك ضغطها وتُعالَج.

الخطوات التالية

تعرّف على المزيد عن ClickHouse من خلال الوثائق التالية:
  • مقدمة إلى الفهارس الأساسية في ClickHouse: تعرّف على كيفية استخدام ClickHouse للفهارس الأساسية المتناثرة لتحديد مواقع البيانات ذات الصلة بكفاءة أثناء تنفيذ الاستعلامات.
  • دمج مصدر بيانات خارجي: اطّلع على خيارات التكامل المتاحة مع مصادر البيانات، بما في ذلك الملفات وKafka وPostgreSQL ومسارات معالجة البيانات وغيرها الكثير.
  • تصوّر البيانات في ClickHouse: اربط أداة واجهة المستخدم أو ذكاء الأعمال (BI) المفضلة لديك بـ ClickHouse.
  • مرجع SQL: تصفّح دوال SQL المتاحة في ClickHouse لتحويل البيانات ومعالجتها وتحليلها.
آخر تعديل في ٢٨ سبتمبر ٢٠٢٦