كيفية استخدام PROC DELETE في SAS (مع مثال)

دليل أكاديمي شامل يشرح كيفية استخدام إجراء PROC DELETE في برنامج SAS لحذف مجموعات البيانات الفردية والمتعددة بكفاءة، مع أمثلة برمجية وتطبيقية مفصلة.

Mohammed looti أكاديمي وباحث متخصص في علم النفس
تاريخ النشر
تمت المراجعة العلمية · د. مروة عبد العظيم · 20 أكتوبر، 2026
مراجعة وتدقيق علمي معتمد تاريخ التدقيق: 20 أكتوبر، 2026
د. مروة عبد العظيم دكتوراه في علم النفس
عضو هيئة التدريس • جامعة كربلاء
معايير التدقيق والاعتماد السريري

يخضع هذا المحتوى لمعايير ضبط الجودة والتدقيق العلمي والأكاديمي الصارمة في شبكة علم النفس العربي، لضمان صحة المعلومات ودقتها السريرية ومطابقتها لأحدث الأدلة والبراهين الصادرة عن الجمعيات النفسية والطبية المعتمدة (APA / WHO).

تعد إدارة الموارد الحاسوبية والبيانات المخزنة ركيزة أساسية من ركائز التحليل الإحصائي المتقدم وهندسة البيانات في بيئات العمل الأكاديمية والمهنية. ومع تنامي الاعتماد على حزم التحليل المعقدة، تبرز الحاجة الملحة إلى أدوات برمجية دقيقة وفعالة قادرة على التحكم في دورة حياة البيانات من الإنشاء إلى المعالجة وحتى الإتلاف البرمجي المقنن. وفي منظومة ساس (Statistical Analysis System – SAS)، يحتل التحكم في الملفات المؤقتة والمستديمة مكانة استراتيجية لتحقيق استقرار الذاكرة وسرعة المعالجة الحسابية، لا سيما عند التعامل مع مجموعات ضخمة ناتجة عن المسوح الإحصائية والبحوث السلوكية والطبية الحيوية.

يقف إجراء PROC DELETE في طليعة هذه الأدوات البرمجية، بوصفه أداة حاسوبية متخصصة ومصممة بدقة لإزالة مجموعات البيانات غير الضرورية، والجداول المشتقة، وفهارس التخزين مباشرة من مساحات العمل أو من وحدات التخزين الفيزيائية الدائمة. ورغم البساطة النحوية الظاهرة لأمره البرمجي، إلا أن وراءه آليات نظام عميقة تتصل بمحركات الوصول إلى البيانات وإدارة الملفات على مستوى نظام التشغيل الأساسي، مما يجعله مكوناً لا غنى عنه في بناء خطوط معالجة البيانات المستقرة والمحسنة حوسبياً.

يهدف هذا الدليل الأكاديمي الشامل إلى تفكيك الأبعاد الفنية والتطبيقية لإجراء PROC DELETE في بيئة ساس؛ متناولاً خلفيته البرمجية، وقواعده التركيبية، وأفضل الممارسات المنهجية لتنفيذه بأمان، فضلاً عن مقارنته التقنية بالبدائل المتاحة واستكشاف مشكلاته الشائعة. كما يستعرض الدليل نماذج برمجية موثقة وحالات دراسية تفصيلية تضمن للباحثين والمحللين إدارة مواردهم الحاسوبية بكفاءة عالية واحترافية متناهية دون المساس بسلامة البيانات الأصلية.

1. مقدمة شاملة لإجراء PROC DELETE في بيئة ساس (SAS)

1.1 ماهية إجراء PROC DELETE وأهميته الحوسبية

يُعرَّف إجراء PROC DELETE في بيئة ساس الحوسبية بأنه أداة خدمية مدمجة (Utility Procedure) تهدف حصراً إلى إزالة جداول البيانات ومكونات المكتبات، مثل الجداول العادية والجداول الافتراضية (Views) والفهارس، بصورة نهائية ومباشرة. ينتمي هذا الإجراء إلى النواة الأساسية للنظام (Base SAS)، حيث تم تصميمه ليتعامل مع طبقة واصفات الأعضاء (Member Descriptors) في مساحات التخزين، متجاوزاً بذلك الحاجة إلى فتح الملفات أو قراءة سجلاتها سطراً بسطر كما يحدث في خطوة البيانات التقليدية (DATA Step).

من الضروري هنا التمييز المنهجي الحاسم بين إلغاء تخصيص المكتبات والحذف الفعلي للبيانات؛ فإلغاء التخصيص عبر مسح مسار المكتبة (LIBNAME Clear) يؤدي ببساطة إلى قطع الرابط المنطقي بين جلسة ساس والمجلد الفيزيائي، مما يبقي الملفات سليمة تماماً على القرص الصلب. في المقابل، يمثل تنفيذ PROC DELETE أمراً بحذف الكيان الفيزيائي أو المنطقي للجدول بصورة نهائية من وسط التخزين، وهو ما يعيد المساحة المحجوزة مباشرة إلى نظام التشغيل أو المساحة المشتركة المخصصة لجلسة العمل الحالية.

تكتسب هذه العملية أهمية حاسوبية قصوى في معالجة البيانات الإحصائية والمسوح السكانية والنفسية الكبيرة؛ إذ تتطلب هذه التحليلات في الغالب توليد عشرات الجداول الوسيطة أثناء المعايرة والتحويل والدمج. وإن بقاء هذه الملفات دون تنظيف يؤدي إلى تضخم حاد في مساحة القرص المؤقت (Temporary Storage) واستنزاف الذاكرة المتاحة لجلسة العمل، مما قد يقود إلى توقف التحليل فجأة بسبب نفاد المساحة.

