DAX Language LuckyTemplates تعليمي على عكس TOPN

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

ثم لدينا قطاعة للتاريخ واسم العميل .

DAX Language LuckyTemplates تعليمي على عكس TOPN

ما نريد القيام به لفترة زمنية محددة هو تحديد التواريخ الثلاثة الأولى التي ليست صفرًا. ثم في تلك التواريخ الثلاثة الأولى ، نريد تحديد المستوى المالي.

في الإصدار الأول من المقياس ، أدرجت التواريخ التي تقل عن 29/4/2021 التي لدينا فيها بعض الإيرادات.

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

جدول المحتويات

نمذجة البيانات

قبل كتابة DAX الفعلي ، دعنا نلقي نظرة سريعة على نموذج البيانات الذي يحتوي على جداول متعددة. نحن مهتمون فقط بجدول التاريخ وجدول البيانات وجدول فئة الوظيفة وجدول العملاء .

لاحظ أن جدول العملاء ليس مهمًا حقًا لأنه يُستخدم فقط داخل أداة تقطيع الشرائح.

DAX Language LuckyTemplates تعليمي على عكس TOPN

يتم حساب مقياس الإيرادات في جدول البيانات. تحتوي فئة الوظيفة على المستوى المالي الذي لدينا في المصفوفة. ثم نستخدم عمود التاريخ من جدول التاريخ في أداة التقطيع الخاصة بنا.

النسخة 1

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

تحضير سياق عامل التصفية

أول شيء سنفعله هو استرداد جميع قيم المستوى المالي من سياق المرشح. سننشئ ونسميه FinancialLevelInFilterContext .

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

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

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

الآن وقد تم إعداد سياق عامل التصفية الخاص بنا ، يمكننا كتابة الحساب الأعمق لـ CALCULATE. أولاً ، سنعلن عن متغير ، والذي سيكون مزيجًا من المستوى المالي وعمود التاريخ كما رأينا في الجدول الأول.

ثم سنستخدم ونستخدم جدول البيانات لتلخيص هذين الجدولين: فئة الوظيفة وجدول التاريخ.

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

سيكون اسم هذا المتغير FinancialLevelAndDatesWithRevenue . سيكون رمز هذا المتغير هو فوق المتغير السابق. ثم سننشئ عمودًا افتراضيًا سيكون الإيرادات لبدء انتقال السياق. لذلك ، لكل صف من هذا المتغير ، قمنا بتعيين الإيرادات.

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

سنستخدم في المتغير السابق ، ثم نتأكد من أن الإيرادات لن تساوي صفرًا. يمكن أن يكون أكبر من الصفر أو أقل من الصفر ، ولكن لا ينبغي أن يكون مساويًا تمامًا للصفر.

DAX Language LuckyTemplates تعليمي على عكس TOPN

وبعد ذلك سنقوم باسترداد التاريخ من متغير RemoveZeroes . للقيام بذلك ، يمكننا إنشاء متغير آخر وتسميته KeepOnlyDates .

DAX Language LuckyTemplates تعليمي على عكس TOPN

يمكنني استخدام للتخلص من التواريخ المكررة التي يتم إرجاعها بواسطة .

DAX Language LuckyTemplates تعليمي على عكس TOPN

بعد ذلك ، سنحدد التواريخ الثلاثة الأولى بترتيب تنازلي. سنستخدم متغيرًا آخر ونطلق عليه اسم Last3Dates ، ثم نستخدم .

DAX Language LuckyTemplates تعليمي على عكس TOPN

ثم سنستخدم CONCATENATEX التواريخ الثلاثة الأخيرة في عمود التاريخ ، ثم نستخدم المحدد.

DAX Language LuckyTemplates تعليمي على عكس TOPN

لنقم بسحب القياس الذي أنشأناه حديثًا وإسقاطه داخل تلك المصفوفة. النتيجة التي نحصل عليها هي 31/03/2021 و 07/04/2021 و 02/04/2021. هذا يعني أن مقياسنا يعمل.

DAX Language LuckyTemplates تعليمي على عكس TOPN

دعنا نعود إلى المحرر ونتخلص من جزء RETURN CONCATENATEX. لاسترداد هذه التواريخ الثلاثة الأخيرة ، ما يمكننا فعله هو التحقق من الصفوف من متغير RemoveZeroes التي هي في الواقع جزءًا من تلك التواريخ الثلاثة الأخيرة.

ومن أجل ذلك ، سننشئ DatesInLast3Dates متغيرًا آخر ، ونستخدم وظيفة FILTER في RemoveZeroes . سيؤدي هذا إلى إرجاع جدول يتكون من فئة الوظيفة والتاريخ.

DAX Language LuckyTemplates تعليمي على عكس TOPN

