في هذا الدليل، ستتعلّم كيف تستكشف مجموعة بيانات من ClickHouse Cloud في دفتر ملاحظات Marimo بمساعدة chDB — وهو محرك SQL OLAP سريع يعمل داخل العملية ومدعوم من ClickHouse.
المتطلبات الأساسية:
- بايثون 3.8 أو أحدث
- بيئة افتراضية
- خدمة ClickHouse Cloud عاملة وتفاصيل الاتصال الخاصة بك
إذا لم يكن لديك حساب ClickHouse Cloud حتى الآن، فيمكنك التسجيل للحصول على
نسخة تجريبية ورصيد مجاني بقيمة 300 دولار للبدء.
ما ستتعلّمه:
- الاتصال بـ ClickHouse Cloud من Marimo notebooks باستخدام chDB
- إجراء استعلامات على مجموعات البيانات البعيدة وتحويل النتائج إلى Pandas DataFrames
- تصور البيانات باستخدام Plotly في Marimo
- الاستفادة من نموذج التنفيذ التفاعلي في Marimo لاستكشاف البيانات بشكل تفاعلي
سنستخدم مجموعة بيانات 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 كمتغيرات بيئة على جهازك المحلي.
ومن الطرفية، شغّل الأمر التالي لإضافة اسم المستخدم وكلمة المرور كمتغيرات بيئة:
تظل متغيرات البيئة المذكورة أعلاه سارية فقط ما دامت جلسة الطرفية مفتوحة.
ولتعيينها بشكل دائم، أضِفها إلى ملف تهيئة الصدفة.
الآن فعِّل بيئتك الافتراضية.
ومن داخلها، ثبّت الحزم التالية التي سنستخدمها في هذا الدليل:
أنشئ دفتر ملاحظات Marimo جديدًا باستخدام الأمر التالي:
يجب أن تُفتح نافذة متصفح جديدة تظهر فيها واجهة Marimo على localhost:2718:
تُحفَظ دفاتر Marimo كملفات بايثون خالصة، مما يسهّل تتبّع إصداراتها ومشاركتها مع الآخرين.
في خلية جديدة، استورد الحزم المطلوبة:
إذا مرّرت مؤشر الفأرة فوق الخلية، فستظهر دائرتان تحملان الرمز ”+”.
يمكنك النقر عليهما لإضافة خلايا جديدة.
أضف خلية جديدة ونفّذ استعلامًا بسيطًا للتحقق من أن كل شيء مُعدّ على نحو صحيح:
يُفترض أن ترى النتيجة كما هي مبيّنة أسفل الخلية التي شغّلتها للتو:
بعد إعداد مجموعة بيانات أسعار العقارات المدفوعة في المملكة المتحدة وتشغيل chDB في دفتر ملاحظات Marimo، يمكننا الآن البدء في استكشاف بياناتنا.
لنفترض أننا نريد التحقق من كيفية تغيّر الأسعار بمرور الوقت في منطقة محددة في المملكة المتحدة، مثل العاصمة لندن.
تتيح لك الدالة remoteSecure في ClickHouse استرجاع البيانات بسهولة من ClickHouse Cloud.
يمكنك توجيه chDB لإرجاع هذه البيانات أثناء التنفيذ على هيئة إطار بيانات Pandas، وهي طريقة مريحة ومألوفة للعمل مع البيانات.
الاستعلام عن بيانات ClickHouse Cloud
أنشئ خلية جديدة تتضمن الاستعلام التالي لجلب بيانات الأسعار المدفوعة في المملكة المتحدة من خدمة ClickHouse Cloud لديك وتحويلها إلى pandas.DataFrame:
في المقتطف أعلاه، ينفّذ chdb.query(query, "DataFrame") الاستعلام المحدد ويُخرج النتيجة على شكل إطار بيانات Pandas.
في هذا الاستعلام، نستخدم الدالة remoteSecure للاتصال بـ ClickHouse Cloud.
تأخذ الدالة remoteSecure المعلمات التالية:
- سلسلة اتصال
- اسم قاعدة البيانات والجدول المراد استخدامهما
- اسم المستخدم الخاص بك
- كلمة المرور الخاصة بك
ومن أفضل الممارسات الأمنية استخدام متغيرات البيئة لمعلمتَي اسم المستخدم وكلمة المرور بدلًا من تحديدهما مباشرةً في الدالة، رغم أن ذلك ممكن إذا رغبت.
تتصل الدالة remoteSecure بخدمة ClickHouse Cloud البعيدة، وتنفّذ الاستعلام ثم تعيد النتيجة.
وقد يستغرق ذلك بضع ثوانٍ، بحسب حجم بياناتك.
في هذه الحالة، نعيد متوسط السعر لكل سنة، ونطبّق عامل التصفية town='LONDON'.
ثم تُخزَّن النتيجة على شكل DataFrame في متغير يُسمى df.
بعد أن أصبحت البيانات متاحة لنا بصيغة مألوفة، لنرَ كيف تغيّرت أسعار العقارات في لندن مع مرور الوقت.
يعمل Marimo بكفاءة خاصة مع مكتبات الرسوم البيانية التفاعلية مثل Plotly.
في خلية جديدة، أنشئ مخططًا تفاعليًا:
وربما ليس من المستغرب أن أسعار العقارات في لندن قد ارتفعت كثيرًا مع مرور الوقت.
تتمثل إحدى نقاط قوة Marimo في نموذج التنفيذ التفاعلي الخاص به. لنُنشئ أداة تفاعلية تتيح اختيار مدن مختلفة بصورة ديناميكية.
في خلية جديدة، أنشئ قائمة منسدلة لاختيار بلدات متعددة:
في خلية أخرى، أنشئ استعلامًا يتفاعل مع اختيار البلدة. عند تغيير القائمة المنسدلة، ستُعاد هذه الخلية تلقائيًا للتنفيذ:
أنشئ الآن مخططًا يُحدَّث تلقائيًا عند تغيير المدينة.
يمكنك نقل المخطط إلى أعلى DataFrame الديناميكي بحيث يظهر
أسفل الخلية ذات القائمة المنسدلة.
الآن، عند اختيار بلدة من القائمة المنسدلة، سيتحدّث المخطط تلقائيًا:
استكشاف توزيعات الأسعار باستخدام مخططات الصندوق والشوارب التفاعلية
لنتعمق أكثر في البيانات من خلال فحص توزيع أسعار العقارات في لندن عبر سنوات مختلفة.
سيُظهر لنا مخطط الصندوق والشوارب الوسيط والربيعات والقيم المتطرفة، مما يمنحنا فهمًا أفضل بكثير من الاكتفاء بمتوسط السعر.
أولًا، لنُنشئ منزلقًا للسنوات يتيح لنا استكشاف السنوات المختلفة بشكل تفاعلي:
في خلية جديدة، أضف ما يلي:
الآن، لنستعلم عن أسعار كل عقار على حدة للسنة المحددة.
لاحظ أننا لا نجري أي تجميع هنا، إذ نريد جميع المعاملات الفردية لبناء التوزيع:
إذا نقرت على زر الخيارات في أعلى يمين الخلية، يمكنك إخفاء
الشيفرة.
وعند تحريك شريط التمرير، سيتحدّث المخطط تلقائيًا بفضل التنفيذ التفاعلي في Marimo:
عرض هذا الدليل كيفية استخدام chDB لاستكشاف بياناتك في ClickHouse Cloud باستخدام دفاتر Marimo.
وباستخدام مجموعة بيانات أسعار العقارات في المملكة المتحدة، أوضحنا كيفية الاستعلام عن بيانات ClickHouse Cloud البعيدة باستخدام الدالة remoteSecure()، وتحويل النتائج مباشرةً إلى إطارات بيانات Pandas لأغراض التحليل والتصور.
ومن خلال chDB ونموذج التنفيذ التفاعلي في Marimo، يمكن لعلماء البيانات الاستفادة من إمكانات SQL القوية في ClickHouse إلى جانب أدوات بايثون المألوفة مثل Pandas وPlotly، مع ميزة إضافية تتمثل في عناصر واجهة المستخدم التفاعلية والتتبع التلقائي للتبعيات، مما يجعل التحليل الاستكشافي أكثر كفاءة وأسهل في إعادة الإنتاج.