تاريخياً، ارتبط نظام ساس بجهود التطوير الأولى عام 1966 في جامعة ولاية كارولاينا الشمالية بقيادة أنتوني بار (Anthony J. Barr) وجيمس جودنايت (James Goodnight)، قبل تأسيس معهد ساس (SAS Institute Inc.) رسمياً في عام 1976. وخلال عقود سابقة، كان PROC DELETE متداولاً كإجراء غير موثق رسمياً (Undocumented Procedure) يتناقله المبرمجون المحترفون كحل مختصر وفعال. ومع ذلك، ونظراً لكفاءته الواضحة والحاجة الماسة إليه، أعاد معهد ساس هندسة الإجراء واختباره وتوثيقه بالكامل كإجراء إنتاجي مدعوم رسمياً مع إطلاق الإصدار SAS 9.4 في يوليو 2013، ليمتد دعمه اليوم بكفاءة تامة إلى بيئات التحليلات السحابية مثل SAS Viya وجداول CAS التابعة لها.

1.2 سياق الاستخدام في تحليل البيانات والبحوث الأكاديمية

في سياق التحليلات الإحصائية المتقدمة والبحوث التجريبية، تتألف خطوط المعالجة غالباً من مراحل متعددة؛ تبدأ بتنظيف المتغيرات، وإعادة الترميز، وحساب المؤشرات التراكمية، ومطابقة السجلات. تنتج كل مرحلة من هذه المراحل مجموعات بيانات مؤقتة تفقد قيمتها الوظيفية بمجرد الانتقال إلى المرحلة اللاحقة، مثل مصفوفات المسافات الإقليدية أو مخرجات الانحدار الوسيطة. يوفر PROC DELETE الآلية المثلى لإعدام هذه الجداول في اللحظة التي تنتهي فيها الحاجة إليها، مما يحفظ بيئة العمل نقية ومنظمة.

يسهم هذا الحذف الممنهج في الحد من استهلاك الذاكرة العشوائية ومساحة التخزين المؤقتة المتاحة على الخوادم البحثية المشتركة. ففي الدراسات التي تتعامل مع عينات ضخمة تتجاوز ملايين السجلات، يؤدي الاحتفاظ بالملفات المؤقتة إلى خنق النظام والتأثير السلبي على بقية الباحثين العاملين على نفس الخادم. ومن ثم، فإن تفريغ المساحات التخزينية يضمن بقاء النظام في أعلى مستويات الاستجابة الحسابية، ويقلل من عمليات القراءة والكتابة المكثفة (I/O Bottlenecks) التي تبطئ التنفيذ.

علاوة على ذلك، يمثل الإجراء ركيزة أمنية بالغة الأهمية عند التعامل مع البيانات الحساسة المحمية بضوابط الخصوصية الأخلاقية والأكاديمية، كالسجلات الصحية الشخصية أو استجابات الاختبارات النفسية الدقيقة. فبمجرد إنتاج المؤشرات التجميعية المجهلة، يصبح التخلص الفوري والنهائي من الجداول الوسيطة التي تحتوي على معرّفات فردية أو بيانات خام مطلباً حتمياً للامتثال لسياسات الأمان ومنع أي تسريب غير مقصود للبيانات أثناء استمرار جلسة التحليل.

2. البنية النحوية والقواعد البرمجية الأساسية لإجراء PROC DELETE

2.1 الصيغة التركيبية العامة (Syntax Architecture)

تتميز الصيغة التركيبية لإجراء PROC DELETE بالبساطة البالغة والتجريد الوظيفي، حيث تتألف من الكلمة المفتاحية المحددة للإجراء، متبوعة بالوسيطة الإلزامية الخاصة بتحديد مجموعات البيانات المراد إزالتها. تأتي الصيغة القياسية العامة على النحو التالي:

PROC DELETE DATA = dataset_name;
RUN;

تبدأ كتلة التعليمات البرمجية بالعبارة PROC DELETE، التي تخطر مترجم ساس بنيّة استدعاء الأداة الخدمية لحذف الملفات. تلي ذلك الوسيطة DATA=، والتي تستقبل اسماً واحداً أو قائمة من الأسماء التي تشير إلى الجداول أو الكائنات المطلوب حذفها. وتنتهي العبارة الأولى بالفاصلة المنقوطة (Semicolon)، وهي المحدد النحوي الإلزامي لإنهاء أي عبارة في لغة ساس، ويعقب ذلك عبارة التنفيذ RUN متبوعة بفاصلة منقوطة، والتي تمثل حداً تنفيذياً يوجّه المترجم لمعالجة الكتلة السابقة فوراً.

عندما يستقبل مترجم ساس هذه الكتلة، فإنه لا يقوم بتحميل محرك معالجة البيانات الشامل، بل يتجه مباشرة إلى طبقة التحكم في المكتبة (Library Engine) المعنية. يتحقق النظام أولاً من وجود الكيان المستهدف في جدول المحتويات الداخلي للمكتبة، ثم يرسل أمراً بحذف الواصف الفيزيائي وتفريغ المساحة المخصصة له على وسيط التخزين. يتم هذا المسار التنفيذي السريع دون تفحص محتويات الأسطر أو الأعمدة، مما يفسر السرعة الفائقة للإجراء مقارنة بالطرق البرمجية الأخرى.

2.2 محددات التسمية وقواعد الإشارة إلى مجموعات البيانات

يخضع تحديد مجموعات البيانات في إجراء PROC DELETE للقواعد الصارمة لنظام التسمية في لغة ساس. يتعامل الإجراء بكفاءة مع التسميات أحادية المستوى (Single-level names) والتسميات ثنائية المستوى (Two-level dataset names). في حالة استخدام اسم أحادي المستوى مثل “mydata”، يفترض النظام افتراضياً أن الملف يقع ضمن المكتبة المؤقتة المسماة WORK، وبالتالي يقوم بالبحث عنه وحذفه من هناك فقط.

