نظرة عامة
ابدأ ClickHouse
إنشاء جدول
أضِف مجموعة البيانات
تثبيت pg_clickhouse
ربط pg_clickhouse
إذا كنت تستخدم ClickHouse Cloud console لتشغيل SQL، فامنح مستخدم console الإداري حق الوصول إلى الخادم الخارجي:
password.
الآن، أضِف جدول سيارات الأجرة؛ فقط استورد جميع الجداول من قاعدة بيانات
ClickHouse البعيدة إلى مخطط Postgres:
\det+ لعرضه:
\d لإظهار جميع الأعمدة:
COUNT()، لذا يُنفَّذ على ClickHouse ولا
يُعيد إلى Postgres إلا صفًا واحدًا. استخدم EXPLAIN لمعاينة ذلك:
حلّل البيانات
-
احسب متوسط مبلغ الإكرامية:
-
احسب متوسط التكلفة بناءً على عدد الركاب:
-
احسب العدد اليومي لمرات الالتقاط في كل حي:
-
احسب مدة كل رحلة بالدقائق، ثم جمّع النتائج حسب
مدة الرحلة:
-
اعرض عدد مرات الالتقاط في كل حيّ، مقسّمًا حسب ساعات اليوم:
-
اضبط المنطقة الزمنية المعروضة على توقيت نيويورك، ثم استرجع الرحلات إلى مطاري LaGuardia أو JFK:
إنشاء قاموس
LocationID في الملف بالعمودين pickup_nyct2010_gid و
dropoff_nyct2010_gid في جدول الرحلات لديك:
-
بينما لا تزال في Postgres، استخدم الدالة
clickhouse_raw_queryلإنشاء [قاموس] في ClickHouse باسمtaxi_zone_dictionaryوملء القاموس من ملف CSV في S3:يؤدي تعيينLIFETIMEإلى 0 إلى تعطيل التحديثات التلقائية لتجنّب نقل بيانات غير ضروري إلى S3 bucket الخاص بنا. في حالات أخرى، قد تحتاج إلى تهيئته بشكل مختلف. لمزيد من التفاصيل، راجع تحديث بيانات القاموس باستخدام LIFETIME.- الآن استورده:
- تأكَّد من أنه يمكننا الاستعلام عنه:
- ممتاز. الآن استخدم الدالة
dictGetلاسترجاع اسم حي إداري في استعلام. يجمع هذا الاستعلام عدد رحلات سيارات الأجرة لكل حي إداري التي تنتهي في أحد مطاري LaGuardia أو JFK:
يحسب هذا الاستعلام إجمالي عدد رحلات سيارات الأجرة لكل حي إداري التي تنتهي في مطارَي LaGuardia أو JFK. لاحظ أن هناك عددًا كبيرًا من الرحلات التي لا يكون فيها الحي الذي انطلقت منه الرحلة معروفًا.
تنفيذ عملية join
taxi_zone_dictionary بجدول trips
لديك.
-
ابدأ بـ
JOINبسيط يعمل بطريقة مشابهة لاستعلام المطار السابق أعلاه:لاحظ أن ناتج استعلامJOINأعلاه مطابق لناتج استعلامdictGetأعلاه (باستثناء أن قيمUnknownغير متضمّنة). في الخلفية، يستدعي ClickHouse فعليًا الدالةdictGetمن أجل قاموسtaxi_zone_dictionary، لكن صياغةJOINأكثر ألفةً لمطوري SQL. -
يُرجع هذا الاستعلام صفوفًا لأعلى 1000 رحلة من حيث قيمة
الإكرامية، ثم يُجري INNER JOIN لكل صف مع قاموس:
بوجه عام، نتجنب استخدام
SELECT * في PostgreSQL وClickHouse. يجب
ألا تسترجع إلا الأعمدة التي تحتاج إليها فعليًا.