Skip to main content
في هذا الدليل، ستتعلّم كيفية استكشاف مجموعة بيانات من بيانات ClickHouse Cloud داخل Jupyter notebook بمساعدة chDB — وهو محرّك SQL ‏OLAP سريع يعمل داخل العملية ومدعوم من ClickHouse. المتطلبات الأساسية:
إذا لم يكن لديك بعد حساب ClickHouse Cloud، فيمكنك التسجيل للحصول على نسخة تجريبية والحصول على رصيد مجاني بقيمة 300 دولار للبدء.
ما ستتعلّمه:
  • الاتصال بـ ClickHouse Cloud من Jupyter notebooks باستخدام chDB
  • تنفيذ استعلامات على مجموعات بيانات بعيدة وتحويل النتائج إلى Pandas DataFrames
  • دمج البيانات السحابية مع ملفات CSV محلية لأغراض التحليل
  • عرض البيانات بصريًا باستخدام matplotlib
سنستخدم مجموعة بيانات UK Property Price المتاحة على ClickHouse Cloud بوصفها إحدى مجموعات البيانات الجاهزة للبدء. وتتضمن بيانات عن أسعار بيع المنازل في المملكة المتحدة من عام 1995 إلى عام 2024.

الإعداد

لإضافة مجموعة البيانات هذه إلى خدمة ClickHouse Cloud حالية، سجّل الدخول إلى console.clickhouse.cloud باستخدام بيانات حسابك. في القائمة الجانبية اليسرى، انقر على Data sources، ثم انقر على Predefined sample data: حدِّد Get started في بطاقة بيانات أسعار العقارات المدفوعة في المملكة المتحدة (4GB): ثم انقر على Import dataset: سينشئ ClickHouse تلقائيًا الجدول pp_complete في قاعدة البيانات default ويملأه بـ 28.92 مليون صف من بيانات نقاط الأسعار. للحد من احتمالية كشف بيانات الاعتماد الخاصة بك، نوصي بإضافة اسم المستخدم وكلمة المرور الخاصة بك في Cloud كمتغيرات بيئة على جهازك المحلي. ومن الطرفية، شغّل الأمر التالي لإضافة اسم المستخدم وكلمة المرور كمتغيرات بيئة:
لا تبقى متغيرات البيئة المذكورة أعلاه إلا طوال جلسة الطرفية الحالية. ولتعيينها بشكل دائم، أضفها إلى ملف إعدادات الصدفة.
الآن فعِّل بيئتك الافتراضية. ومن داخل بيئتك الافتراضية، ثبّت Jupyter Notebook باستخدام الأمر التالي:
شغِّل Jupyter Notebook باستخدام الأمر التالي:
يُفترض أن تُفتح نافذة متصفح جديدة تعرض واجهة Jupyter على localhost:8888. انقر على File > New > Notebook لإنشاء دفتر ملاحظات جديد. سيُطلب منك اختيار نواة. اختر أي نواة بايثون متاحة لديك، وفي هذا المثال سنختار ipykernel: في خلية فارغة، يمكنك كتابة الأمر التالي لتثبيت chDB، والذي سنستخدمه للاتصال بمثيل ClickHouse Cloud البعيد:
يمكنك الآن استيراد chDB وتشغيل استعلام بسيط للتأكد من أن كل شيء مُعَدّ بشكل صحيح:

استكشاف البيانات

بعد إعداد مجموعة بيانات أسعار العقارات المدفوعة في المملكة المتحدة وتشغيل chDB في Jupyter notebook، يمكننا الآن البدء في استكشاف بياناتنا. لنفترض أننا نريد التحقق من كيفية تغيّر الأسعار بمرور الوقت في منطقة محددة في المملكة المتحدة، مثل العاصمة لندن. تتيح لك الدالة remoteSecure في ClickHouse استرداد البيانات بسهولة من ClickHouse Cloud. يمكنك توجيه chDB لإرجاع هذه البيانات داخل العملية على هيئة Pandas data frame، وهي طريقة مريحة ومألوفة للعمل مع البيانات. اكتب الاستعلام التالي لجلب بيانات أسعار العقارات المدفوعة في المملكة المتحدة من خدمة ClickHouse Cloud الخاصة بك وتحويلها إلى pandas.DataFrame:
في المقتطف أعلاه، يشغّل chdb.query(query, "DataFrame") الاستعلام المحدد ويعرض النتيجة في الطرفية على هيئة Pandas DataFrame. في هذا الاستعلام، نستخدم الدالة remoteSecure للاتصال بـ ClickHouse Cloud. تأخذ الدالة remoteSecure المعلمات التالية:
  • سلسلة اتصال
  • اسم قاعدة البيانات والجدول المراد استخدامهما
  • اسم المستخدم الخاص بك
  • كلمة المرور الخاصة بك