أما عند الحاجة إلى حذف ملف من مساحة تخزين مخصصة أو دائمة، فيجب استخدام التسمية ثنائية المستوى بصيغة (libref.dataset)، حيث تمثل “libref” البادئة المرجعية للمكتبة المرتبطة مسبقاً بمسار محدد على القرص الصلب، تليها نقطة فاصلة، ثم اسم مجموعة البيانات المستهدفة، مثل “mylib.survey_results”. وتضمن هذه الصياغة الدقيقة توجيه أمر الحذف إلى الموقع الفيزيائي المعني تحديداً، وتمنع الحذف العرضي للملفات التي قد تحمل نفس الاسم في مكتبات أخرى.

تخضع الأسماء المدخلة لجميع الشروط القياسية لتسمية الكائنات في ساس؛ بحيث لا يتجاوز طول الاسم 32 حرفاً، وأن يبدأ بحرف لاتيني أو بشرطة سفلية (_)، وألا يحتوي على رموز خاصة أو مسافات فارغة، مع استثناء إمكانية استخدام الأسماء الحرفية المتقدمة (Name Literals) إذا تم تفعيل الخيارات المخصصة لذلك في النظام. ويعد الالتزام بهذه الضوابط النحوية شرطاً أساسياً لضمان معالجة الأمر دون توليد أخطاء تركيبية في سجل النظام.

3. إعداد بيئة العمل وتعريف مسارات المكتبات (LIBNAME Statement)

3.1 آلية عمل عبارة LIBNAME وربط المجلدات

تمثل عبارة LIBNAME حجر الزاوية في بنية إدارة البيانات داخل بيئة ساس، حيث تعمل بمثابة الجسر المنطقي الذي يربط اسماً مرجعياً قصيراً داخل البرنامج (Libref) بمسار مجلد تخزين فيزيائي على وسائط التخزين الخاصة بنظام التشغيل. تأتي البنية التركيبية الأساسية للأمر كالتالي: LIBNAME libref ‘physical_folder_path’;. بمجرد تنفيذ هذا السطر، يكتسب المحلل القدرة على الإشارة إلى أي ملف داخل ذلك المجلد مباشرة باستخدام الاسم المرجعي المختصر.

يعد التحديد الدقيق للمسار الفيزيائي في عبارة LIBNAME أمراً بالغ الحساسية، لا سيما في المشروعات التحليلية التي تعتمد على إجراءات الحذف مثل PROC DELETE؛ إذ إن أي خطأ في تحديد المجلد قد يربط البيئة البرمجية بموقع يحتوي على ملفات تشغيلية حساسة أو مجموعات بيانات أصلية، مما يعرضها لخطر الحذف العرضي عند تنفيذ أوامر غير موجهة بدقة. لذا، يتوجب على الباحثين دائماً عزل البيانات التجريبية والمؤقتة في مسارات مخصصة ومعرفة بوضوح.

يجب كذلك مراعاة الفروق الهيكلية في كتابة المسارات بين بيئات التشغيل المختلفة؛ ففي بيئات أنظمة التشغيل مثل لينكس أو يونكس (Linux/Unix)، تكون أسماء المسارات حساسة لحالة الأحرف (Case-sensitive) وتستخدم الشرطة المائلة للأمام (/path/to/data)، بينما تعتمد بيئات ويندوز (Windows) عادة على الشرطة المائلة للخلف (C:pathtodata) وتكون غير حساسة لحالة الأحرف في الغالب. ويضمن الفهم الواعي لهذه الفروق التقنية قابلية تشغيل الأكواد البرمجية عبر منصات حوسبية متباينة دون تعطل آليات إدارة وحذف البيانات.

3.2 التحقق من صحة الربط واكتشاف المجلدات المستهدفة

قبل الشروع في كتابة أوامر الحذف، تقتضي قواعد الحوسبة الرصينة فحص سجل النظام (SAS Log) للتأكد من نجاح ربط المكتبة المحددة. يطبع النظام رسالة تأكيد إيجابية تشير إلى أن الاسم المرجعي قد تم تخصيصه بنجاح للمسار المطلوب، إلى جانب بيان المحرك المستخدم ونظام الملفات. وفي حال فشل الربط بسبب خطأ في المسار أو انعدام وجود المجلد، يسجل النظام خطأ صريحاً يمنع الباحث من التقدم في معالجة بيانات غير موجودة.

عقب إتمام الربط، يتعين استكشاف محتويات المكتبة للتحقق العيني والبرمجي من وجود مجموعات البيانات المستهدفة بالحذف بدقة. يمكن تحقيق ذلك من خلال متصفح المكتبات في الواجهات الرسومية، أو برمجياً عبر استدعاء إجراءات الفهرسة الاستكشافية. يساعد هذا الإجراء التمهيدي في تجنب محاولة حذف جداول وهمية أو جداول تحتوي على معطيات لم يكتمل تحليلها بعد.

إضافة إلى ذلك، يلعب التحقق من صلاحيات نظام التشغيل دوراً جوهرياً في تمكين إجراء PROC DELETE من العمل؛ إذ يتطلب حذف أي ملف امتلاك المستخدم لصلاحيات الكتابة والتعديل (Write/Modify Permissions) على مستوى المجلد الفيزيائي الأساسي. فإن كانت المكتبة مربوطة في وضع القراءة فقط (Read-only)، أو كان الباحث لا يمتلك الامتيازات الإدارية الكافية على مسار الشبكة، سيفشل الإجراء في تنفيذ مهمته وسيقوم السجل بإصدار إشعارات تفيد برفض الوصول والحذف لأسباب أمنية خارجية.

4. حذف مجموعة بيانات مفردة باستخدام PROC DELETE (مع مثال تفصيلي)

4.1 صياغة الكود لحذف جدول بيانات واحد

تتطلب عملية حذف جدول بيانات منفرد صياغة برمجية دقيقة تتحدد فيها الإحداثيات المنطقية للملف بدقة تامة. يبدأ الكود بتعريف المكتبة إذا كان الملف مخزناً في موقع مستديم، أو الاكتفاء بالاسم المباشر إذا كان ضمن مكتبة العمل WORK. لنفترض أن لدينا جدولاً تجريبياً يحمل اسم data1 ونرغب في حذفه من الذاكرة أو التخزين بعد الانتهاء من استخدامه الإحصائي، فإن التركيب البرمجي يكون على النحو الآتي:

