Skip to main content

نظرة عامة

تعرّف على كيفية إدخال البيانات إلى ClickHouse والاستعلام عنها باستخدام مجموعة البيانات التجريبية لسيارات الأجرة في مدينة نيويورك.

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

تحتاج إلى الوصول إلى خدمة ClickHouse عاملة لإكمال هذا الدليل. للاطلاع على التعليمات، راجع دليل البدء السريع.
1

أنشئ جدولًا جديدًا

تتضمن مجموعة بيانات سيارات الأجرة في مدينة نيويورك تفاصيل ملايين رحلات التاكسي، بما في ذلك أعمدة مثل قيمة الإكرامية ورسوم الطرق ونوع الدفع وغير ذلك. أنشئ جدولًا لتخزين هذه البيانات.
  1. اتصل بـ SQL Console:
    • في ClickHouse Cloud، اختر خدمة من القائمة المنسدلة، ثم اختر SQL Console من قائمة التنقل اليمنى.
    • في Self-managed ClickHouse، اتصل بـ SQL Console على https://_hostname_:8443/play. راجع مسؤول ClickHouse لديك للحصول على التفاصيل.
  2. أنشئ جدول trips التالي في قاعدة البيانات default:
2

أضف مجموعة البيانات

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

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

شغّل بعض الاستعلامات لتحليل البيانات. استكشف الأمثلة التالية أو جرّب استعلام SQL الخاص بك.
  • احسب متوسط قيمة الإكرامية:

  • احسب متوسط التكلفة حسب عدد الركاب:

    تتراوح قيم passenger_count بين 0 و9:

  • احسب عدد عمليات الالتقاط اليومية لكل حي:

  • احسب مدة كل رحلة بالدقائق، ثم صنّف النتائج حسب مدة الرحلة:

  • اعرض عدد مرات الالتقاط في كل حي موزعةً حسب ساعات اليوم:

  1. استرجع الرحلات المتجهة إلى مطاري LaGuardia أو JFK:

4

إنشاء قاموس

القاموس (Dictionary) هو بنية بيانات تخزّن أزواج المفتاح والقيمة (key-value pairs) في الذاكرة. لمزيد من التفاصيل، راجع Dictionariesأنشئ قاموسًا مرتبطًا بجدول في خدمة ClickHouse الخاصة بك. يستند الجدول والقاموس إلى ملف CSV يحتوي على صف لكل حي من أحياء مدينة نيويورك.يتم تعيين الأحياء إلى أسماء الأقسام الإدارية الخمسة لمدينة نيويورك (Bronx وBrooklyn وManhattan وQueens وStaten Island)، إضافةً إلى مطار Newark (EWR).فيما يلي مقتطف من ملف CSV الذي تستخدمه بتنسيق جدولي. يُقابل عمود LocationID في الملف عمودَي pickup_nyct2010_gid وdropoff_nyct2010_gid في جدول trips الخاص بك:
  1. نفّذ أمر 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.
  1. تحقّق من نجاح العملية. يجب أن يُرجع ما يلي 265 صفًا، أي صفًا واحدًا لكل حي:
  2. استخدم الدالة dictGet (أو صيغها المختلفة) لاسترجاع قيمة من قاموس. مرِّر اسم القاموس، والقيمة المطلوبة، والمفتاح (وهو في مثالنا العمود LocationID من taxi_zone_dictionary). على سبيل المثال، يُرجع الاستعلام التالي قيمة Borough الخاصة بـ LocationID ذي القيمة 132، وهو ما يقابل مطار JFK):
    يقع JFK في كوينز. لاحظ أن الوقت اللازم لاسترجاع القيمة يكاد يكون 0:
  3. استخدم الدالة dictHas للتحقق مما إذا كان المفتاح موجودًا في القاموس. على سبيل المثال، يُرجع الاستعلام التالي 1 (وهي تعني “true” في ClickHouse):
  4. يعيد الاستعلام التالي القيمة 0 لأن 4567 ليس قيمةً لـ LocationID في القاموس:
  5. استخدم الدالة dictGet لجلب اسم أحد الأحياء في استعلام. على سبيل المثال:
    يجمع هذا الاستعلام إجمالي عدد رحلات سيارات الأجرة في كل مقاطعة تنتهي في مطار LaGuardia أو JFK. وتبدو النتيجة كما يلي، ولاحظ أن هناك عددًا غير قليل من الرحلات التي يكون فيها حيّ الانطلاق غير معروف:
5

إجراء عملية ربط

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

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

تعرّف على المزيد حول ClickHouse من خلال الوثائق التالية:
Last modified on July 2, 2026