وكأفضل ممارسة أمنية، يُفضَّل استخدام متغيرات البيئة لمعلمتَي اسم المستخدم وكلمة المرور بدلاً من تحديدهما مباشرةً في الدالة، مع أن ذلك ممكن إذا رغبت. تتصل الدالة remoteSecure بخدمة ClickHouse Cloud البعيدة، وتشغّل الاستعلام ثم تُرجع النتيجة. وبحسب حجم بياناتك، قد يستغرق ذلك بضع ثوانٍ. في هذه الحالة، نُرجع متوسط نقطة السعر لكل سنة، ونطبّق عامل تصفية باستخدام town='LONDON'. ثم تُخزَّن النتيجة على هيئة DataFrame في متغير باسم df. يعرض df.head الصفوف القليلة الأولى فقط من البيانات المُعادة: شغّل الأمر التالي في خلية جديدة للتحقق من أنواع الأعمدة:
لاحظ أنه على الرغم من أن date من النوع Date في ClickHouse، فإنه في DataFrame الناتج يكون من النوع uint16. يستنتج chDB تلقائيًا النوع الأنسب عند إرجاع DataFrame. بعد أن أصبحت البيانات متاحة لنا بصيغة مألوفة، لنستكشف كيف تغيّرت أسعار العقارات في لندن بمرور الوقت. في خلية جديدة، شغّل الأمر التالي لإنشاء مخطط بسيط للوقت مقابل السعر في لندن باستخدام matplotlib:
وربما ليس من المستغرب أن أسعار العقارات في لندن قد ارتفعت بشكل كبير بمرور الوقت. أرسل إلينا زميلٌ في علم البيانات ملف ‎.csv‎ يتضمن متغيرات إضافية متعلقة بالإسكان، ويريد معرفة كيف تغيّر عدد المنازل المباعة في لندن بمرور الوقت. لنرسم بعض هذه المتغيرات مقابل أسعار العقارات ونرى ما إذا كان بإمكاننا اكتشاف أي ارتباط. يمكنك استخدام محرك الجدول file لقراءة الملفات مباشرةً من جهازك المحلي. في خلية جديدة، شغّل الأمر التالي لإنشاء DataFrame جديدة من ملف ‎.csv‎ المحلي.
من الممكن أيضًا القراءة من عدة مصادر في خطوة واحدة. ويمكنك استخدام الاستعلام أدناه مع JOIN لتحقيق ذلك:
على الرغم من أن البيانات غير متوفرة لدينا بدءًا من عام 2020، يمكننا رسم مجموعتي البيانات مقابل بعضهما البعض للسنوات من 1995 إلى 2019. في خلية جديدة، شغّل الأمر التالي:
من البيانات المرسومة، نرى أن المبيعات بدأت عند نحو 160,000 في عام 1995 ثم ارتفعت بسرعة، لتبلغ ذروتها عند نحو 540,000 في عام 1999. بعد ذلك، تراجع حجم المبيعات بشكل حاد خلال منتصف العقد الأول من الألفية، وانخفض بشدة أثناء الأزمة المالية في 2007-2008 ليصل إلى نحو 140,000. أما الأسعار، فقد أظهرت نموًا ثابتًا ومتواصلًا من نحو 150,000 جنيه إسترليني في 1995 إلى نحو 300,000 جنيه إسترليني بحلول 2005. وتسارع النمو بشكل ملحوظ بعد 2012، إذ ارتفعت الأسعار بسرعة من نحو 400,000 جنيه إسترليني إلى أكثر من 1,000,000 جنيه إسترليني بحلول 2019. وعلى خلاف حجم المبيعات، لم تتأثر الأسعار كثيرًا بأزمة 2008 وحافظت على مسار تصاعدي. يا للهول!

الخلاصة

يوضح هذا الدليل كيف يتيح chDB استكشاف البيانات بسلاسة في Jupyter notebooks عبر ربط ClickHouse Cloud بمصادر البيانات المحلية. وباستخدام مجموعة بيانات أسعار العقارات في المملكة المتحدة، أوضحنا كيفية تنفيذ query على بيانات ClickHouse Cloud البعيدة باستخدام الدالة remoteSecure()، وقراءة ملفات CSV المحلية باستخدام محرك الجدول file()، وتحويل النتائج مباشرةً إلى Pandas DataFrames لأغراض التحليل والتصور. ومن خلال chDB، يمكن لعلماء البيانات الاستفادة من إمكانات SQL القوية في ClickHouse إلى جانب أدوات بايثون المألوفة مثل Pandas وmatplotlib، مما يسهّل دمج مصادر بيانات متعددة لإجراء تحليل شامل. ورغم أن كثيرًا من علماء البيانات المقيمين في لندن قد لا يتمكنون من شراء منزل أو شقة خاصة بهم في أي وقت قريب، فبوسعهم على الأقل تحليل السوق الذي جعل ذلك بعيد المنال!
آخر تعديل في ٢٣ يوليو ٢٠٢٦