/* صياغة أمر حذف جدول بيانات فردي */
PROC DELETE DATA = data1;
RUN;

إذا كان الجدول مخزناً داخل مكتبة محددة مسبقاً باسم mylib، فيتم تضمين البادئة المرجعية مباشرة ضمن وسيطة الحذف على النحو التالي:

/* حذف جدول محدد من مكتبة دائمة */
PROC DELETE DATA = mylib.data1;
RUN;

عند تنفيذ هذه الكتلة البرمجية المباشرة، يقوم النظام بتفسير الأمر فور مصادفة عبارة RUN، متجاوزاً أي تحميل زائد للذاكرة الحسابية، حيث يتم حذف الفهارس والملفات المرافقة للجدول بصورة تزامنية وفورية.

4.2 تحليل تطبيقي للبيانات قبل وبعد عملية الحذف

لتوضيح هذا السياق التطبيقي بمثال تجريبي واقعي، سنقوم أولاً بإنشاء مجموعة بيانات تجريبية تحاكي دراسة مسحية مختصرة تحتوي على متغيرات الاستجابة لأفراد العينة، ثم نقوم بحذفها ومراقبة سلوك بيئة التشغيل وسجل النظام خطوة بخطوة. يتم إنشاء البيانات عبر الكود التالي:

/* إنشاء مجموعة بيانات تجريبية باسم data1 */
data data1;
    input SubjectID Score Group $;
    datalines;
101 85.5 Control
102 92.0 Treatment
103 78.5 Control
104 88.0 Treatment
;
run;

بمجرد تشغيل هذه الكتلة، يظهر في سجل النظام إشعار رسمي يؤكد إنشاء مجموعة البيانات WORK.DATA1 متضمنة 4 ملاحظات و3 متغيرات، وتصبح مرئية في نافذة محتويات المكتبة. والآن، لتنفيذ عملية التطهير وإزالة الملف بصورة نهائية، نقوم بتمرير إجراء الحذف المخصص:

/* تنفيذ الحذف المباشر لمجموعة البيانات data1 */
proc delete data = data1;
run;

عقب إتمام هذا الأمر، وعند فحص نافذة مستكشف المكتبات (SAS Explorer) أو الدليل المرجعي لمكتبة WORK، يُلاحظ الاختفاء الفوري لجدول data1 من القائمة. أما عند مراجعة سجل النظام (SAS Log)، فإن المترجم يقدم سجلاً توثيقياً ناصعاً، حيث تظهر رسالة تفيد بنجاح حذف العضو: “NOTE: Deleting WORK.DATA1 (memtype=DATA)”. توضح هذه العبارة بوضوح أن الكائن المحذوف يتبع لمكتبة WORK، ونوعه عبارة عن مجموعة بيانات (DATA)، مما يؤكد إتمام العملية الحوسبية بنجاح دون أي عوائق تشغيلية.

5. حذف مجموعات بيانات متعددة في خطوة واحدة (مع مثال تفصيلي)

5.1 تقنيات سرد مجموعات البيانات المتعددة ضمن الأمر

يوفر إجراء PROC DELETE مرونة استثنائية عندما يتعلق الأمر بإدارة البيانات واسعة النطاق، حيث يتيح حذف عدة مجموعات بيانات متزامنة ضمن استدعاء برمجي واحد للوسيطة DATA=. تعتمد الصيغة المعتمدة لسرد الملفات المتعددة على الفصل بين أسمائها بمسافات فارغة (Blank Spaces)، ودون استخدام فواصل أو علامات ترقيم بين الأسماء. يتيح هذا النمط للمحلل تجميع عمليات التنظيف في نقطة مركزية واحدة داخل البرنامج.

تتمثل الصيغة القياسية لسرد الجداول المتعددة في النحو التالي:

PROC DELETE DATA = dataset1 dataset2 dataset3;
RUN;

علاوة على ذلك، يدعم الإجراء قوائم النطاقات الرقمية المتسلسلة (Numeric Range Lists) للجداول التي تشترك في بادئة اسمية وتنتهي بأرقام متتابعة، كأن نكتب: DATA = trial1-trial10;، وهو ما يؤدي إلى مسح الجداول العشرة دفعة واحدة. ومع ذلك، من الضروري الانتباه إلى قيد تقني حاسم وهو أن PROC DELETE لا يدعم استخدام محددات المطابقة البديلة المعتمدة على النقطتين (Colon Wildcards) مثل DATA = temp:;، إذ تتطلب مثل هذه الأنماط استخدام إجراءات بديلة مثل PROC DATASETS.

كذلك يتيح الإجراء إمكانية حذف جداول تنتمي إلى مكتبات متعددة ومختلفة في سطر أمر واحد، شريطة استخدام التسمية ثنائية المستوى لكل ملف بصورة مستقلة، مثل: DATA = work.data1 mylib.data2 reslib.data3;. يمنح هذا السلوك المبرمج مرونة استثنائية لتنظيف الملفات المؤقتة والمخرجات الوسيطة عبر مستودعات تخزين متنوعة وبأعلى كفاءة حوسبية ممكنة.

5.2 دراسة حالة برمجية لحذف عدة ملفات تجريبية

لتطبيق تقنية الحذف الجماعي، سنقوم بتهيئة بيئة تجريبية تتضمن إنشاء مجموعتي بيانات مستقلتين تحاكيان قياسات إحصائية متعددة، ثم تطبيق أمر حذف موحد واستعراض السجل الناتج. نبدأ بإنشاء المجموعتين التجريبيتين data2 و data3 عبر الكود التالي:

/* تجهيز البيئة بإنشاء مجموعتي بيانات تجريبيتين */
data data2;
    input ID MetricA;
    datalines;
1 14.2
2 15.8
3 13.9
;
run;

data data3;
    input ID MetricB;
    datalines;
1 105.4
2 110.1
3 99.8
;
run;

