نماذج Power BI نادرًا ما تنكسر في يوم واحد، بل تكبر تدريجيًا. يُنسخ مقياس لتجربة فكرة، ويُستورد عمود احتياطًا، وتُكرر صفحة من أجل اجتماع. لا أحد يحذف شيئًا لأن لا أحد يعرف ما الذي يمكن حذفه بأمان. وبعد سنة يصبح النموذج بطيئًا في التحديث وصعب التعديل ومليئًا بأشياء لا يستطيع أحد شرحها.
لذلك بنينا أداة مجانية لـ فحص صحة نموذج Power BI. ولنُظهر ما تجده على نموذج يستطيع أي شخص تنزيله وفحصه بنفسه، شغّلناها على أحد النماذج التجريبية العامة من Microsoft: COVID-19 US Tracking Sample، المنشور بترخيص MIT. كانت النتيجة 85 من 100 (درجة من DataArcus لهذا الفحص، وليست تقييمًا من Microsoft). هذا ما وجدته الأداة وما يعنيه كل اكتشاف لأي نموذج.
النموذج الذي فحصناه
4 جداول و16 عمودًا و10 مقاييس وعلاقتان، وتقرير فيه صفحتان و67 visual. نموذج صغير ومنشور، ومع ذلك فيه ملاحظات: كل نموذج يجمعها كلما تغيّر. واستغرق الفحص كله أقل بكثير من ثانية. حُدّث في 16 أكتوبر 2026: يتبع الفحص الآن الاستثناءات الموثقة من Microsoft، فلم يعد يعدّ عمودين محسوبين يحتاجان DAX ولا أربعة مقاييس نصية بلا تنسيق رقمي. ارتفعت النتيجة من 84 إلى 85. السبب، قاعدة بقاعدة.
- 4 من 16 عمودًا (25%) غير مستخدمة إطلاقًا: لا في visual ولا فلتر ولا مقياس ولا علاقة ولا ترتيب ولا قاعدة أمان.
- إشارتان مرجعيتان (bookmarks) من 12 ما زالتا تشيران إلى عمود لم يعد موجودًا في النموذج.
- خيار Auto date/time مفعّل، فيحتفظ Power BI بجدول تاريخ مخفي لعمود التاريخ.
- عمودان محسوبان على جداول مستوردة يمكن بناؤهما في Power Query بدلًا من ذلك.
- بالإضافة إلى أمور أصغر: مقياس واحد غير مستخدم، وعمودا مفتاح ظاهران، وعلاقة على مفتاح نصي.
1. ربع الأعمدة لم يُستخدم أبدًا
كل عمود مستورد يستهلك ذاكرة ووقت تحديث سواء نظر إليه أحد أم لا. والأعمدة النصية ذات القيم الكثيرة المختلفة، مثل الأسماء والملاحظات والمعرّفات، هي الأعلى تكلفة. الأعمدة غير المستخدمة هنا رمز المقاطعة (FIPS) وعلامة للأقاليم الأمريكية وعمودان في جدول مساعد مخفي. في نموذج تجريبي صغير تكلفتها قليلة، أما في نموذج فيه ملايين الصفوف فقد يأخذ عمود معرّف واحد غير مستخدم جزءًا كبيرًا من حجمه.
الحل هو حذفها من Power Query وليس إخفاؤها، فالعمود المخفي ما زال يُحمَّل ويُخزن. وتكتب الأداة لك خطوة Table.RemoveColumns لكل جدول. وملاحظة مهمة: "غير مستخدم" تعني غير مستخدم في هذا التقرير، فإن كانت تقارير أخرى متصلة بنفس النموذج فراجعها أولًا.
2. إشارتان مرجعيتان تشيران إلى عمود لم يعد موجودًا
هذا نوع من الملاحظات لا يبحث عنه أحد. في النموذج عمود County Name، لكن الإشارتين المرجعيتين "Blue States" و"Pink States" ما زالتا تشيران إلى عمود County Name - Copy الذي لم يعد موجودًا. الصفحات تبدو سليمة، والإشارة القديمة مخبأة داخل الإشارات المرجعية. وعند إعادة تسمية عمود أو مقياس أو حذفه لا ينبهك Power BI إلى كل visual أو فلتر أو إشارة مرجعية كانت تستخدمه.
تعرض الأداة كل حقل مكسور ومكان استخدامه، فيستغرق الإصلاح دقائق: حدّث الإشارة المرجعية أو الـ visual، أو استبدل الحقل.
3. خيار Auto date/time ما زال مفعّلًا
عند تفعيل Auto date/time ينشئ Power BI Desktop جدول تاريخ مخفيًا لكل عمود تاريخ في جدول مستورد ليس في جهة "many" من علاقة. هنا جدول واحد فقط، لكن في نموذج حقيقي فيه أعمدة تاريخ كثيرة تتراكم هذه الجداول المخفية، وتقول إرشادات Microsoft نفسها إن كل واحد منها يزيد حجم النموذج ويطيل وقت التحديث.
الحل: أضف جدول تاريخ واحدًا وعلّمه كجدول تاريخ (أداة مولّد التقويم المجانية تكتبه لك)، وانقل الـ visuals إليه، ثم أوقف الخيار من File > Options and settings > Options > Current File > Data Load > Time intelligence. إيقافه يحذف الجداول المخفية، فراجع أولًا كل visual كان يستخدمها.
4. أشياء صغيرة تتراكم
- أعمدة محسوبة على جداول مستوردة. اثنان: اسم مقاطعة مبني بـ RELATED، وعمود قيمته دائمًا "USA". تفضّل إرشادات Microsoft إضافة الأعمدة في Power Query أو في المصدر، فهي عادة تُضغط بشكل أفضل ولا تنتظر تحميل كل الجداول. الحالات والوفيات اليومية أعمدة محسوبة أيضًا، لكنها تُحسب من اليوم السابق، وهذا يحتاج DAX، لذلك لا يعدّها الفحص.
- مفاتيح ظاهرة ومفتاح نصي. عمودا مفتاح في جهة "many" ظاهران في قائمة الحقول فيسحبهما معدّو التقارير بالخطأ، وعلاقة واحدة تربط على رمز نصي بدل رقم.
- مقياس لا يستخدمه شيء. واحد من المقاييس العشرة لا يغذي أي visual، لا مباشرة ولا عبر مقاييس أخرى. والأداة تتبع هذه السلاسل، وهو أمر شبه مستحيل يدويًا.
- المقاييس النصية لا تحتاج تنسيقًا. أربعة مقاييس هنا بلا تنسيق، لكنها كلها تُرجع نصًا (ملاحظات ونصوص أزرار)، لذلك لا يعدّها الفحص. أما في مقياس رقمي فغياب التنسيق هو ما يجعل البطاقة تعرض 0.34 لهامش قيمته 33.8% (0.3378): بلا علامة النسبة المئوية، وبمنزلتين عشريتين تقرّبان القيمة.
ما لم تجده الأداة: FILTER على جدول كامل. لا يوجد في هذا النموذج، لكننا نراه كثيرًا لأنه أول طريقة يتعلمها معظمنا لكتابة مقياس مفلتر:
// Scans every row of the table
Online Sales =
CALCULATE ( [Sales], FILTER ( Sales, Sales[Channel] = "Online" ) )
// Filters one column: much faster
Online Sales =
CALCULATE ( [Sales], KEEPFILTERS ( Sales[Channel] = "Online" ) )
استخدام FILTER(Table, ...) كفلتر داخل CALCULATE يبني جدولًا بكل أعمدة كل الصفوف المطابقة ويطبقه كاملًا، أما فلترة العمود الذي يهمك فقط فتجعل المحرك يعمل على هذا العمود وحده. وفي أغلب النماذج تكون النتيجة واحدة، وتضمن KEEPFILTERS ذلك عندما يفلتر slicer نفس العمود، فبدونها يحل فلتر العمود محل الـ slicer.
كيف يعمل الفحص، ولماذا يبقى ملفك معك
تقرأ الأداة قالب Power BI (.pbit). يحتوي القالب نموذجك وتصميم تقريرك لكن بدون أي صفوف بيانات، لذلك يبقى صغيرًا حتى للنماذج الضخمة. يُفتح الملف داخل صفحة المتصفح ولا يُرفع أبدًا. ترسم الأداة خريطة لكل مقياس والأعمدة والمقاييس التي يعتمد عليها، ثم تتبع كل visual وفلتر وعلاقة وقاعدة أمان لتعرف ما المستخدم فعلًا.
افحص نموذجك في ثلاث خطوات
- في Power BI Desktop اختر File > Export > Power BI template.
- أسقط ملف .pbit في أداة فحص صحة النموذج.
- ابدأ بقائمة "ابدأ بإصلاح هذه"، ثم انسخ سكربتات التنظيف وحمّل التوثيق لفريقك.
نموذج Microsoft نموذج عرض، فتكلفة هذه الملاحظات عليه قليلة. أما نموذج العمل الفعلي ففيه جداول أكثر وتاريخ أطول وأشخاص أكثر يعدّلونه، وغالبًا ما يُكتشف فيه أكثر. الفحص الأول يستغرق دقيقة واحدة، وغالبًا سيفاجئك.