سنلخص عمود الإيرادات الذي أنشأناه داخل هذا الجدول. لنعد SUMX عبر DatesInLast3Dates ، ثم نلخص عمود الإيرادات.

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

سنستخدم المتغير الذي أنشأناه في البداية للتحقق مما إذا كان كل صف من المتغير DatesInLast3Dates متاحًا في سياق المرشح. يمكننا كتابة متغير آخر وتسميته IsInFilterContext .

سيؤدي هذا إلى تصفية التواريخ في متغير DatesInLast3Dates . ثم سأعيد SUMX عبر سياق IsInFilter وألخص عمود الإيرادات.

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

التحقق من نتيجة حساب LuckyTemplates للغة DAX

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

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

يمكننا تغليف هذا الكود داخل CALCULATETABLE ووضع مسافة بادئة لكل شيء. في الجزء الأخير ، سأكتب أن التاريخ يجب أن يكون أكبر من أو يساوي 2021-03-15 وأن اسم العميل يجب أن يكون مساويًا لـ DHL Supply Chain .

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

حسابات LuckyTemplates للغة DAX الأخرى

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

الإصدار 2

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

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

استخدام وظيفة KEEPFILTERS

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

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

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

وأخيرًا ، عندما نقوم بحقن SUMMARIZE في سياق الفلتر ، فإن وظيفة CALCULATE ستحسب إيرادات التأجير فقط. تحدث نفس العملية لكل صف.

الإصدار 3

لنلقِ نظرة على طريقة أخرى لحساب نفس العملية الحسابية باستخدام لغة DAX LuckyTemplates. دعنا ننشئ نسخة من مقياس الإصدار 2 وننشئ مقياسًا آخر. سنقوم بتسمية هذا الإصدار 3.

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

يمكنك أن ترى أن الكود يقوم في الواقع بإرجاع نفس القيمة لكل خلية.

DAX Language LuckyTemplates تعليمي على عكس TOPN

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

DAX Language LuckyTemplates تعليمي على عكس TOPN

خاتمة

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

Leave a Comment

تقنية تصور LuckyTemplates: تعرف على كيفية إنشاء لوحات تصميم الخلفية

تقنية تصور LuckyTemplates: تعرف على كيفية إنشاء لوحات تصميم الخلفية

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

ما هي الذات في بايثون: أمثلة من العالم الحقيقي

ما هي الذات في بايثون: أمثلة من العالم الحقيقي

ما هي الذات في بايثون: أمثلة من العالم الحقيقي

كيفية حفظ وتحميل ملف RDS في R.

كيفية حفظ وتحميل ملف RDS في R.

ستتعلم كيفية حفظ وتحميل الكائنات من ملف .rds في R. ستغطي هذه المدونة أيضًا كيفية استيراد الكائنات من R إلى LuckyTemplates.

تمت إعادة النظر في أول N أيام عمل - حل لغة ترميز DAX

تمت إعادة النظر في أول N أيام عمل - حل لغة ترميز DAX

في هذا البرنامج التعليمي للغة ترميز DAX ، تعرف على كيفية استخدام وظيفة الإنشاء وكيفية تغيير عنوان القياس ديناميكيًا.

اعرض الرؤى باستخدام تقنية المرئيات الديناميكية المتعددة الخيوط في LuckyTemplates

اعرض الرؤى باستخدام تقنية المرئيات الديناميكية المتعددة الخيوط في LuckyTemplates

سيغطي هذا البرنامج التعليمي كيفية استخدام تقنية Multi Threaded Dynamic Visuals لإنشاء رؤى من تصورات البيانات الديناميكية في تقاريرك.

مقدمة لتصفية السياق في LuckyTemplates

مقدمة لتصفية السياق في LuckyTemplates

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

أفضل النصائح في استخدام التطبيقات في خدمة LuckyTemplates عبر الإنترنت

أفضل النصائح في استخدام التطبيقات في خدمة LuckyTemplates عبر الإنترنت

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

تحليل تغييرات هامش الربح بمرور الوقت - التحليلات باستخدام LuckyTemplates و DAX

تحليل تغييرات هامش الربح بمرور الوقت - التحليلات باستخدام LuckyTemplates و DAX

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

أفكار التجسيد لذاكرة التخزين المؤقت للبيانات في DAX Studio

أفكار التجسيد لذاكرة التخزين المؤقت للبيانات في DAX Studio

سيناقش هذا البرنامج التعليمي أفكار تجسيد مخازن البيانات وكيفية تأثيرها على أداء DAX ​​في توفير النتائج.

إعداد تقارير الأعمال باستخدام LuckyTemplates

إعداد تقارير الأعمال باستخدام LuckyTemplates

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