بعد التحقق من ظهور الجداول في سجل النظام والمكتبة المخصصة، نقوم بكتابة الأمر الموحد لتنفيذ الحذف التتابعي المتزامن لجميع هذه الملفات دون الحاجة إلى تكرار استدعاء الإجراء عدة مرات:

/* حذف مجموعات البيانات المتعددة في خطوة إجرائية واحدة */
proc delete data = data2 data3;
run;

من الناحية الحوسبية، تتفوق هذه المعالجة الجماعية على أسلوب الحذف التكراري الفردي؛ فاستدعاء PROC DELETE لمرة واحدة يقلل من عدد دورات المعالجة وتفسير الأكواد داخل بيئة ساس، ويوجه ضربة واحدة لوحدات التخزين لتفريغ القيود المنطقية للملفات المحددة. وعند معاينة سجل ساس عقب التنفيذ، نجد تأكيداً صريحاً لكل ملف تم استهدافه:

NOTE: Deleting WORK.DATA2 (memtype=DATA).
NOTE: Deleting WORK.DATA3 (memtype=DATA).

يؤكد هذا الناتج نجاح العملية البرمجية لكافة الملفات دون استثناء، مما يعيد ضبط مساحة العمل المؤقتة وتهيئتها لاستقبال المراحل اللاحقة من التحليل الإحصائي بكامل الطاقة الاستيعابية للجهاز.

6. إدارة الذاكرة وتحسين كفاءة المعالجة الإحصائية

6.1 الأثر الحوسبي لتحرير المساحات التخزينية في معالجة البيانات

تشكل إدارة المساحات التخزينية والذاكرة عنصراً حاسماً في الحوسبة الإحصائية الحديثة؛ حيث إن تراكم مجموعات البيانات المؤقتة الناتجة عن خوارزميات الاستنساخ المتعدد (Bootstrapping)، والتحليلات البايزية، وإعادة العينات، يفرض ضغطاً هائلاً على مجلد العمل المؤقت (SAS Work Directory). فعندما يمتلئ هذا المجلد المخصص على القرص الصلب، تنهار بيئة العمل وتتوقف التحليلات قسرياً، وهو ما يمثل هدراً فادحاً للوقت في المعالجات الطويلة التي تستمر لساعات أو أيام.

يعمل الاستخدام المدروس لإجراء PROC DELETE كصمام أمان يحافظ على تدفق واستقرار الموارد الحاسوبية. فبمجرد استخراج النتائج الإحصائية التجميعية أو ملخصات النماذج، يؤدي الحذف الفوري للجداول التأسيسية الضخمة إلى إعادة تخصيص مساحات التخزين على القرص الصلب وتخفيف العبء على ذاكرة التخزين المؤقت للنظام (Cache Memory). وتزداد هذه الضرورة الحوسبية إلحاحاً عند معالجة عينات قومية ضخمة تشتمل على ملايين السجلات ومئات المتغيرات المستمرة والمتقطعة.

تظهر الاستراتيجيات الاحترافية لتحسين الأداء الحوسبي أن التنظيف الاستباقي للملفات المؤقتة يقلل من تجزئة القرص (Disk Fragmentation) ويمنع اختناقات الإدخال والإخراج (I/O Bottlenecks). فبدلاً من ترك ساس ليدير مئات الملفات في نهاية الجلسة ككتلة واحدة، تضمن المعالجة المتزامنة للحذف بقاء المؤشرات الداخلية لقاعدة بيانات النظام في أدنى مستويات الاستهلاك، مما يرفع الكفاءة التشغيلية الإجمالية للمشروع البرمجي.

6.2 تطبيق الحذف المرحلي في خطوط المعالجة البيانية (Data Pipelines)

في خطوط المعالجة البيانية المتقدمة، يتم تقسيم مسار العمل إلى مراحل مترابطة ومتتابعة؛ تبدأ من استيراد البيانات الخام، ثم معالجتها وتنظيفها، ثم النمذجة الإحصائية، وتنتهي بتوليد التقارير. ولتحقيق أعلى درجات الانسيابية، يُدمج PROC DELETE كخطوة تنظيف نهائية داخل نصوص الماكرو (SAS Macros) التي تقود هذه المسارات بصورة مؤتمتة ومغلقة، بحيث لا يترك الماكرو أي أثر تخزيني خلفه باستثناء النتيجة النهائية المستهدفة.

من الأمثلة الحيوية على ذلك، التخلص التلقائي من مصفوفات الارتباط المؤقتة، وجداول بواقي الانحدار، وملفات التكرار الناتجة أثناء اختيار المتغيرات خطوة بخطوة (Stepwise Selection) بعد اكتمال النمذجة. فبقاؤها لا يضيف أي فائدة تحليلية، بل قد يتسبب في حدوث أخطاء فادحة في حال تم استدعاء جدول وسيط يحمل اسماً مشابهاً في خطوة إحصائية لاحقة، مما يؤدي إلى تلويث نتائج التحليل.

علاوة على ذلك، يقلل الحذف المرحلي المنتظم من المخاطر التشغيلية الناتجة عن تضارب أسماء الملفات وتكرارها في دورات التحليل التكرارية (Iterative Loops). فحينما يمر البرنامج عبر مئات الحلقات التكرارية لمعالجة مجموعات فرعية من البيانات، يضمن تفريغ الملفات الوسيطة في نهاية كل دورة عدم استخدام بيانات قديمة عن طريق الخطأ في الدورة التالية، مما يعزز الثقة والنزاهة العلمية في مخرجات التحليل.

7. مقارنة تقنية: PROC DELETE مقابل البدائل البرمجية في SAS

7.1 المقارنة مع إجراء PROC DATASETS وتطبيقاته

يعد إجراء PROC DATASETS من أوسع وأشمل الإجراءات الخدمية في نظام ساس لإدارة مكتبات البيانات؛ فهو إجراء تفاعلي متكامل (Interactive Procedure) يتيح تعديل أسماء المتغيرات، وتغيير التسميات التوضيحية، وإصلاح الفهارس، بالإضافة إلى حذف مجموعات البيانات عبر عبارة DELETE الفرعية التابعة له. وهنا يبرز التساؤل المنهجي حول مواطن التمايز بينه وبين PROC DELETE المتخصص.

