نظرة عامة
ابدأ ClickHouse
إنشاء جدول
أضِف مجموعة البيانات
تثبيت pg_clickhouse
ربط pg_clickhouse
password.
الآن، أضِف جدول سيارات الأجرة؛ فقط استورد جميع الجداول من قاعدة بيانات
ClickHouse البعيدة إلى مخطط Postgres:
\det+ لعرضه:
\d لإظهار جميع الأعمدة:
COUNT()، لذا يُنفَّذ على ClickHouse ولا
يُعيد إلى Postgres إلا صفًا واحدًا. استخدم EXPLAIN لمعاينة ذلك:
حلّل البيانات
-
احسب متوسط مبلغ الإكرامية:
-
احسب متوسط التكلفة بناءً على عدد الركاب:
-
احسب العدد اليومي لمرات الالتقاط في كل حي:
-
احسب مدة كل رحلة بالدقائق، ثم جمّع النتائج حسب
مدة الرحلة:
-
اعرض عدد مرات الالتقاط في كل حيّ، مقسّمًا حسب ساعات اليوم:
-
اضبط المنطقة الزمنية المعروضة على توقيت نيويورك، ثم استرجع الرحلات إلى مطاري LaGuardia أو JFK:
إنشاء قاموس
LocationID في الملف بالعمودين pickup_nyct2010_gid و
dropoff_nyct2010_gid في جدول الرحلات لديك:
| LocationID | Borough | Zone | service_zone |
|---|---|---|---|
| 1 | EWR | Newark Airport | EWR |
| 2 | Queens | Jamaica Bay | Boro Zone |
| 3 | Bronx | Allerton/Pelham Gardens | Boro Zone |
| 4 | Manhattan | Alphabet City | Yellow Zone |
| 5 | Staten Island | Arden Heights | Boro Zone |
-
بينما لا تزال في Postgres، استخدم الدالة
clickhouse_raw_queryلإنشاء [قاموس] في ClickHouse باسمtaxi_zone_dictionaryوملء القاموس من ملف CSV في S3:
يؤدي تعيين
LIFETIME إلى 0 إلى تعطيل التحديثات التلقائية لتجنّب
نقل بيانات غير ضروري إلى S3 bucket الخاص بنا. في حالات أخرى،
قد تحتاج إلى تهيئته بشكل مختلف. لمزيد من التفاصيل، راجع تحديث بيانات القاموس باستخدام
LIFETIME.- الآن استورده:
- تأكَّد من أنه يمكننا الاستعلام عنه:
- ممتاز. الآن استخدم الدالة
dictGetلاسترجاع اسم حي إداري في استعلام. يجمع هذا الاستعلام عدد رحلات سيارات الأجرة لكل حي إداري التي تنتهي في أحد مطاري LaGuardia أو JFK:
تنفيذ عملية join
taxi_zone_dictionary بجدول trips
لديك.
-
ابدأ بـ
JOINبسيط يعمل بطريقة مشابهة لاستعلام المطار السابق أعلاه:
لاحظ أن ناتج استعلام
JOIN أعلاه مطابق لناتج استعلام dictGet
أعلاه (باستثناء أن قيم Unknown غير متضمّنة). في الخلفية،
يستدعي ClickHouse فعليًا الدالة dictGet من أجل
القاموس taxi_zone_dictionary، لكن صياغة JOIN أكثر
ألفةً لمطوري SQL.-
يُرجع هذا الاستعلام صفوفًا لأعلى 1000 رحلة من حيث قيمة
الإكرامية، ثم يُجري INNER JOIN لكل صف مع القاموس:
بوجه عام، نتجنب استخدام
SELECT * في PostgreSQL وClickHouse. يجب
ألا تسترجع إلا الأعمدة التي تحتاج إليها فعليًا.