4.4التحسين والأداء (Performance Analyzer)
الأساسي في 30 ثانية
- لا نخمّن البطء، بل نقيسه بالوقت: محلل الأداء (Performance Analyzer) (عرض) يقيس كل تصور — استعلام DAX مقابل العرض.
- استعلام DAX بطيء = نموذج أو مقياس يُراجع؛ عرض بطيء = تصور مثقل.
- ترتيب العلاجات: النموذج أولًا (نجمة، حذف الأعمدة غير الضرورية في Power Query، تقليل الأعداد المميزة، تعطيل التاريخ/الوقت التلقائي)، ثم المقاييس، وأخيرًا المرئيات (أقل في الصفحة).
حالة مصغّرة متسلسلة — زينب تتعقّب بطء تقريرها
زينب، مراقبة التسيير في مؤسسة صغيرة ومتوسطة للصناعات الغذائية بالجزائر، تتلقى الملاحظة: تقرير مبيعاتها «بطيء». وبدل التخمين، تطبّق المنهج. تفتح عرض ← محلل الأداء، تبدأ التسجيل وتحدّث المرئيات: فينفجر مدرج تكراري في زمن التنفيذ. تقرأ التفصيل: الوقت في «استعلام DAX» — فالمذنب هو النموذج، لا التصور. تعود إلى Power Query فتحذف الأعمدة التي لا يستخدمها التقرير، وتقلّل الأعداد المميزة، وتلغي تحديد «التاريخ/الوقت التلقائي» في الخيارات. تعيد القياس: الكسب واضح. وهكذا وُلد منعكسها: قِس، وشخّص، وخفّف — النموذج، فالمقاييس، ثم المرئيات.
حالة مستقلة لهذا القسم: تعود في الدرس والمخطط والسكريبت وتحدي 48 ساعة للقسم 4.4.
1. القياس أولًا
التقرير البطيء تقرير ميت: بعد ثوانٍ قليلة ينسحب المستخدمون. يبدأ التشخيص بـمحلل الأداء (Performance Analyzer) (عرض ← محلل الأداء): نبدأ التسجيل، ونحدّث المرئيات، فيعرض كل تصور وقته المفصّل. ويُقرأ بندان: استعلام DAX (كلفة النموذج والمقاييس) والعرض (رسم التصور). لم تعد زينب تخمّن: بل تقرأ ترتيب الأوقات.
2. قراءة البندين
التفسير بسيط: استعلام DAX بطيء = النموذج أو المقياس يُراجع؛ عرض بطيء = التصور مثقل (نقاط كثيرة، فئات كثيرة). ويُنسخ الاستعلام نفسه («نسخ الاستعلام») لتحليل دقيق في DAX Studio. هكذا تحدّد زينب مدرجها المذنب وتعرف أين تتصرف قبل أن تلمس عشوائيًا.
3. هرمية العلاجات
تتبع العلاجات ترتيبًا مجرّبًا: النموذج أولًا (نجمة، حذف الأعمدة غير الضرورية في Power Query، تقليل الأعداد المميزة، تعطيل التاريخ/الوقت التلقائي)، ثم المقاييس (متغيرات VAR، مرشحات موجهة)، وأخيرًا المرئيات (أقل في الصفحة — كل تصور = استعلام). تحل قائمة التحقق هذه الغالبية العظمى من حالات البطء الحقيقية، ونعيد القياس لقياس الكسب. تطبّقها زينب بهذا الترتيب دون تجاوز خطوة.
🔎 مثال ملموس — 🔎 مثال ملموس — قائمة تحقق النظافة
منهج زينب، بالترتيب:
1. محلل الأداء ← بدء ← تحديث المرئيات
2. الأبطأ: الوقت في «استعلام DAX» أم في «العرض»؟
3. Power Query: حذف الأعمدة غير المستخدمة (كل منها يثقل)
4. الخيارات: إلغاء تحديد «التاريخ/الوقت التلقائي»
5. إعادة القياس: قياس الكسب.
القراءة: نتصرف أولًا على النموذج، عند المصدر (Power Query)، لا على التصور.
الدرس: إعادة القياس جزء من المنهج — فنقيس الكسب.
مفردات القسم
- محلل الأداء (Performance Analyzer)
- عرض ← محلل الأداء: بدء التسجيل، وتحديث المرئيات — يعرض كل تصور وقته المفصّل.
مثال بسيط: زينب تقيس فيه تقرير مبيعاتها.
ما ليس كذلك: تخمين البطء بالعين.
رد فعل: بطء ← قِس أولًا.
- استعلام DAX مقابل العرض (DAX Query vs Visual Display)
- البندان الموقوتان: استعلام بطيء = نموذج/مقياس يُراجع؛ عرض بطيء = تصور مثقل.
مثال بسيط: ترى زينب أن وقتها في استعلام DAX.
ما ليس كذلك: رقم واحد دون تفصيل.
رد فعل: استعلام ← نموذج/مقياس؛ عرض ← تصور.
- نظافة النموذج (Model Hygiene)
- حذف الأعمدة غير المستخدمة (في Power Query، لا بعدها)، وتقليل الأعداد المميزة، وتعطيل التاريخ/الوقت التلقائي.
مثال بسيط: تحذف زينب الأعمدة غير المستخدمة عند المصدر.
ما ليس كذلك: استيراد كل شيء «احتياطًا».
رد فعل: كل عمود مستورد يثقل.
- نسخ الاستعلام (Copy Query)
- يُنسخ كل مقياس بطيء (نسخ الاستعلام) للتحليل في DAX Studio — أداة الممارسين المجانية.
مثال بسيط: تنسخ زينب استعلام التصور المذنب.
ما ليس كذلك: إعادة كتابة المقياس عشوائيًا.
رد فعل: تحليل دقيق ← DAX Studio.
- تصورات كثيرة (Too Many Visuals)
- كل تصور = استعلام: صفحة بـ15 تصورًا ترسل 15 استعلامًا مع كل نقرة. فالرصانة تحسين.
مثال بسيط: تخفّف زينب صفحتها المثخنة.
ما ليس كذلك: تكديس التصورات «ليبدو غنيًا».
رد فعل: تصورات أقل = استعلامات أقل.
في التطبيق — تطبيق عملي — قِس، وشخّص، وخفّف
- عرض ← محلل الأداء ← بدء التسجيل ← تحديث المرئيات: اقرؤوا ترتيب الأوقات.
- حلّلوا الأبطأ: الوقت في «استعلام DAX» (راجعوا المقياس/النموذج) أم في «العرض» (بسّطوا التصور)؟
- النظافة: في Power Query، احذفوا الأعمدة التي لا يستخدمها التقرير؛ وتحقّقوا في الخيارات من إلغاء تحديد «التاريخ/الوقت التلقائي».
- أعيدوا القياس بعد التحسين: قياس الكسب جزء من المنهج.
سكريبت خطوة بخطوة — التحسين كما تفعل زينب (7 دقائق)
1) عرض ← محلل الأداء ← بدء التسجيل، ثم تحديث المرئيات: يعرض كل تصور وقته. 2) حدّدوا الأبطأ وانظروا البند الغالب: «استعلام DAX» (نموذج/مقياس) أم «العرض» (تصور مثقل). 3) عودوا إلى Power Query واحذفوا الأعمدة التي لا يستخدمها التقرير. 4) الخيارات ← ألغوا تحديد «التاريخ/الوقت التلقائي». 5) قلّلوا عدد تصورات الصفحة، ثم أعيدوا القياس لقياس الكسب.
إذا كان المذنب في استعلام DAX، فانسخوا استعلام التصور (نسخ الاستعلام) لتحليله في DAX Studio.
قالب للنسخ واللصق — قائمة تحقق الأداء الخاصة بي
1. القياس: عرض ← محلل الأداء ← بدء ← تحديث
2. القراءة: استعلام DAX (نموذج/مقياس) أم العرض (تصور)؟
3. النموذج أولًا: Power Query ← حذف الأعمدة غير الضرورية؛
تقليل الأعداد المميزة؛ الخيارات ← إلغاء «التاريخ/الوقت التلقائي»
4. المقاييس بعدها: متغيرات VAR، مرشحات موجهة
5. المرئيات أخيرًا: أقل في الصفحة (كل تصور = استعلام)
6. إعادة القياس: قياس الكسب.
القياس
تطلق زينب محلل الأداء قبل أي تحسين: فيُعيَّن المذنب.
النموذج أولًا
تحذف زينب الأعمدة غير الضرورية في Power Query وتقلّل الأعداد المميزة.
التاريخ/الوقت التلقائي
تلغي زينب تحديد التاريخ/الوقت التلقائي: انتهت الجداول المخفية لكل عمود تاريخ.
الرصانة
تزيل زينب تصورات من صفحتها: استعلامات أقل مع كل نقرة.
✓ ممارسات جيدة
- القياس قبل التحسين (محلل الأداء).
- اتّباع الترتيب النموذج ← المقاييس ← المرئيات.
- حذف الأعمدة غير الضرورية في Power Query، عند المصدر.
✗ أخطاء شائعة
- تخمين البطء بدل قياسه.
- إبقاء التاريخ/الوقت التلقائي (جداول مخفية، ملف ضخم).
- تكديس التصورات (كل تصور = استعلام).
النقاط الأساسية
- لا نخمّن البطء، بل نقيسه: محلل الأداء أولًا.
- استعلام DAX بطيء = نموذج/مقياس؛ عرض بطيء = تصور مثقل.
- ترتيب العلاجات: النموذج ← المقاييس ← المرئيات.
- كل عمود مستورد يثقل: احذفوا غير الضروري في Power Query؛ وعطّلوا التاريخ/الوقت التلقائي.
تحدي 48 ساعة — طبّقوه غدًا
كما تفعل زينب، مرّروا تقريرًا على محلل الأداء: حدّدوا أبطأ تصور والبند الغالب فيه (استعلام DAX أم عرض). احذفوا أعمدة غير ضرورية في Power Query، وألغوا تحديد التاريخ/الوقت التلقائي، ثم أعيدوا القياس وسجّلوا الكسب.
- أستطيع قياس تقرير وقراءة استعلام DAX مقابل العرض.
- أعرف ترتيب العلاجات: النموذج ← المقاييس ← المرئيات.
- أعرف تخفيف نموذج عند المصدر (أعمدة، أعداد مميزة، التاريخ/الوقت التلقائي).
أسئلة شائعة
ملف .pbix لديّ ضخم: كيف أصغّره؟
المشتبه بهم المعتادون: الأعمدة غير الضرورية (خصوصًا المعرفات الفريدة والنصوص الطويلة)، وهرميات التواريخ التلقائية (جدول مخفي لكل عمود تاريخ)، والبيانات فائقة التفصيل (الساعة حين يكفي اليوم). وأداة VertiPaq Analyzer المجانية (DAX Studio) تسرد وزن كل عمود بدقة.
هل يكون DirectQuery أسرع من Import؟
العكس في الغالب: Import (المضغوط في الذاكرة) هو الأسرع. وDirectQuery يُبرَّر بحداثة الزمن الحقيقي أو بأحجام يتعذّر استيرادها — لا بالسرعة أبدًا.
ما الترتيب الصحيح لعلاجات البطء؟