من حيث البنية النحوية، يتطلب PROC DATASETS عادة استدعاء الإجراء، وتحديد اسم المكتبة، ثم استخدام عبارة الحذف الخاصة متبوعة بعبارة QUIT لإنهاء الجلسة التفاعلية للإجراء، مثل:

proc datasets library = work nolist;
    delete dataset1 dataset2;
quit;

بالمقابل، يوفر PROC DELETE صياغة بالغة الإيجاز والمباشرة؛ فهو إجراء أحادي المهمة لا يحتاج إلى دخول بيئة تفاعلية ولا يتطلب عبارة QUIT، بل ينفذ أمره مباشرة بعبارة RUN. ومن حيث سرعة التنفيذ الحوسبية، يتفوق PROC DELETE بفارق طفيف في السيناريوهات التي تستهدف حذف ملفات محددة بالاسم بصورة سريعة وفردية، نظراً لانخفاض الأعباء التشغيلية وتجاوز فتح فهرس المكتبة بالكامل.

ومع ذلك، تظهر أفضلية PROC DATASETS بوضوح عند الحاجة إلى تنفيذ عمليات حذف شاملة ومتفرقة؛ مثل خيار KILL الذي يقوم بإفراغ المكتبة بالكامل من كافة الجداول دفعة واحدة دون تسميتها، أو دعمه لعبارات المطابقة الشاملة المعتمدة على النقطتين (مثل delete temp:;) لحذف كافة الملفات التي تبدأ ببادئة معينة. وبناءً على ذلك، يميل المبرمجون إلى اختيار PROC DELETE للحذف الانتقائي الفوري داخل الأكواد الخطية، بينما يلجأون إلى PROC DATASETS لإدارة المكتبات الموسعة والمشاريع الإنشائية الضخمة.

7.2 المقارنة مع استخدام خطوة البيانات والوظائف المدمجة

يلجأ بعض المبرمجين المبتدئين في ساس أحياناً إلى حذف محتويات الجداول عبر محاكاتها داخل خطوة البيانات (DATA Step)، كأن يتم إنشاء مجموعة بيانات فارغة تحمل نفس الاسم لإلغاء الملاحظات، أو استدعاء عبارات تحكم شرطية توقف التسجيل. يمثل هذا التوجه خطأً حوسبياً فادحاً؛ إذ إن خطوة البيانات تؤدي إلى إعادة بناء الملف الفيزيائي واستهلاك دورات قراءة وكتابة مكثفة، وتحديث كامل لبيانات الواصفات، بدلاً من إعدامها المباشر من مساحة التخزين كما يفعل PROC DELETE.

من جهة أخرى، يوفر نظام ساس وظائف خدمية برمجية متقدمة تعمل على مستوى نظام التشغيل مباشرة، ومن أبرزها دالة FDELETE ودوال ربط الملفات الخارجية (FILENAME Function). تكمن النقطة الفاصلة في أن دالة FDELETE مصممة للتعامل مع الملفات الخارجية الخام وغير المنظمة من وجهة نظر ساس؛ مثل ملفات النصوص (.txt)، وجداول القيم المفصولة بفواصل (.csv)، ومستندات وورد وبي دي إف، حيث تقوم بحذف الملف من القرص وفقاً لمساره الفيزيائي الخالص.

أما PROC DELETE فهو إجراء متخصص حصرياً في كائنات ساس ومجموعات البيانات المهيكلة والمسجلة ضمن محركات المكتبات وسجلات التحليل، بالإضافة إلى جداول CAS في بيئات Viya. وفيما يلي جدول مقارنة تحليلي يبرز الفروق الهيكلية بين هذه الأدوات الأساسية:

وجه المقارنة PROC DELETE PROC DATASETS دالة FDELETE
النطاق الوظيفي حذف جداول ساس محددة مباشرة إدارة وتعديل وحذف محتويات المكتبات بالكامل حذف أي ملف فيزيائي خام على القرص الصلب
الصيغة التركيبية بسيطة وموجزة جداً (PROC / RUN) تفاعلية تتطلب وسائط وتختتم بـ QUIT دالة برمجية تستدعى ضمن DATA Step أو Macro
دعم النطاقات والبادئات يدعم النطاق الرقمي (1-10) فقط يدعم محددات المطابقة الشاملة (:) وخيار KILL لا يدعم، تتطلب مساراً فردياً للملف
استهلاك الموارد الحوسبية منخفض جداً وسريع الاستجابة منخفض، ولكن يحمل عبء تحميل تفاعلي أكبر منخفض، يعتمد كلياً على أوامر نظام التشغيل
نوع الملفات المستهدفة جداول، كائنات، فهارس ساس حصراً أعضاء مكتبات ساس بالكامل ملفات النظام غير المهيكلة كـ CSV و TXT

8. الأخطاء الشائعة واستكشاف المشكلات وحلها (Troubleshooting)

8.1 أخطاء التسميات والمسارات المرجعية المفقودة

يعد الوقوع في أخطاء التسمية البرمجية من أكثر العثرات شيوعاً عند تطبيق إجراء PROC DELETE؛ ويحدث ذلك بصورة نموذجية عندما يشير المبرمج إلى اسم مجموعة بيانات غير موجودة في المكتبة المحددة، إما بسبب خطأ إملائي في كتابة الاسم أو لأن الخطوة الإحصائية السابقة التي يُفترض أن تنشئ الجدول قد فشلت في التنفيذ. في مثل هذه الحالات، يتوقف الإجراء ويسجل النظام تحذيراً أو خطأ في سجل ساس يفيد بتعذر العثور على الملف المطلوب لحذفه.

