السياق في صيغ DAX

ينطبق على
Excel لـ Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

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

يحدد هذا القسم أنواع السياق المختلفة: سياق الصف وسياق الاستعلام وسياق عامل التصفية. وهي توضح كيفية تقييم السياق للصيغ في الأعمدة المحسوبة وفي PivotTables.

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

فهم السياق

قد تتأثر الصيغ في Power Pivot بعوامل التصفية المطبقة في PivotTable، والعلاقات بين الجداول، وعوامل التصفية المستخدمة في الصيغ. السياق هو ما يجعل من الممكن إجراء تحليل ديناميكي. فهم السياق مهم لإنشاء الصيغ واستكشاف الأخطاء وإصلاحها.

هناك أنواع مختلفة من السياق: سياق الصف وسياق الاستعلام وسياق عامل التصفية.

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

يشير سياق الاستعلام إلى المجموعة الفرعية من البيانات التي تم إنشاؤها ضمنيا لكل خلية في PivotTable، استنادا إلى رؤوس الصفوف والأعمدة.

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

أعلى الصفحة

سياق الصف

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

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

يتبع سياق الصف العلاقات بين الجداول تلقائيا لتحديد الصفوف في الجداول المرتبطة المقترنة بالصف الحالي.

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

= [Freight] + RELATED('Region'[TaxRate])

تحصل هذه الصيغة ببساطة على معدل الضريبة للمنطقة الحالية، من جدول "المنطقة". ولست بحاجة إلى معرفة المفتاح الذي يصل الجداول أو إلى تحديده.

سياق صفوف متعددة

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

على سبيل المثال، افترض أن المصنف يحتوي على جدول "المنتجات " وجدول " المبيعات ". قد ترغب في استعراض جدول المبيعات بأكمله، المليء بالمعاملات التي تتضمن منتجات متعددة، والبحث عن أكبر كمية مطلوبة لكل منتج في أي معاملة مفردة.

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

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

=MAXX(FILTER(Sales,[ProdKey]=BEFORE([ProdKey])),Sales[OrderQty])

للاطلاع على معاينة مفصلة لهذه الصيغة، راجع الدالة EARLY.

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

أعلى الصفحة

سياق الاستعلام

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

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

على سبيل المثال، افترض أنك أنشأت هذه الصيغة البسيطة التي تجمع القيم في عمود "الربح " من جدول " المبيعات ":

=SUM('Sales'[Profit])

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

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

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

أعلى الصفحة

سياق عامل التصفية

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

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

لمزيد من المعلومات حول كيفية إنشاء عوامل التصفية داخل الصيغ، انظر دالات التصفية.

للحصول على مثال حول كيفية مسح عوامل التصفية لإنشاء الإجماليات الكلية، راجع الدالة ALL.

للحصول على أمثلة حول كيفية مسح عوامل التصفية وتطبيقها بشكل انتقائي داخل الصيغ، راجع الدالة ALLEXCEPT

لذلك، يجب مراجعة تعريف المقاييس أو الصيغ المستخدمة في PivotTable لكي تكون على دراية بسياق عامل التصفية عند تفسير نتائج الصيغ.

أعلى الصفحة

تحديد السياق في الصيغ

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

يتم تحديد السياق كما هو موضح في المقاطع السابقة، باستخدام الجداول المتوفرة في المصنف، وأي علاقات بين الجداول، وأي عوامل تصفية تم تطبيقها.

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

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

أمثلة عن السياق في الصيغ

  • توسع الدالة RELATED سياق الصف الحالي لتضمين القيم في عمود مرتبط. يتيح لك ذلك إجراء عمليات بحث. يوضح المثال في هذا الموضوع تفاعل التصفية وسياق الصف.
  • تتيح لك الدالة FILTER إمكانية تحديد الصفوف المطلوب تضمينها في السياق الحالي. توضح الأمثلة الواردة في هذا الموضوع أيضا كيفية تضمين عوامل التصفية ضمن دالات أخرى تقوم بتنفيذ التجميعات.
  • تعين الدالة ALL سياقا داخل صيغة. ويمكنك استخدامه لتجاوز عوامل التصفية التي يتم تطبيقها كنتيجة لسياق الاستعلام.
  • تتيح لك الدالة ALLEXCEPT إزالة كافة عوامل التصفية ما عدا تلك التي تحددها. يتضمن كلا الموضوعين أمثلة ترشدك عبر عملية بناء الصيغ وفهم السياقات المعقدة.
  • تتيح لك الدالتان EARLIER وEARLIEST التنقل عبر الجداول من خلال إجراء العمليات الحسابية، بينما تشير إلى قيمة من حلقة داخلية. إذا كنت ملما بمفهوم التكرار والحلقات الداخلية والخارجية، فستنال القوة التي توفرها الدالتان EARLIER وEARLY. إذا كانت هذه المفاهيم جديدة بالنسبة لك، فيجب اتباع الخطوات في المثال بعناية للاطلاع على كيفية استخدام السياقات الداخلية والخارجية في العمليات الحسابية.

أعلى الصفحة

تكامل مرجعي

يتناول هذا القسم بعض المفاهيم المتقدمة المتعلقة بالقيم المفقودة في جداول Power Pivot المتصلة بواسطة علاقات. قد يكون هذا القسم مفيدا لك إذا كان لديك مصنفات تحتوي على جداول متعددة وصيغ معقدة وتحتاج إلى المساعدة في فهم النتائج.

إذا لم تكن ملما بمفاهيم البيانات العلائقية، فمن المستحسن أن تقرأ أولا الموضوع التمهيدي، نظرة عامة على العلاقات.

علاقات Power Pivot والتكامل المرجعي

لا يتطلب Power Pivot فرض التكامل المرجعي بين جدولين من أجل تعريف علاقة صالحة. بدلا من ذلك، يتم إنشاء صف فارغ في الطرف "واحد" لكل علاقة واحد لأكثر ويتم استخدامه لمعالجة جميع الصفوف غير المتطابقة من الجدول المرتبط. يعمل بشكل فعال كصلة خارجية ل SQL.

في PivotTables، إذا قمت بتجميع البيانات حسب الجانب "واحد" من العلاقة، فسيتم تجميع أي بيانات غير متطابقة في الجانب "عديد" من العلاقة معا وسيتم تضمينها في الإجماليات بعنوان صف فارغ. العنوان الفارغ يعادل تقريبا "العضو غير المعروف".

فهم العضو المجهول

من المحتمل أن يكون مفهوم العضو المجهول مألوفا لك إذا كنت قد عملت مع أنظمة قواعد البيانات متعددة الأبعاد، مثل SQL Server Analysis Services. إذا كان المصطلح جديدا بالنسبة إليك، يشرح المثال التالي ماهية العضو المجهول وكيفية تأثيره على العمليات الحسابية.

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

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

معالجة القيم الفارغة مقابل الصف الفارغ

تختلف القيم الفارغة عن الصفوف الفارغة التي تتم إضافتها لاحتواء العضو المجهول. القيمة الفارغة هي قيمة خاصة تستخدم لتمثيل قيم خالية وسلاسل فارغة وقيم مفقودة أخرى. لمزيد من المعلومات حول القيمة الفارغة، بالإضافة إلى أنواع بيانات DAX الأخرى، راجع أنواع البيانات في نماذج البيانات.

أعلى الصفحة