تقنية تصور LuckyTemplates: تعرف على كيفية إنشاء لوحات تصميم الخلفية
تعرف على تقنية تصور LuckyTemplates هذه حتى تتمكن من إنشاء قوالب الخلفية واستيرادها إلى تقارير LuckyTemplates الخاصة بك.
في هذا البرنامج التعليمي ، سنلقي نظرة على جزء من كود DAX. ربما تكون قد استخدمت بالفعل شيئًا كهذا. أو ، قد تصادفها وتشعر بالارتباك حول كيفية عمل هذا الرمز وكيف يبدو أن سياق الصف وسياق عامل التصفية يتفاعلان مع بعضهما البعض في رمز DAX واحد فقط. في كلتا الحالتين ، سيبحث هذا البرنامج التعليمي في كل ما سبق بالتفصيل. يمكنك مشاهدة الفيديو الكامل لهذا البرنامج التعليمي أسفل هذه المدونة.
أولاً ، سننظر إلى الكود نفسه. ثم ننتقل إلى الجزء النظري لفهمه بشكل أفضل. أخيرًا ، سننظر في كل شيء من وراء الكواليس باستخدام DAX Studio .
نموذج البيانات الذي سنستخدمه هو في الأساس نموذج بيانات مبيعات بسيط يحتوي على التواريخ والمبيعات وجدول المنتجات. يحتوي جدول المبيعات على حركات لكل يوم محدد. يحتوي جدول المنتجات على معلومات حول معلومات المبيعات حول المنتجات في كل يوم. يحتوي جدول التواريخ على أعمدة قليلة فقط لغرض هذا البرنامج التعليمي.
نحن مهتمون فقط بجدول التواريخ ، لكننا سنستخدم جدول المبيعات وجدول المنتجات لشرح كيفية انتشار سياق المرشح وسياق الصف بمساعدة العلاقات.
جدول المحتويات
سياق الصف وسياق عامل التصفية في مقياس إجمالي قيد التشغيل
الآن ، دعنا ننشئ مقياسًا إجماليًا قيد التشغيل لأنه يحتوي على سياقات الصف والفلتر. هذا هو مقياس التشغيل الإجمالي الأساسي ، حيث أستخدم COUNTROWS فوق عامل التصفية ، والدالة ALL لإرجاع جميع السنوات التي أملكها داخل جدول التاريخ. عندما أحضر هذا المقياس داخل الجدول أدناه ، يمكنك أن ترى أننا حصلنا على النتيجة التي نتوقعها.
الآن دعنا نحاول تحليل كيفية عمل كود DAX.
في المقياس ، يمكنك أن ترى ذلك أولاً ، لدينا COUNTROWS ، ولكن هذه ليست الوظيفة الأولى التي يتم تقييمها أو تنفيذها. ثم لدينا وظيفة التصفية ، ثم ALL. أول شيء في ترتيب التقييم هو الكل. يُرجع ALL جميع القيم الفريدة لرقم تقويم التواريخ من خلال تجاهل أي سياق عامل تصفية موجود خارج وظيفة ALL.
لذلك ، في المقاييس ، لدينا عمود رقم سنة التقويم ، ويقوم بتصفية هذا العمود بنشاط. ولكن نظرًا لأن ALL سيتجاهل سياق عامل التصفية الحالي ، فسنحصل على جميع القيم الفريدة لهذا العمود.
في الوسيطة الثانية ، في سياق الصف ، كتبنا أن عدد التواريخ التقويمية يجب أن يكون أقل من MAX Dates رقم السنة التقويمية. الآن ، إذا كنت مبتدئًا ولا تزال تحاول فهم DAX وتعلمه ، فقد تعتقد أن كلا المراجع الموجودة على الجانب الأيسر وداخل الدالة MAX تنتمي إلى نفس العمود وهي نفس الجدول الموجود داخل وظيفة ALL.
لكن ذلك غير صحيح. الجزء الوحيد من سياق الصف الذي ينتمي إلى وظيفة ALL هو الجزء الموجود على الجانب الأيسر. يتم تقييم ما لدينا في MAX داخل سياق عامل التصفية وليس في سياق الصف.
لذلك ، يحاول FILTER إنشاء سياق صف على الجدول الذي توفره في الوسيطة الأولى ، ويتم استرداد هذا الجزء من الكود بالفعل من سياق الصف المحدد هذا. لذا فإن كل صف ، يقوم FILTER بتكرار الجدول الموجود داخل ALL ، ومن ثم يمكننا الوصول إلى جميع القيم التي نكررها حاليًا.
لذلك ، في التكرار الأول ، لدينا قيمة واحدة فقط. في التكرار الثاني ، لدينا القيمة الثانية. ولكن عندما نكتب MAX ، فهو مستقل عن سياق الصف الذي نقوم بإنشائه باستخدام وظيفة FILTER. لذلك يتم تقييم MAX في سياق المرشح الذي يتم إنشاؤه بواسطة رقم السنة الحالية الذي استخدمناه في تلك المصفوفة.
عندما نكون في عام 2006 ، سيعيد MAX 2006 بينما الصف الحالي يمكن أن يكون 2006 أو 2007 أو 2008. سيعيد FILTER الجدول الذي يفي بالمعايير التي نحددها في الوسيطة الثانية. عندما ننتقل إلى 2007 ، سيعود MAX 2007. في 2008 ، سيعود 2008. واعتمادًا على جميع القيم الأقل من القيمة التي يتم إرجاعها بواسطة دالة MAX ، سيعود FILTER طاولة.
لإثبات أن MAX لا يعتمد على سياق الصف ، يمكننا فصل هذا الجزء من كود DAX إلى عدة متغيرات. وبعد ذلك ، سنتمكن من فهم أن مرجع العمود على الجانب الأيسر والجانب الأيمن ليسا متماثلين.
لذلك ، دعونا ننشئ متغيرًا.
كما ترى في المقياس أدناه ، قمت بإنشاء ثلاثة متغيرات ( ). ثم أضفت كود التصفية أخيرًا مع نتيجة متغيرة تستخدم COUNTROWS . عندما أستخدم هذا المقياس في الجدول أدناه ، ستلاحظ أنه لم يتغير شيء. النتائج لا تزال هي نفسها. ما زلنا نحصل على إجمالي التشغيل نفسه الذي كنا نحصل عليه سابقًا.
إذا عدنا إلى الكود وحاولنا استرداد قيمة المتغير الأول وتأكيد ذلك ، يمكنك أن ترى ذلك لكل صف ، نحصل عليه في نفس العام.
لذلك ، آمل أن أكون قادرًا على أن أشرح لك أن وظيفة MAX ، في هذا الرمز المحدد ، لا تعتمد في الواقع على السياق الحقيقي لقيمها. وإذا كنت ترغب في تبسيط فهمك لسياق التقييم ، فيمكنك دائمًا تقسيم الكود إلى عدة متغيرات حتى تتمكن من فهم أمر التقييم وكيفية تنفيذ الكود.
الآن ، أريد أن أعرض لك سيناريو تعتمد فيه وظيفة MAX على سياق الصف الذي تم إنشاؤه بواسطة وظيفة FILTER.
لذا ، دعنا نعود إلى هذا المقياس. دعنا نكرر ذلك ، وبدلاً من آخر عام مرئي ، سأحسب رقم التقويم السنوي لتواريخ MAX عندما أحضر ذلك إلى المصفوفة ، يمكنك أن ترى أننا حصلنا على فراغ.
لماذا؟
الشيء هو أننا نكرر كل السنوات وما يفعله CALCULATE هو أنه يحول الصف المتكرر حاليًا إلى سياق مرشح مكافئ.
إذا كتبت علامة يساوي هنا ، يمكنك أن ترى أننا نحصل على سبعة وسبعة وسبعة.
لماذا؟
اسمح لي بإنشاء جدول محسوب جديد حتى تتمكن من فهم ما يحدث بسهولة.
سأذهب لإنشاء جدول جديد. بعد ذلك ، سأكتب على رقم تقويم جميع التواريخ. بعد ذلك ، سأكتب Max Year ، ثم سأستخدم CALCULATE عبر الحد الأقصى لرقم سنة تقويم التواريخ. والآن يمكنك أن ترى أننا نكرر نفس القيمة لكل صف.
نظرًا لأن هذه الأرقام ليست أقل من نفسها تمامًا ، فإننا نحصل على فراغ. لكن عندما نستخدم يساوي (=) ، فإننا نقول إن جميع القيم الأقل من 2011 تحصل على سبعة.
علاوة على ذلك ، حتى إذا كنت تستخدم مرجع مقياس مثل شيء مثل Max Year ، فلن يعمل هذا الرمز.
إذا قمت بالنقر فوق "تأكيد" ، يمكنك أن ترى أننا ما زلنا لا نحصل على أي شيء. هذا لأننا عندما نكتب Max Year ، فإننا ببساطة نكتب CALCULATE MAX Dates رقم تقويم السنة.
يحتوي مرجع مقياس دائمًا على حساب خارجه. لذلك ، يبدأ هذا المقياس في انتقال السياق الذي يحول الصف المتكرر حاليًا إلى سياق عامل التصفية.
ولكن إذا كنت ملزمًا وكان عليك استخدام مرجع قياس ، فما يمكنك فعله هو تخزين هذا المقياس في متغير. وكما تعلم ، فإن المتغيرات ثابتة ولا يمكنها إنشاء انتقال للسياق. لذلك لا يمكن تحويل سياق الصف إلى سياق عامل التصفية.
لذلك ، هذا عرض توضيحي سريع لكيفية تفاعل سياق الصف وسياق عامل التصفية مع بعضهما البعض في كود DAX.
الآن دعنا ننتقل إلى DAX Studio لفهم ما يحدث وراء الكواليس.
استخدام DAX Studio لفهم سياق الصفوف وسياق عامل التصفية
دعنا ننتقل إلى الأدوات الخارجية ونطلق DAX Studio. نحتاج إلى الاتصال بملف LuckyTemplates بمساعدة خطة الاستعلام وتوقيتات الخادم .
بعد ذلك ، سأقوم بإنشاء مقياس استعلام. سأكتب DEFINE MEASURE في جدول التواريخ ، التواريخ الجارية الإجمالي. وبعد ذلك ، سأستخدم الكود الأصلي الذي كان لدينا.
نظرًا لأنه من المفترض أن نعيد جدولًا ، يمكننا كتابة التقييم. أخيرًا ، سنقوم بإنشاء الجدول باستخدام SUMMARIZECOLUMNS. لذلك ، سنقوم بكتابة رقم التقويم والتواريخ والسنة ، والعمود الافتراضي ، والذي سيكون الإجمالي الحالي. وبعد ذلك ، يمكنني كتابة شيء مثل DT ككلمة أساسية لـ DAX Studio.
إذا قمت بتنفيذ هذا الرمز ، يمكنك أن ترى أن الكود مكتمل وما زلنا نحصل على نفس النتيجة التي رأيناها داخل LuckyTemplates.
الآن ، دعنا ننتقل إلى خطة الاستعلام لفهم ما يحدث وراء الكواليس. دعنا نرى ما إذا كانت وظيفة MAX تعتمد بالفعل على سياق الصف أم لا. دعنا ننتقل إلى خطة الاستعلام المنطقية لأن خطة الاستعلام الفعلية بشكل عام أكثر تعقيدًا وصعبة بعض الشيء في القراءة.
يمكنك أن ترى أن العامل الأول في السطر الأول هو GroupSemiJoin والذي يتم استخدامه بواسطة SUMMARIZECOLUMNS لإنشاء وصلة داخلية بين عمودين.
ثم ، للانضمام إلى هذه الأعمدة ، هناك Scan_Vertipaq ، وهو محرك التخزين الموجود لدينا داخل خدمات التحليل. يمكننا أن نرى أنه يشير إلى أننا بحاجة إلى عمود ، وهو التواريخ ، رقم السنة التقويمية. في LuckyTemplates ، يمكنك أن ترى أنه في المصفوفة ، لدينا عمود رقم سنة التقويم هذا ، والذي يعمل بمثابة وصول إلى تقريرنا.
بعد ذلك ، لدينا وظيفة COUNTROWS في مقياسنا كمشغل من المستوى الأعلى ، ثم تستدعي COUNTROWS وظيفة التصفية للمرشح. هناك Scan_Vertipaq مرة أخرى ، والتي تقول أن RequiredCols هي التواريخ التقويمية رقم السنة.
السطران 2 و 5 متماثلان ، ولكن تم وضع علامة على Scan_Vertipaq بصفر بينما السطر الثاني بعلامة واحدة. هذا يعني أن العمود الذي نصل إليه ، بمساعدة الدالة ALL ، يتم استخراجه بشكل منفصل عن العمود الذي لدينا داخل دالة SUMMARIZECOLUMNS.
ثم ، هناك عامل أقل . في السطر التالي ، يمكننا أن نرى أن هناك مقارنة بين سياق الصف ووظيفة MAX .
يتبع ذلك Max_Vertipaq . لذلك ، نحن في الواقع نستخرج القيمة القصوى من محرك التخزين. إلى اليمين ، يمكنك أن ترى أنه يقول ، DependOnCols Dates Dates Calendar Year Number. هذا هو أهم شيء يجب أن نتذكره. في وقت سابق ، قلت إنه لا توجد تبعية لوظيفة MAX في سياق الصف ، وهذا ما يثبت ذلك بالفعل.
وهكذا ، هنا تقول صفر.
أين وجدنا الصفر؟
في الجزء العلوي (السطر الثاني) ، والذي يتم استخراجه من أجل SUMMARIZECOLUMNS. هذا يعني أن وظيفة MAX لا تعتمد على سياق الصف ، لكنها في الواقع تعتمد على العمود (رقم سنة التقويم) الذي لدينا داخل هذا الجدول. لذلك فإن هذا الجدول يقوم بالفعل بإنشاء سياق عامل التصفية.
باختصار ، تعتمد وظيفة MAX على سياق عامل التصفية وليس سياق الصف.
بعد ذلك ، يمكنك أن ترى أنه لحساب Max_Vertipaq ، لدينا Scan_Vertipaq ، والتي تقول أن DependOnCols صفر (0) تاريخ التقويم رقم السنة. وبعد ذلك ، هناك عدة أعمدة أخرى تتطلب أعمدة.
الآن دعونا نلقي نظرة على النسخة المتغيرة من الكود. بدلاً من إرجاع LastVisibleYear ، سأقوم بإرجاع إصدار COUNTROWS أو متغير النتيجة ، ويمكنك أن ترى أننا ما زلنا نحصل على نفس النتيجة.
إذا نظرنا إلى خطة الاستعلام ، يمكنك أن ترى أنها أطول قليلاً ، لكن قراءتها أسهل بكثير.
أخيرًا ، ها هي النسخة المحسوبة من الكود أيضًا
وهذا ما تبدو عليه خطة الاستعلام المنطقية.
DAX LuckyTemplates: ما المقصود بمقدمة سياق الصف
لسياق عامل التصفية في LuckyTemplates
ما المقصود بانتقال السياق وما أهميته؟
خاتمة
في هذا البرنامج التعليمي ، شرحت كيف يمكن لوظيفة معينة أن تتفاعل ولا يمكنها التفاعل مع سياق الصف. لقد أوضحت لك أيضًا كيف تم تقييم MAX ، في هذه الحالة ، في سياق عامل التصفية وليس في سياق الصف.
من المهم أن تتذكر دائمًا أن سياق عامل التصفية يقوم بتصفية النموذج بأكمله وأن سياق الصف يقوم فقط بتكرار الجدول المحدد ولا يقوم بتصفية النموذج مطلقًا. سياق عامل التصفية لا يكرر الجدول.
أتمنى أن تكون قد وجدت هذا البرنامج التعليمي مفيدًا. ترقبوا كود DAX Studio الذي سنصدره قريبًا. سوف نتعمق أكثر في سيناريوهات مماثلة. سنعلمك أيضًا كيف يمكنك تحسين كود DAX الخاص بك.
تعرف على تقنية تصور LuckyTemplates هذه حتى تتمكن من إنشاء قوالب الخلفية واستيرادها إلى تقارير LuckyTemplates الخاصة بك.
ما هي الذات في بايثون: أمثلة من العالم الحقيقي
ستتعلم كيفية حفظ وتحميل الكائنات من ملف .rds في R. ستغطي هذه المدونة أيضًا كيفية استيراد الكائنات من R إلى LuckyTemplates.
في هذا البرنامج التعليمي للغة ترميز DAX ، تعرف على كيفية استخدام وظيفة الإنشاء وكيفية تغيير عنوان القياس ديناميكيًا.
سيغطي هذا البرنامج التعليمي كيفية استخدام تقنية Multi Threaded Dynamic Visuals لإنشاء رؤى من تصورات البيانات الديناميكية في تقاريرك.
في هذه المقالة ، سأقوم بتشغيل سياق عامل التصفية. يعد سياق عامل التصفية أحد الموضوعات الرئيسية التي يجب على أي مستخدم LuckyTemplates التعرف عليها في البداية.
أريد أن أوضح كيف يمكن لخدمة تطبيقات LuckyTemplates عبر الإنترنت أن تساعد في إدارة التقارير والرؤى المختلفة التي تم إنشاؤها من مصادر مختلفة.
تعرف على كيفية إجراء تغييرات في هامش الربح باستخدام تقنيات مثل قياس التفرع والجمع بين صيغ DAX في LuckyTemplates.
سيناقش هذا البرنامج التعليمي أفكار تجسيد مخازن البيانات وكيفية تأثيرها على أداء DAX في توفير النتائج.
إذا كنت لا تزال تستخدم Excel حتى الآن ، فهذا هو أفضل وقت لبدء استخدام LuckyTemplates لاحتياجات إعداد تقارير الأعمال الخاصة بك.