كما تنشأ مشكلات التسمية المرجعية عن انتهاء صلاحية جلسة ربط المكتبة (LIBNAME) أو إعادة تشغيل بيئة العمل دون إعادة تفعيل عبارات الربط التأسيسية. فإذا حاول الباحث تنفيذ أمر الحذف بصيغة: proc delete data=mylib.data1; run; دون أن تكون mylib معرّفة بدقة في الجلسة الحالية، سيُصدر النظام الخطأ الشهير: “ERROR: Libref MYLIB is not assigned”، مما يمنع الحذف تماماً.

يتطلب استكشاف هذه المشكلات وحلها الفحص المنتظم لنافذة سجل النظام (Log). وينبغي للمحلل تتبع ألوان النصوص ودلالات الرموز البرمجية؛ فالأخطاء الواردة باللون الأحمر تشير إلى توقف المعالجة، مما يستوجب مراجعة نصوص البرمجة والتأكد من توافق الأسماء حرفياً قبل تنفيذ الإجراء، مع تفضيل فحص وجود الجداول مسبقاً قبل محاولة حذفها لتجنب تلويث السجل برسائل الأخطاء التنفيذية.

8.2 مشكلات أقفال الملفات وتعارض الوصول المتزامن

تمثل مشكلة أقفال الملفات (File Locks) أحد التحديات المعقدة في بيئات العمل المشتركة أو عند استخدام البرامج والواجهات المفتوحة المتعددة. تنشأ هذه المشكلة عندما يحاول إجراء PROC DELETE حذف مجموعة بيانات تكون مفتوحة في نفس اللحظة للعرض أو القراءة داخل نافذة عرض الجداول في واجهة SAS Enterprise Guide، أو SAS Studio، أو مستخدمة من قِبل جلسة تحليلية أخرى متزامنة. في هذا السيناريو، يفرض نظام التشغيل ومحرك ساس قفلاً حصرياً يمنع تعديل أو إتلاف الملف لحماية تكامل البيانات من الانهيار.

عند حدوث ذلك، يفشل الإجراء فوراً في تنفيذ عملية الحذف، ويسجل النظام تحذيراً أو رسالة خطأ توضح أن الملف قيد الاستخدام بواسطة مستخدم آخر أو جلسة عمل متزامنة (File is locked / in use). ولحل هذا التعارض الحوسبي، يجب أولاً إغلاق كافة النوافذ التفاعلية وعارضات البيانات التي تعرض الجدول المستهدف داخل واجهة التطوير، لتمكين تحرير القفل المنطقي المطبق عليه.

برمجياً، يمكن تحرير الأقفال والتأكد من إمكانية الوصول الحصري للملف عبر التحقق من إغلاق كافة مؤشرات القراءة (Data Viewers)، وفي بيئات الخوادم والأنظمة المتقدمة، قد يستلزم الأمر مراجعة مدير النظام لإنهاء الجلسات العالقة التي تحتجز الملف دون نشاط فعلي. كما ينبغي التأكد من عدم تعارض صلاحيات الحذف على مستوى سياسات الأمان والحماية المفروضة على خوادم التخزين الشبكي، والتي تمنع تنفيذ أوامر الحذف إن لم تكن صلاحيات الكتابة الكاملة ممنوحة للمستخدم صراحة.

9. أفضل الممارسات الأكاديمية والتوثيقية عند حذف البيانات

9.1 بروتوكولات الأمان ومنع فقدان البيانات غير القابل للاسترداد

يتسم إجراء PROC DELETE بطبيعة تشغيلية حاسمة؛ فالحذف الذي يجريه هو حذف فيزيائي نهائي لا يقبل التراجع أو الاسترداد عبر سلة المهملات البرمجية أو ميزات التراجع المألوفة في برامج تحرير النصوص. وبمجرد اكتمال دورة الإجراء وتوثيق الملاحظة في السجل، تُمحى البيانات وفهارسها بصورة كلية من وحدة التخزين. يفرض هذا الواقع التشغيلي تطبيق بروتوكولات أمان بالغة الدقة لتفادي الكوارث البرمجية وفقدان بيانات الأبحاث التي قد تتطلب شهوراً لجمعها.

تتمثل القاعدة الذهبية الأولى في إنشاء نسخ احتياطية دورية ومعزولة (Offline or Immutable Backups) لكافة مجموعات البيانات الخام قبل تشغيل أي خطوط معالجة آلية تتضمن أوامر حذف. لا يجوز بأي حال من الأحوال تطبيق إجراء PROC DELETE على ملفات البيانات الأولية المباشرة التي لم تُستنسخ وتؤمَّن في مساحات تخزين للقراءة فقط ومستقلة عن مسار المشروع الحالي.

علاوة على ذلك، يُنصح بتطبيق آليات التحقق المزدوج والتأكيد البرمجي؛ فلا ينبغي أبداً تنفيذ أكواد الحذف بصورة جماعية دون تدقيق ومراجعة بصرية دقيقة لمسارات المكتبات والأسماء المستهدفة. ويجب حصر استخدام PROC DELETE في بيئات التطوير والتحليل على المجلدات المخصصة للمخرجات المؤقتة والمرحلية، مع عزل مسارات الإنتاج والبيانات النهائية تماماً عن أي سكربتات تشتمل على هذا الإجراء.

9.2 التوثيق المنهجي والامتثال لسلامة البيانات البحثية

في الأبحاث الأكاديمية والسريرية الخاضعة لمعايير الممارسة الإكلينيكية الجيدة (GCP) والنزاهة العلمية الصارمة، لا يقتصر التحليل على استخراج النتائج فحسب، بل يمتد إلى توفير سجل تتبع كامل وموثق (Audit Trail) لكافة التعديلات والتحويلات التي طرأت على البيانات منذ دخولها وحتى حفظ النتائج الختامية. ومن ثم، يجب أن تخضع عمليات الحذف عبر PROC DELETE لنفس الدرجة من التوثيق الصارم.

يتحقق ذلك عبر التعليق البرمجي التوضيحي المفصل (Inline Code Comments) قبل كل استدعاء لإجراء الحذف؛ حيث يشرح الباحث بوضوح طبيعة الجدول المراد حذفه، والخطوة التحليلية التي تولد منها، والعلة المنهجية التي تجعل بقاءه غير ضروري في المراحل التالية. لا يسهم هذا التوثيق في حماية التحليل من الأخطاء العرضية فحسب، بل يمنح المراجعين المستقلين رؤية واضحة حول مسار تدفق البيانات وطهارة خطوط التجميع البياني.

أخيراً، يضمن الامتثال لأخلاقيات البحث العلمي ومعايير الهيئات التنظيمية التأكد من أن التخلص من البيانات يتوافق مع سياسات الاحتفاظ بالبيانات الأكاديمية وحماية خصوصية المشاركين. فالحذف المنظم للجداول الوسيطة التي تحتوي على معلومات محددة للهوية بعد إتمام دمج المؤشرات المجهلة يمثل ركيزة من ركائز الأخلاقيات الرقمية في البحث العلمي الرصين، ويبرهن على الاحترافية العالية للمحلل في إدارة أصول البيانات الحساسة.

10. أتمتة الحذف وإدارة دورة حياة البيانات عبر SAS Macro

10.1 بناء ماكرو مخصص للتحقق والحذف المشروط

تمثل لغة الماكرو في ساس (SAS Macro Facility) أداة قوية للغاية تتيح للمحللين تحويل الإجراءات الثابتة إلى دوال ديناميكية ذكية ومؤتمتة. ولتفادي أخطاء محاولة حذف مجموعات بيانات غير موجودة أو تالفة، يمكن بناء ماكرو برمجي مخصص يقوم أولاً بفحص وجود مجموعة البيانات المستهدفة باستخدام الدوال المدمجة، ومن ثم اتخاذ القرار البرمجي بتشغيل PROC DELETE من عدمه دون توليد أي رسائل خطأ في سجل النظام.

يوضح النموذج البرمجي التالي كيفية بناء هذه الوحدة النمطية بكفاءة واحترافية:

/* ماكرو للتحقق من وجود الجدول وحذفه مشروطاً */
%macro SafeDelete(dsname);
    /* التحقق من وجود الكائن عبر دالة الفحص الوجودي */
    %if %sysfunc(exist(&dsname)) %then %do;
        proc delete data = &dsname;
        run;
        %put NOTE: تم حذف مجموعة البيانات &dsname بنجاح وأمان.;
    %end;
    %else %do;
        %put NOTE: مجموعة البيانات &dsname غير موجودة مسبقاً، تم تجاوز الحذف.;
    %end;
%mend SafeDelete;

عند استدعاء هذا الماكرو عبر كتابة %SafeDelete(data1);، يقوم النظام فوراً باستدعاء الدالة %sysfunc(exist(...))؛ فإذا كانت مجموعة البيانات data1 موجودة بالفعل، يتم تنفيذ PROC DELETE وتوثيق ذلك في سجل ساس عبر عبارة %put المخصصة. أما إذا كان الجدول غير موجود أصلاً، فيتجاوز النظام خطوة الحذف دون محاولة قسرية تقود إلى تسجيل خطأ، وهو ما يوفر بنية برمجية ذات مناعة عالية ضد التعطل في خطوط التحليل المؤتمتة.

10.2 تنظيم هياكل المشاريع الكبيرة ودورات التحليل المتكررة

في المشاريع البرمجية الكبيرة، يتم توظيف هذه الوحدات المؤتمتة في نهاية خطوط التجميع البياني المعقدة، وفي دورات التحليل المعتمدة على محاكاة مونت كارلو أو النمذجة التقاطعية (Cross-validation). ففي مثل هذه السيناريوهات، يتكرر تنفيذ السكربت آلاف المرات؛ مما يجعل دمج ماكرو الحذف المشروط في نهاية كل حلقة تكرارية ضمانة حتمية لإعادة ضبط البيئة المحلية والمكتبات المؤقتة إلى وضعها الأولي النظيف، ومنع تسريب الذاكرة (Memory Leaks).

إن إتقان توظيف PROC DELETE في سياقه البرمجي والمنهجي الصحيح يحول إدارة البيانات من مجرد خطوة ثانوية إلى ممارسة هندسية بالغة الرقي. وباتباع المبادئ المعروضة في هذا الدليل، يمتلك المحلل والباحث الأكاديمي السيطرة المطلقة على استهلاك الموارد الحوسبية، وضمان التدفق السلس للبيانات، وحماية المشروعات الإحصائية من الانهيارات البرمجية المفاجئة، بما يرسخ أعلى معايير الجودة والصلابة في التحليلات العلمية المتقدمة.

المراجع

SAS Institute Inc. (2013). SAS 9.4 Statements: Reference. SAS Institute Inc., Cary, NC. https://documentation.sas.com/

SAS Institute Inc. (2020). Base SAS Procedures Guide. SAS Institute Inc., Cary, NC. https://documentation.sas.com/

SAS Institute Inc. (2023). SAS Viya Operations and Programming Documentation. SAS Institute Inc., Cary, NC. https://documentation.sas.com/

★

تقييم هذا المحتوى

5.0 / 5 • 7 تقييمات

اقتباس هذا المقال

looti, M. (2026, أكتوبر 20). كيفية استخدام PROC DELETE في SAS (مع مثال). عرب سايكلوجي. https://arabpsychology.com/statistics/how-to-use-proc-delete-in-sas-with-example/
looti, Mohammed. “كيفية استخدام PROC DELETE في SAS (مع مثال).” عرب سايكلوجي, 20 أكتوبر 2026, https://arabpsychology.com/statistics/how-to-use-proc-delete-in-sas-with-example/.
looti, Mohammed. “كيفية استخدام PROC DELETE في SAS (مع مثال).” عرب سايكلوجي. أكتوبر 20, 2026. https://arabpsychology.com/statistics/how-to-use-proc-delete-in-sas-with-example/.