النماذج المركبة في Power BI: مزج الاستيراد والاستعلام المباشر
لسنوات، كان على ممارسي Power BI الاختيار بين: وضع الاستيراد (سريع، ولكن البيانات حديثة مثل آخر تحديث) أو DirectQuery (حديث دائمًا، ولكن من المحتمل أن يكون بطيئًا ومحدودًا بالاستعلام). غيرت النماذج المركبة هذا الحساب من خلال السماح لكلا وضعي التخزين بالتعايش في نموذج واحد - مع العلاقات التي تعبر حدود الوضع.
تفتح هذه الإمكانية سيناريوهات كانت مستحيلة في السابق: لوحة معلومات تعرض سجل المعاملات الكامل بالأمس من قسم الاستيراد إلى جانب بيانات الوقت الفعلي اليوم من مصدر DirectQuery، وكلها مرتبطة بجدول فرص Salesforce المباشر الذي تم الاستعلام عنه عند الطلب. إن فهم كيفية عمل النماذج المركبة - ومتى تخلق مشكلات أكثر مما تحل - يعد معرفة أساسية لأي ممارس متقدم في Power BI.
الوجبات الرئيسية
- تمزج النماذج المركبة بين أوضاع الاستيراد والاستعلام المباشر والتخزين المزدوج ضمن نموذج دلالي واحد
- يوفر وضع الاستيراد ضغط VertiPaq وأداء الاستعلام داخل الذاكرة للبيانات التاريخية
- يقوم وضع DirectQuery بالاستعلام عن المصدر في الوقت الفعلي — فالحداثة ممتازة، ولكن الأداء يعتمد على المصدر
- يمكن أن تعمل جداول الوضع المزدوج إما كاستيراد أو استعلام مباشر وفقًا لسياق الاستعلام
- العلاقات التي تتجاوز حدود وضع التخزين تزيد من تعقيد الاستعلام ويمكن أن تسبب مشكلات في الأداء
- تعمل جداول التجميع في النماذج المركبة على تحسين أداء استعلام DirectQuery بشكل كبير
- يعمل DirectQuery لمجموعات بيانات Power BI (التسلسل) على تمكين النماذج المركبة المبنية على أعلى النماذج الدلالية المشتركة
- العلاقات المحدودة بين جداول الاستيراد وDirectQuery تقيد بعض وظائف DAX
أوضاع التخزين: الاستيراد، والاستعلام المباشر، والمزدوج
قبل فهم النماذج المركبة، يجب فهم كل وضع تخزين على حدة.
وضع الاستيراد يقوم بتحميل البيانات من النظام المصدر إلى محرك تخزين VertiPaq الموجود في الذاكرة في Power BI. يتم ضغط البيانات (غالبًا 10:1 أو أفضل) ويتم تخزينها كبيانات عمودية تنفذ الاستعلامات التحليلية بسرعة كبيرة - عادةً ما تستغرق أجزاء من الثانية لمعظم الاستعلامات في مجموعات البيانات ما يصل إلى مئات الملايين من الصفوف. القيد: البيانات حديثة فقط مثل آخر تحديث مجدول أو يدوي.
وضع DirectQuery يستعلم عن النظام المصدر في الوقت الفعلي عندما يتفاعل المستخدم مع التقرير. يقوم محرك Power BI بترجمة استعلامات DAX إلى استعلامات مصدر أصلية (SQL لقواعد البيانات العلائقية، وما إلى ذلك) وتنفيذها مقابل المصدر. تكون البيانات محدثة دائمًا، لكن الأداء يعتمد كليًا على أداء استعلام النظام المصدر. ستتعامل قاعدة البيانات التحليلية المخصصة والمفهرسة جيدًا مع استعلامات DirectQuery بشكل جيد؛ قد تؤدي قاعدة بيانات إنتاج OLTP في ظل تحميل المعاملات الثقيل إلى نتائج بطيئة وغير متناسقة.
الوضع المزدوج هو وضع هجين خاص متوفر في النماذج المركبة. يتم تخزين جدول الوضع المزدوج فعليًا كاستيراد (يتم تحميل البيانات إلى VertiPaq)، ولكن يمكن أيضًا الاستعلام عنه عبر DirectQuery عندما يتطلب سياق الاستعلام ذلك. يُستخدم هذا بشكل أساسي لجداول الأبعاد المشتركة التي تحتاج إلى المشاركة في العلاقات مع كل من جداول حقائق الاستيراد وDirectQuery.
متى يجب استخدام النماذج المركبة
النماذج المركبة مناسبة لسيناريوهات محددة. إنها تضيف تعقيدًا غير مبرر عندما تلبي البنى الأبسط المتطلبات.
استخدم النماذج المركبة عندما:
| السيناريو | العمارة |
|---|---|
| البيانات الحالية في الوقت الحقيقي + التحليل التاريخي | DirectQuery لجدول الحقائق اليوم، الاستيراد للجدول التاريخي |
| بيانات تاريخية كبيرة جدًا + أبعاد متوسطة الحجم | حقائق DirectQuery بأبعاد الاستيراد (النموذج التجميعي) |
| أنظمة مصادر متعددة بمتطلبات نضارة مختلفة | استيراد + DirectQuery من مصادر مختلفة |
| البناء على نموذج دلالي مشترك (مجموعة بيانات Power BI) | DirectQuery لتسلسل مجموعات بيانات Power BI |
| سعة ممتازة مع طاولات التجميع | الوضع المختلط مع مجموعات محددة من قبل المستخدم |
لا تستخدم النماذج المركبة عندما:
- يتم تحديث نموذج الاستيراد الكامل بسرعة كافية ويكون زمن وصول البيانات مقبولاً (في معظم الحالات)
- لا يمكن لمصدر DirectQuery التعامل مع تحميل الاستعلام (قواعد بيانات OLTP للإنتاج)
- هناك حاجة إلى حسابات DAX معقدة - تحد النماذج المركبة من بعض وظائف DAX
- يحتاج الأمان على مستوى الصف إلى تجاوز حدود وضع التخزين (التنفيذ المعقد)
تكوين أوضاع التخزين
في Power BI Desktop، يتم تعيين وضع التخزين لكل جدول. انقر بزر الماوس الأيمن فوق جدول في عرض النموذج → خصائص → متقدم → وضع التخزين.
بالنسبة لنموذج مركب نموذجي يحتوي على جدول حقائق كبير في DirectQuery وأبعاد في الاستيراد:
- اضبط
FactSales→ وضع التخزين: DirectQuery - اضبط
DimDate→ وضع التخزين: Dual (يخدم كلاً من استعلامات الاستيراد واستعلام DirectQuery) - اضبط
DimProduct→ وضع التخزين: استيراد (جدول صغير، مخبأ بالكامل) - اضبط
DimCustomer→ وضع التخزين: Dual (يستخدم في العلاقات عبر المصادر) - اضبط
RealtimeSales(بيانات اليوم) → وضع التخزين: DirectQuery
عند تكوين جدول باعتباره DirectQuery أو تغيير أوضاع التخزين، يعرض Power BI تحذيرات حول العلاقات والقيود المحتملة. قم بمراجعة هذه العناصر بعناية - فهي تشير إلى المكان الذي قد يختلف فيه سلوك النموذج عن نموذج الاستيراد الخالص.
العلاقات في النماذج المركبة
تتصرف العلاقات بين الجداول ذات أوضاع التخزين المختلفة بشكل مختلف عن العلاقات ذات الأوضاع نفسها، ويعد فهم هذه الاختلافات أمرًا بالغ الأهمية لبناء النماذج التي تنتج نتائج صحيحة.
العلاقات المنتظمة تربط جدولين حيث يمكن للجانب "الأطراف" استخدام الجانب "الواحد" للتصفية. في نماذج الاستيراد، يكون كلا الجدولين في الذاكرة ويتم تنفيذ العلاقة في الذاكرة - بسرعة. في النماذج المركبة التي تحتوي على جدول استيراد واحد وجدول DirectQuery واحد، تؤدي العلاقة إلى فحص جدول لجدول واحد يتم استخدامه بعد ذلك لتصفية الجدول الآخر - مما قد يؤدي إلى إنشاء استعلامات كبيرة عبر الأوضاع.
يتم إنشاء العلاقات المحدودة تلقائيًا عندما يكون لجدول DirectQuery علاقة متعدد بمتعدد مع جدول استيراد، أو في بعض سيناريوهات الأوضاع المشتركة الأخرى. لا تدعم العلاقات المحدودة عوامل التصفية ثنائية الاتجاه وتقيد بعض وظائف DAX (على سبيل المثال، الوظائف التي تعتمد على مسار عامل تصفية العلاقة). يُبلغ Power BI عن علاقات محدودة في طريقة عرض النموذج بخط منقط بدلاً من خط متصل.
العلاقات عبر المصادر تربط الجداول من مصادر بيانات مختلفة تمامًا (على سبيل المثال، جدول من SQL Server متصل عبر DirectQuery وجدول من Salesforce متصل عبر اتصال DirectQuery آخر). تتطلب هذه العلاقات أن يكون أحد الجانبين جدولًا ثنائي الوضع - يجب أن يكون Power BI قادرًا على تحقيق جانب واحد من العلاقة في الذاكرة للانضمام إلى الجانب الآخر.
التأثير العملي لأنواع العلاقات هذه: قد تؤدي مقاييس DAX التي تعمل بشكل صحيح في نموذج استيراد خالص إلى نتائج أو أخطاء غير متوقعة في نموذج مركب. اختبر جميع المقاييس بعناية بعد تغيير أوضاع التخزين، خاصة تلك التي تتضمن USERELATIONSHIP، وCROSSFILTER، وCALCULATE مع وظائف التصفية المرتبطة بالعلاقة، والتجميعات عبر الجداول ذات الصلة.
جداول التجميع: نمط النموذج المركب الأساسي
يجمع نمط النموذج المركب الأكثر قيمة بين جدول حقائق DirectQuery كبير وجدول تجميع وضع الاستيراد الذي يلخص البيانات مسبقًا بمستوى أعلى من الدقة.
المشكلة: يعد جدول حقائق المبيعات المكون من 500 مليون صف في DirectQuery كبيرًا جدًا بحيث لا يمكن لمعظم أنظمة المصدر الاستعلام عنه بشكل تفاعلي - يستغرق كل مخطط أكثر من 10 ثوانٍ بينما ينفذ المصدر استعلامات مجمعة باهظة الثمن.
الحل: أنشئ مسبقًا جدول ملخص يجمع الحقيقة في بيانات يومية/شهرية/فئة المنتج، ثم قم باستيراد جدول الملخص هذا إلى Power BI. تصل معظم الاستعلامات (التي تكون على مستوى شهري أو ربع سنوي أو فئة) إلى تجميع الاستيراد السريع. فقط الاستعلامات التي تنتقل إلى مستوى المعاملة الفردية تعود إلى DirectQuery.
** إعداد التجميعات: **
أولاً، قم بإنشاء جدول التجميع في مستودع البيانات الخاص بك:
CREATE TABLE SalesByDayProduct AS
SELECT
SaleDateKey,
ProductKey,
CustomerSegmentKey,
RegionKey,
SUM(SalesAmount) as SalesAmount,
SUM(Quantity) as Quantity,
SUM(Cost) as Cost,
COUNT(*) as TransactionCount
FROM FactSales
GROUP BY SaleDateKey, ProductKey, CustomerSegmentKey, RegionKey;
قم باستيراد هذا الجدول إلى Power BI واضبط وضع التخزين على استيراد.
ثم قم بتكوين التجميع في Power BI:
- انقر بزر الماوس الأيمن على
SalesByDayProduct→ إدارة التجميعات - قم بتعيين كل عمود لعلاقته بجدول التفاصيل ووظيفة التلخيص (المجموع، المتوسط، العدد، إلخ)
- قم بتعيين عمود "التلخيص" (SalesAmount → Sum Maps إلى FactSales[SalesAmount] → Sum)
يقوم الآن محرك استعلام Power BI تلقائيًا بتوجيه الاستعلامات إلى جدول التجميع عندما يكون ذلك ممكنًا ويعود إلى جدول تفاصيل DirectQuery فقط عندما يتطلب الاستعلام تفاصيل على مستوى الصف لا يوفرها التجميع.
نتيجة الأداء مذهلة: التجميعات على مستوى الفئة والمستوى الزمني التي كانت تستغرق في السابق 15 ثانية تعود الآن في أقل من ثانية واحدة، بينما يظل خيار الانتقال إلى المعاملات الفردية متاحًا.
DirectQuery لمجموعات بيانات Power BI
قدم Power BI DirectQuery لمجموعات بيانات Power BI (وتسمى أيضًا "الاتصال المباشر مع النماذج المركبة" أو ببساطة "النماذج المركبة في مجموعات البيانات المشتركة"). يسمح هذا للمطور بإنشاء تقرير جديد أو مجموعة بيانات تستخدم مجموعة بيانات Power BI منشورة حالية كمصدر DirectQuery - مع إضافة جداول جديدة ومقاييس محسوبة وبيانات استيراد محلية.
حالة الاستخدام الرئيسية: تمتلك المؤسسة نموذجًا دلاليًا معتمدًا للمؤسسة يغطي بيانات التمويل والمبيعات الأساسية. يحتاج الفريق الذي يعمل على تحليل محدد إلى إضافة بعض البيانات المحلية (ملف CSV مع رموز المشروع، وملف Excel مع الأهداف) دون تعديل نموذج المؤسسة المعتمد. باستخدام DirectQuery لمجموعات بيانات Power BI، يقومون بإنشاء نموذج مركب يشير إلى نموذج المؤسسة عبر DirectQuery ويضيف الجداول المحلية الخاصة بهم كبيانات استيراد.
وهذا يتيح بنية تحليلية محكومة حيث:
- يحتفظ فريق البيانات المركزي بمجموعات بيانات مؤسسية معتمدة
- تقوم فرق العمل بتوسيع مجموعات البيانات هذه مع السياق المحلي دون إنشاء نماذج منفصلة وغير متسقة
- يظل نموذج المؤسسة هو المصدر الوحيد لحقيقة المقاييس المشتركة
القيود: يرث DirectQuery لمجموعات بيانات Power BI جميع قيود DirectQuery العادية — بعض وظائف DAX مقيدة، ويجب تكوين الأمان على مستوى الصف بشكل صحيح للنشر عبر النموذج المركب، ويضيف الاتصال بمجموعة البيانات المصدر طبقة من معالجة الاستعلام.
تحسين الأداء للنماذج المركبة
تتطلب النماذج المركبة ضبط أداء أكثر دقة من نماذج الاستيراد الخالصة. التحسينات التالية هي الأكثر تأثيرًا:
تقليل الاستعلامات عبر الأوضاع: كل اجتياز للعلاقة يتجاوز حدود وضع التخزين يضيف زمن الوصول. يمكنك تقليل ذلك عن طريق الاحتفاظ بجداول الأبعاد كوضع ثنائي (يمكنها خدمة استعلامات الاستيراد واستعلام DirectQuery بدون اجتياز الوضع المتقاطع) وعن طريق تنظيم النموذج بحيث تظل معظم الاستعلامات ضمن وضع واحد.
التجميع المسبق في المصدر: لا تطلب من مصدر DirectQuery إجراء عمليات تجميع يمكن أن يقوم بها Power BI بشكل أكثر كفاءة. أنشئ طرق عرض أو طرق عرض متحققة في قاعدة البيانات المصدر والتي يتم تجميعها مسبقًا بالمستوى الذي تحتاجه تقاريرك فعليًا.
خطة استعلام المراقبة باستخدام محلل الأداء: في Power BI Desktop، يقوم العرض → محلل الأداء بتسجيل الوقت المستغرق لكل استعلام DAX مرئي واستعلام المصدر اللاحق (إذا كان DirectQuery). يكشف هذا عن المرئيات البطيئة وما إذا كان الاستعلام البطيء موجودًا في طبقة DAX أو طبقة الاستعلام المصدر.
استخدام إعدادات تقليل الاستعلام: في Power BI Desktop → الخيارات → تقليل الاستعلام، قم بتمكين الخيارات لإضافة أزرار تطبيق إلى مقسمات طرق العرض وعوامل التصفية. يمنع هذا كل تفاعل مقسم طريقة العرض من إطلاق استعلام مصدر على الفور - وهو أمر مهم بشكل خاص لتقارير DirectQuery حيث يكون لكل استعلام زمن استجابة للشبكة وتنفيذ المصدر.
الحد من عدد اتصالات DirectQuery: يقوم كل مصدر DirectQuery مختلف في نموذج مركب بإنشاء تجمع اتصالات منفصل. يقتصر على 1-2 مصادر DirectQuery حيثما أمكن ذلك؛ أكثر من 3 يزيد بشكل كبير من تعقيد النموذج ومشكلات الأداء المحتملة.
الأمان على مستوى الصف في النماذج المركبة
يتطلب الأمان على مستوى الصف (RLS) في النماذج المركبة تخطيطًا دقيقًا، خاصة عندما يتم تعريف RLS في جدول استيراد له علاقة بجدول DirectQuery.
عندما يقوم مستخدم لديه عامل تصفية RLS بالاستعلام عن تقرير، يقوم Power BI بتطبيق عامل التصفية على الجدول المناسب. إذا كان الجدول الذي تمت تصفيته في وضع الاستيراد وله علاقة بجدول DirectQuery، فيجب على Power BI ترجمة عامل تصفية الاستيراد إلى عامل تصفية يمكن إرساله إلى مصدر DirectQuery. يعمل هذا في معظم الحالات، لكنه قد يؤدي إلى نتائج غير متوقعة باستخدام تسلسلات هرمية معقدة لمرشح.
أفضل الممارسات: تحديد RLS في جداول أبعاد وضع الاستيراد (وليس جداول حقائق DirectQuery). ينتشر المرشح من البعد إلى الحقيقة من خلال العلاقة، وهو ما يعمل بشكل موثوق. من الممكن تعريف RLS مباشرة على جداول DirectQuery، ولكن من الصعب اختباره وتصحيح أخطائه.
بالنسبة للنماذج المركبة التي تستخدم DirectQuery لمجموعات بيانات Power BI، يتم تطبيق RLS المحدد في مجموعة البيانات المصدر تلقائيًا عند الاستعلام عن مجموعة البيانات هذه. يمكن تعريف RLS إضافية في طبقة النموذج المركبة. يتطلب أسلوب RLS ذو الطبقات هذا اختبارًا دقيقًا لضمان تركيب المرشحات بشكل صحيح.
الأسئلة المتداولة
هل يمكنني مزج البيانات من منصات قواعد بيانات مختلفة تمامًا في نموذج مركب؟
نعم. يمكن أن يحتوي النموذج المركب على جداول من SQL Server (DirectQuery)، وSalesforce (DirectQuery)، وملف Azure Blob Storage (استيراد)، وSnowflake (DirectQuery) في الوقت نفسه. يحتفظ كل مصدر باتصاله الخاص. يجب أن تحتوي العلاقات بين الجداول من مصادر مختلفة على جدول ثنائي الوضع واحد على الأقل لتسهيل عمليات الربط بين المصادر. يزداد الأداء والتعقيد مع كل مصدر إضافي - يعد الحد من 2-3 مصادر أمرًا عمليًا لمعظم عمليات التنفيذ.
ما هي وظائف DAX التي لا تعمل في النماذج المركبة؟
تكون بعض وظائف DAX مقيدة أو تتصرف بشكل مختلف في النماذج المركبة التي تحتوي على جداول DirectQuery. تتضمن الوظائف التي لا تعمل مع العلاقات المحدودة SUMMARIZE (في سياقات معينة) وTOPN (في جداول DirectQuery) وبعض وظائف تحليل الوقت. يعمل USERELATIONSHIP ولكن يمكن أن يسبب استعلامات عبر الأوضاع. تم توثيق القائمة الكاملة للقيود في وثائق Power BI الخاصة بشركة Microsoft ضمن "قيود DirectQuery". يوصى بشدة باختبار كافة الإجراءات المهمة بعد إضافة جداول DirectQuery.
كيف يعمل التحديث المتزايد مع النماذج المركبة؟
ينطبق التحديث التزايدي على أقسام وضع الاستيراد ضمن نموذج مركب. لا تستخدم الجداول التي تم تكوينها كـ DirectQuery التحديث المتزايد - فهي تستعلم عن المصدر في الوقت الفعلي في كل تفاعل. التركيبة الأكثر شيوعًا هي استخدام التحديث المتزايد على الأقسام التاريخية في وضع الاستيراد مع وجود DirectQuery لبيانات الفترة الحالية - وهذه هي ميزة الجداول المختلطة، وهي شكل محدد من النماذج المركبة داخل جدول واحد.
ما هو تأثير أداء النماذج المركبة مقابل الاستيراد الخالص؟
ستكون النماذج المركبة التي تحتوي على مكونات DirectQuery دائمًا أبطأ من نماذج الاستيراد النقية المكافئة للاستعلامات المكافئة. تعتمد فجوة الأداء على أداء النظام المصدر ونسبة الاستعلامات التي تصل إلى DirectQuery مقابل أقسام الاستيراد. باستخدام جداول التجميع المصممة جيدًا، تصل معظم استعلامات المستخدم إلى تجميع الاستيراد وتعود في أقل من ثانية واحدة، مما يجعل الأداء مقبولًا. قد تستغرق الاستعلامات التي تنتقل إلى تفاصيل DirectQuery من 3 إلى 15 ثانية حسب أداء المصدر.
هل يجب علي استخدام النماذج المركبة أم مجرد جدولة عمليات تحديث متكررة أكثر؟
تعتبر عمليات التحديث الأكثر تكرارًا (كل 15 دقيقة لوضع الاستيراد) كافية لمعظم حالات الاستخدام حيث يكون "الوقت الفعلي القريب" مقبولاً. تضيف النماذج المركبة مع DirectQuery تعقيدًا كبيرًا - استخدمها فقط عندما: (أ) تحتاج إلى بيانات محدثة بشكل حقيقي حتى الدقيقة أو الثانية، (ب) تكون مجموعة البيانات كبيرة جدًا بحيث لا يمكن تحديثها داخل النافذة المتاحة حتى مع التحديث التزايدي، أو (ج) تحتاج إلى دمج البيانات من المصادر التي لا يمكن دمجها في تحديث مستودع واحد.
الخطوات التالية
تعد النماذج المركبة أداة قوية لبنيات Power BI المتطورة، ولكنها تتطلب تصميمًا دقيقًا لتجنب مخاطر الأداء والصحة. تستخدم التطبيقات الأكثر نجاحًا نماذج مركبة لسيناريوهات محددة ومبررة بدلاً من استخدامها كبنية افتراضية.
تتضمن خدمات نمذجة بيانات Power BI من ECOSIRE تصميم النموذج المركب وتنفيذ جدول التجميع وتحسين الأداء. اتصل بنا لتقييم ما إذا كانت النماذج المركبة هي الحل المناسب لحداثة بياناتك المحددة ومتطلبات الأداء.
بقلم
ECOSIRE Research and Development Team
بناء منتجات رقمية بمستوى المؤسسات في ECOSIRE. مشاركة رؤى حول تكاملات Odoo وأتمتة التجارة الإلكترونية وحلول الأعمال المدعومة بالذكاء الاصطناعي.
مقالات ذات صلة
Building Financial Dashboards with Power BI
Step-by-step guide to building financial dashboards in Power BI covering data connections to accounting systems, DAX measures for KPIs, P&L visualisations, and best practices.
Case Study: Power BI Analytics for Multi-Location Retail
How a 14-location retail chain unified their reporting in Power BI connected to Odoo, replacing 40 spreadsheets with one dashboard and cutting reporting time by 78%.
GoHighLevel + Power BI: Advanced Reporting and Analytics
Connect GoHighLevel to Power BI for advanced marketing analytics. Build executive dashboards, track multi-channel ROI, and create automated reports that go beyond GHL's native reporting.