نظرة عامة
المتطلبات الأساسية
أنشئ جدولًا جديدًا
تتضمن مجموعة بيانات سيارات الأجرة في مدينة نيويورك تفاصيل ملايين رحلات التاكسي، بما في ذلك أعمدة مثل قيمة الإكرامية ورسوم الطرق ونوع الدفع وغير ذلك. أنشئ جدولًا لتخزين هذه البيانات.-
اتصل بـ SQL Console:
- في ClickHouse Cloud، اختر خدمة من القائمة المنسدلة، ثم اختر SQL Console من قائمة التنقل اليمنى.
- في Self-managed ClickHouse، اتصل بـ SQL Console على
https://_hostname_:8443/play. راجع مسؤول ClickHouse لديك للحصول على التفاصيل.
-
أنشئ جدول
tripsالتالي في قاعدة البياناتdefault:
أضف مجموعة البيانات
الآن بعد أن أنشأت جدولًا، أضف بيانات سيارات الأجرة لمدينة نيويورك من ملفات CSV في S3.-
يُدرج الأمر التالي حوالي 2,000,000 صف في جدول
tripsمن ملفين مختلفين في S3: trips_1.tsv.gzوtrips_2.tsv.gz: -
انتظر حتى يكتمل
INSERT. قد يستغرق تنزيل 150 MB من البيانات بعض الوقت. -
عند اكتمال الإدراج، تحقّق من نجاحه:
يجب أن يُرجع هذا query عددًا قدره 1,999,657 صفًا.
تحليل البيانات
شغّل بعض الاستعلامات لتحليل البيانات. استكشف الأمثلة التالية أو جرّب استعلام SQL الخاص بك.-
احسب متوسط قيمة الإكرامية:
الناتج المتوقّع
-
احسب متوسط التكلفة حسب عدد الركاب:
المخرجات المتوقعة
تتراوح قيم
passenger_countبين 0 و9: -
احسب عدد عمليات الالتقاط اليومية لكل حي:
الناتج المتوقع
-
احسب مدة كل رحلة بالدقائق، ثم صنّف النتائج حسب مدة الرحلة:
الناتج المتوقَّع
-
اعرض عدد مرات الالتقاط في كل حي موزعةً حسب ساعات اليوم:
المخرجات المتوقعة
-
استرجع الرحلات المتجهة إلى مطاري LaGuardia أو JFK:
النتائج المتوقعة
إنشاء قاموس
القاموس (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 | EWR | مطار نيوارك | EWR |
| 2 | كوينز | خليج جامايكا | منطقة بورو |
| 3 | برونكس | أليرتون/بيلهام غاردنز | منطقة بورو |
| 4 | مانهاتن | ألفابت سيتي | النطاق الأصفر |
| 5 | جزيرة ستاتن | أردن هايتس | نطاق بورو |
- نفّذ أمر 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 صفًا، أي صفًا واحدًا لكل حي:
-
استخدم الدالة
dictGet(أو صيغها المختلفة) لاسترجاع قيمة من قاموس. مرِّر اسم القاموس، والقيمة المطلوبة، والمفتاح (وهو في مثالنا العمودLocationIDمنtaxi_zone_dictionary). على سبيل المثال، يُرجع الاستعلام التالي قيمةBoroughالخاصة بـLocationIDذي القيمة 132، وهو ما يقابل مطار JFK):يقع JFK في كوينز. لاحظ أن الوقت اللازم لاسترجاع القيمة يكاد يكون 0: -
استخدم الدالة
dictHasللتحقق مما إذا كان المفتاح موجودًا في القاموس. على سبيل المثال، يُرجع الاستعلام التالي1(وهي تعني “true” في ClickHouse): -
يعيد الاستعلام التالي القيمة 0 لأن 4567 ليس قيمةً لـ
LocationIDفي القاموس: -
استخدم الدالة
dictGetلجلب اسم أحد الأحياء في استعلام. على سبيل المثال:يجمع هذا الاستعلام إجمالي عدد رحلات سيارات الأجرة في كل مقاطعة تنتهي في مطار LaGuardia أو JFK. وتبدو النتيجة كما يلي، ولاحظ أن هناك عددًا غير قليل من الرحلات التي يكون فيها حيّ الانطلاق غير معروف:
إجراء عملية ربط
اكتب بعض الاستعلامات التي تُجري ربطًا بينtaxi_zone_dictionary وجدول trips لديك.-
ابدأ بـ
JOINبسيط يعمل بطريقة مشابهة لاستعلام المطار السابق أعلاه:تبدو الاستجابة مطابقة لاستعلامdictGet:
لاحظ أن ناتج استعلام
JOIN أعلاه هو نفسه ناتج الاستعلام السابق الذي استخدم dictGetOrDefault (باستثناء أن قيم Unknown غير مضمّنة). في الخلفية، يستدعي ClickHouse فعليًا الدالة dictGet للقاموس taxi_zone_dictionary، لكن صياغة JOIN أكثر شيوعًا لدى مطوري SQL.- يعرض هذا الاستعلام الصفوف الخاصة بأعلى 1000 رحلة من حيث قيمة الإكرامية، ثم يُجري inner join لكل صف مع القاموس:
عمومًا، نتجنب الإكثار من استخدام
SELECT * في ClickHouse. ينبغي لك جلب الأعمدة التي تحتاج إليها فعليًا فقط.الخطوات التالية
- مقدمة إلى الفهارس الأساسية في ClickHouse: تعرّف على كيفية استخدام ClickHouse للفهارس الأساسية المتفرقة لتحديد البيانات ذات الصلة بكفاءة أثناء الاستعلامات.
- ربط مصدر بيانات خارجي: راجع خيارات تكامل مصادر البيانات، بما في ذلك الملفات وKafka وPostgreSQL ومسارات البيانات وغير ذلك الكثير.
- تصوّر البيانات في ClickHouse: صِل أداة UI/BI المفضلة لديك بـ ClickHouse.
- مرجع SQL: تصفّح دوال SQL المتاحة في ClickHouse لتحويل البيانات ومعالجتها وتحليلها.