في هذا الدليل، سنبدأ باستخدام إصدار chDB الخاص ببايثون.
سنبدأ بالاستعلام عن ملف JSON على S3، ثم سننشئ جدولًا في chDB استنادًا إلى ملف JSON، ونُجري بعض الاستعلامات على البيانات.
وسنرى أيضًا كيفية إرجاع الاستعلامات للبيانات بتنسيقات مختلفة، بما في ذلك Apache Arrow وPandas، وأخيرًا سنتعلم كيفية الاستعلام عن Pandas DataFrames.
لنبدأ أولًا بإنشاء بيئة افتراضية:
والآن سنقوم بتثبيت chDB.
تأكد من أن لديك الإصدار 2.0.3 أو أحدث:
والآن سنثبّت ipython:
سنستخدم ipython لتشغيل الأوامر في بقية هذا الدليل، ويمكنك تشغيله بتنفيذ:
سنستخدم أيضًا Pandas وApache Arrow في هذا الدليل، لذا فلنثبّت هاتين المكتبتين أيضًا:
الاستعلام عن ملف JSON في S3
لنلقِ الآن نظرة على كيفية الاستعلام عن ملف JSON مخزَّن في حاوية S3.
تحتوي مجموعة بيانات حالات عدم الإعجاب على YouTube على أكثر من 4 مليارات صف من حالات عدم الإعجاب بمقاطع فيديو YouTube حتى عام 2021.
سنعمل على أحد ملفات JSON من مجموعة البيانات هذه.
استورد chdb:
يمكن كتابة الاستعلام التالي لوصف بنية أحد ملفات JSON:
يمكننا أيضًا حساب عدد الصفوف في ذلك الملف:
يحتوي هذا الملف على أكثر قليلًا من 300,000 سجل.
لا يدعم chdb حتى الآن تمرير query parameters، لكن يمكننا استخراج المسار وتمريره باستخدام f-String.
لا بأس في فعل ذلك باستخدام المتغيرات المعرّفة في برنامجك، لكن لا تفعل ذلك مع المُدخلات التي يوفّرها المستخدم، وإلا فسيصبح الاستعلام عرضة لحقن SQL.
تنسيق الإخراج الافتراضي هو CSV، لكن يمكن تغييره عبر المعلَمة output_format.
يدعم chDB تنسيقات بيانات ClickHouse، بالإضافة إلى بعض التنسيقات الخاصة به، بما في ذلك DataFrame، الذي يُرجع Pandas DataFrame:
أو إذا أردنا استرجاع جدول Apache Arrow:
بعد ذلك، لنلقِ نظرة على كيفية إنشاء جدول في chDB.
نحتاج إلى استخدام واجهة برمجة تطبيقات مختلفة لذلك، لذا لنستوردها أولًا:
بعد ذلك، سنُهيِّئ جلسة.
إذا أردنا الاحتفاظ بالجلسة على القرص، فعلينا تحديد اسم دليل.
إذا تركناه فارغًا، فستكون قاعدة البيانات في الذاكرة وستفقد بمجرد إنهاء عملية بايثون.
بعد ذلك، سنُنشئ قاعدة بيانات:
يمكننا الآن إنشاء جدول dislikes استنادًا إلى المخطط المستنتَج من ملف JSON، باستخدام أسلوب CREATE...EMPTY AS.
سنستخدم الإعداد schema_inference_make_columns_nullable حتى لا تصبح جميع أنواع الأعمدة من النوع Nullable.
يمكننا بعد ذلك استخدام عبارة DESCRIBE لفحص المخطط:
بعد ذلك، لنملأ ذلك الجدول بالبيانات:
يمكننا أيضًا تنفيذ هاتين الخطوتين معًا في خطوة واحدة باستخدام تقنية CREATE...AS.
لنُنشئ جدولًا مختلفًا باستخدام هذه التقنية:
أخيرًا، لنُجرِ استعلامًا على الجدول:
لنفترض أننا أضفنا بعد ذلك عمودًا إضافيًا إلى DataFrame لحساب نسبة الإعجابات إلى حالات عدم الإعجاب.
يمكننا كتابة الشيفرة التالية:
الاستعلام عن Pandas DataFrame
يمكننا بعد ذلك إجراء استعلامات على Pandas DataFrame هذه باستخدام chDB:
يمكنك أيضًا قراءة المزيد عن الاستعلام عن Pandas DataFrames في دليل المطورين للاستعلام عن Pandas DataFrames.
نأمل أن يكون هذا الدليل قد قدّم لك لمحة عامة جيدة عن chDB.
لمعرفة المزيد حول كيفية استخدامه، راجع أدلة المطورين التالية: