التقييم الكسول
مثال: التقييم الكسول مقابل التقييم الفوري
فوائد التقييم الكسول
- تحسين الاستعلام: تتحول عمليات متعددة إلى استعلام SQL واحد مُحسَّن
- تمرير عوامل التصفية إلى المصدر: تُطبَّق عوامل التصفية على مستوى مصدر البيانات
- تقليم الأعمدة: لا تُقرأ إلا الأعمدة المطلوبة
- القرارات المؤجلة: يمكن اختيار محرك التنفيذ في وقت التشغيل
- فحص الخطة: يمكنك عرض الاستعلام أو تصحيحه قبل تنفيذه
مشغّلات التنفيذ
المشغّلات التلقائية
| المشغّل | مثال | الوصف |
|---|---|---|
print() / repr() | print(ds) | عرض النتائج |
len() | len(ds) | الحصول على عدد الصفوف |
.columns | ds.columns | الحصول على أسماء الأعمدة |
.dtypes | ds.dtypes | الحصول على أنواع الأعمدة |
.shape | ds.shape | الحصول على الأبعاد |
.index | ds.index | الحصول على فهرس الصفوف |
.values | ds.values | الحصول على مصفوفة NumPy |
| التكرار | for row in ds | التكرار على الصفوف |
to_df() | ds.to_df() | التحويل إلى pandas |
to_pandas() | ds.to_pandas() | اسم بديل لـ to_df |
to_dict() | ds.to_dict() | التحويل إلى قاموس |
to_numpy() | ds.to_numpy() | التحويل إلى مصفوفة |
.equals() | ds.equals(other) | مقارنة كائنات DataStore |
العمليات التي تظل مؤجّلة التنفيذ
| العملية | القيمة المعادة | الوصف |
|---|---|---|
filter() | DataStore | يضيف عبارة WHERE |
select() | DataStore | يضيف تحديد الأعمدة |
sort() | DataStore | يضيف ORDER BY |
groupby() | LazyGroupBy | يُعِدّ GROUP BY |
join() | DataStore | يضيف JOIN |
ds['col'] | ColumnExpr | مرجع عمود |
ds[['col1', 'col2']] | DataStore | تحديد الأعمدة |
التنفيذ على ثلاث مراحل
المرحلة 1: بناء استعلام SQL (مؤجَّل)
المرحلة 2: نقطة التنفيذ
المرحلة 3: عمليات DataFrame (إن وُجدت)
عرض خطط التنفيذ
explain() لمعرفة ما سيجري تنفيذه:
Query
Response
verbose=True للحصول على مزيد من التفاصيل:
التخزين المؤقت
كيف يعمل التخزين المؤقت
إبطال صلاحية ذاكرة التخزين المؤقت
التحكم اليدوي في ذاكرة التخزين المؤقت
دمج عمليات SQL وPandas
العمليات المتوافقة مع SQL
filter(),where()select()groupby(),agg()sort(),orderby()limit(),offset()join(),union()distinct()- عمليات على الأعمدة (العمليات الحسابية، والمقارنة، ودوال السلاسل النصية)
عمليات خاصة بـ Pandas فقط
apply()مع دوال مخصّصةpivot_table()مع عمليات تجميع معقّدةstack(),unstack()- عمليات على كائنات DataFrame بعد تنفيذها
مسارات العمل الهجينة
اختيار محرّك التنفيذ
الوضع التلقائي (الافتراضي)
فرض استخدام محرك chDB
فرض استخدام محرك pandas
اعتبارات الأداء
جيد: طبّق التصفية مبكرًا
سيئ: طبّق التصفية متأخرًا
جيد: اختر الأعمدة مبكرًا
جيد: دع SQL يتولى العمل
ملخص أفضل الممارسات
- سلسِل العمليات قبل التنفيذ - ابنِ الاستعلام بالكامل، ثم شغِّله مرة واحدة
- طبّق التصفية مبكرًا - قلّل البيانات عند المصدر
- حدّد الأعمدة التي تحتاجها فقط - يحسّن تقليم الأعمدة الأداء
- استخدم
explain()لفهم آلية التنفيذ - صحّح الأخطاء قبل التشغيل - دع SQL يتولى التجميعات - ClickHouse مُحسَّن لهذا الغرض
- انتبه إلى مشغّلات التنفيذ - تجنّب التشغيل المبكر غير المقصود
- استخدم ذاكرة التخزين المؤقت بحكمة - افهم متى تُبطَل صلاحية ذاكرة التخزين المؤقت