الانتقال إلى المحتوى الرئيسي
على الرغم من أن DataStore متوافق إلى حدّ كبير مع pandas، فهناك اختلافات مهمة ينبغي فهمها.

جدول موجز


1. التنفيذ الكسول مقابل التنفيذ الفوري

pandas (فوري)

تُنفَّذ العمليات على الفور:

DataStore (كسول)

تُؤجَّل العمليات إلى حين الحاجة إلى النتائج:

لماذا يُعدّ هذا مهمًا

يُمكّن التنفيذ الكسول مما يلي:
  • تحسين الاستعلام: تُحوَّل عمليات متعددة إلى استعلام SQL واحد
  • تشذيب الأعمدة: لا تُقرأ إلا الأعمدة المطلوبة
  • تمرير عوامل التصفية إلى المصدر: تُطبَّق عوامل التصفية عند المصدر
  • كفاءة الذاكرة: لا تُحمِّل بيانات لا تحتاج إليها

2. أنواع القيم المُعادة

pandas

DataStore

التحويل إلى أنواع بيانات pandas


3. مشغّلات التنفيذ

يبدأ DataStore التنفيذ عندما تحتاج إلى القيم الفعلية:

العمليات التي تبقى كسولة


4. ترتيب الصفوف

pandas

يُحافَظ دائمًا على ترتيب الصفوف:

DataStore

يُحفَظ ترتيب الصفوف تلقائيًا في معظم العمليات:
يتتبّع DataStore تلقائيًا المواضع الأصلية للصفوف داخليًا (باستخدام rowNumberInAllBlocks()) لضمان الحفاظ على اتساق الترتيب مع pandas.

عندما يُحفَظ الترتيب

  • المصادر المعتمدة على الملفات (CSV وParquet وJSON وما إلى ذلك)
  • مصادر pandas DataFrame
  • عمليات التصفية
  • اختيار الأعمدة
  • بعد استخدام sort() أو sort_values() صراحةً
  • العمليات التي تحدد الترتيب (nlargest() وnsmallest() وhead() وtail())

عندما قد يختلف الترتيب

  • بعد عمليات التجميع باستخدام groupby() (استخدم sort_values() لضمان اتساق الترتيب)
  • بعد merge() / join() مع بعض أنواع الربط
  • في وضع الأداء (config.use_performance_mode()): لا يكون ترتيب الصفوف مضمونًا في أي عملية. راجع وضع الأداء.

5. عدم توفّر المعلمة inplace

pandas

DataStore

inplace=True غير مدعوم. أَسنِد النتيجة دائمًا:

لماذا لا يوجد inplace؟

يستخدم DataStore عمليات غير قابلة للتعديل لإتاحة:
  • بناء الاستعلامات (التنفيذ الكسول)
  • أمان الخيوط
  • تصحيح الأخطاء بسهولة أكبر
  • شيفرة أوضح

6. دعم الفهارس

pandas

دعم كامل للفهارس:

DataStore

دعم مبسّط للفهارس:

نوع مصدر DataStore مهم

  • مصدر DataFrame: يحتفظ بفهرس pandas
  • مصدر File: يستخدم فهرسًا عدديًا بسيطًا

7. سلوك عمليات المقارنة

مقارنةً بـ pandas

لا يتعرّف pandas على كائنات DataStore:

استخدام الدالة equals()


8. استنتاج النوع

pandas

يستخدم أنواع بيانات numpy/pandas:

DataStore

يمكنه استخدام أنواع ClickHouse:

التحويل الصريح للنوع


9. نموذج الذاكرة

pandas

تُخزَّن جميع البيانات في الذاكرة:

DataStore

تبقى البيانات في المصدر حتى تدعو الحاجة إليها:

10. رسائل الخطأ

مصادر الأخطاء المختلفة

  • أخطاء pandas: صادرة من مكتبة pandas
  • أخطاء DataStore: صادرة من chDB أو ClickHouse

نصائح لاستكشاف الأخطاء وإصلاحها


قائمة تحقق الترحيل

عند الترحيل من pandas:
  • غيّر تعليمة الاستيراد
  • أزل المَعلمات inplace=True
  • أضف استدعاء to_df() بشكل صريح حيث تكون pandas DataFrame مطلوبة
  • أضف الفرز إذا كان ترتيب الصفوف مهمًا
  • استخدم to_pandas() في اختبارات المقارنة
  • اختبر بأحجام بيانات ممثلة للواقع

مرجع سريع

آخر تعديل في ٢٩ يونيو ٢٠٢٦