ما هي الذات في بايثون: أمثلة من العالم الحقيقي
ما هي الذات في بايثون: أمثلة من العالم الحقيقي
في هذا البرنامج التعليمي ، سوف نلقي نظرة على سيناريو محدد للغاية وأنا متأكد من أنكم جميعًا قد واجهتموه بالفعل أثناء العمل مع DAX - الجدول الموسع . يمكن أن تفسد الجداول الموسعة الحساب الخاص بك إذا كنت لا تعرف كيف تعمل بالفعل. يمكنك مشاهدة الفيديو الكامل لهذا البرنامج التعليمي أسفل هذه المدونة.
في هذا المثال ، نستخدم قاعدة بيانات شركة Contoso ، التي تحتوي على جدول المبيعات وجدول العملاء وجدول التواريخ وجدول المنتجات وجدول فئة المنتجات وجدول الفئات الفرعية للمنتجات .
على الجانب الأيسر ، لدينا علاقة رأس بأطراف بين المنتجات والفئات والفئات الفرعية وجداول المبيعات. لدينا أيضًا علاقة رأس بأطراف بين العميل والمبيعات ، بالإضافة إلى التواريخ والمبيعات.
جدول المحتويات
مثال 1
لنفترض أننا نريد إنشاء تقرير من عمود الفئة هذا في جدول الفئات ، واستخدام مقياس يحسب عدد العملاء الموجودين في جدول العملاء. نريد تقسيم الرقم الخاص بجدول العميل حسب الفئة.
إذا وضعت عامل تصفية في جدول الفئات ، فسوف ينتقل هذا الفلتر إلى جدول الفئات الفرعية ، ثم يصل إلى جدول المنتجات ، ثم أخيرًا ، سيصل إلى جدول المبيعات ويصفيه. لكن هذا المرشح لن يكون قادرًا على تصفية جدول العميل إلا إذا قمنا بتشغيل التصفية ثنائية الاتجاه.
دعنا نعود إلى التقرير لإصلاح هذا الحساب. يمكننا التفاف هذه العملية الحسابية داخل وظيفة CALCULATE ، ثم كتابة المبيعات. يمكننا أن نرى أننا هذه المرة لا نكرر نفس الرقم لكل خلية من الخلايا المرئية.
للتحقق مما إذا كان هذا الحساب صحيحًا ، يمكننا إحضار مفتاح العميل من جدول المبيعات للتجميع ، ثم إجراء حساب (مميز) فوق ذلك.
يمكنك أن ترى أننا نعيد نفس القيمة لكل صف. باستخدام جدول المبيعات داخل وظيفة CALCULATE ، تمكنا من إصلاح العملية الحسابية.
المثال رقم 2
دعنا ننتقل إلى المثال التالي. بالنسبة إلى هذا ، نريد تحديد مبلغ المبيعات للمنتجات الحمراء في 2007 أو 2008 أو 2009. اعتمادًا على اختيار أداة التقطيع ، أريد أيضًا العودة لمدة عام واحد.
على سبيل المثال ، إذا حددت 2009 ، فأنا أريد الإبلاغ عن المبيعات الحمراء لعام 2008. إذا حددت 2008 ، فأنا أريد أيضًا الإبلاغ عن المبيعات الحمراء لعام 2007.
المبيعات الحمراء # 1
حساب إجمالي المبيعات لدينا هو في الأساس مجموع بيانات المبيعات. في سياق الصف ، سنقوم بضرب الكمية في السعر الصافي.
دعونا ننشئ مقياسًا جديدًا ونطلق عليه اسم Red Sales. سنقوم بكتابة CALCULATE ، ثم إجمالي المبيعات. سنقوم جدول المبيعات لإظهار أن لون المنتجات يساوي اللون الأحمر.
ثم سنكتب خلال التواريخ في عمود التاريخ.
عندما نحضر هذا الحساب في بطاقة بصرية ، نحصل على فراغ.
المبيعات الحمراء # 2
ماذا يحصل هنا؟ دعنا نحاول إعادة كتابة هذه العملية الحسابية ومعرفة ما إذا كنا قادرين على الحصول على نتيجة. سننشئ مقياسًا جديدًا ونطلق عليه اسم Red Sales 2 ونستخدم الجزء الأول من الحساب لـ Red Sales 1.
سنبدأ عملية حساب أخرى خلال الحساب الأول.
دعنا نضع هذا المقياس في المصفوفة ونرى النتائج. إذا اخترنا عام 2008 ، فسنحصل على 51947. إذا اخترنا 2009 ، فسنحصل على 24343. أخيرًا ، إذا اخترنا 2010 ، فسنحصل على 39724.
المبيعات الحمراء # 3
هناك طريقة أخرى لكتابة هذا الحساب. سنكتب مقياسًا جديدًا ونسميه Red Sales 3 ، ثم نستخدم وظيفة CALCULATE.
سنقوم بحساب إجمالي المبيعات وكتابة ذلك بالنسبة للمنتجات ، اللون يساوي الأحمر. ثم استخدم الدالة SAMEPERIODLASTYEAR في التواريخ.
إذا سحبنا المقياس رقم 3 إلى بصري البطاقة ، يمكنك أن ترى أن قيمتي البطاقة هاتين تعيدان نفس القيمة ، وهذا صحيح.
ولكن هناك خطأ ما في أول عملية حسابية ، لأننا نعيد قيمة فارغة وليست القيمة الصحيحة.
دعونا نرى ما يحدث بالفعل هنا. الآن بعد أن رأينا بعض العمليات الحسابية على الجداول الموسعة ، دعنا نفهم النظرية الكامنة وراءها.
قبل فهم ماهية الجدول الموسع ، يجب أن تفهم أن جميع الجداول التي لدينا هنا تسمى الجداول الأساسية .
إذن متى تصبح هذه الجداول جداول موسعة؟ بمجرد إنشاء علاقة أطراف برأس بين جدول وآخر ، يصبح الجدول الأساسي هو الجدول الموسع.
التحقق من الجداول الموسعة
ولكن كيف يمكننا التحقق من حدوث توسيع للجدول بالفعل؟ حسنًا ، يمكنك استخدام الكلمات الرئيسية ذات الصلة في أي جدول. إذا كنت قادرًا على الوصول إلى العمود من جانب واحد ، فستعرف أنه يمكن توسيع الجدول.
دعنا نذهب إلى جدول المبيعات وننشئ عمودًا محسوبًا جديدًا.
لنفترض أننا نريد استرداد لون المنتج من جدول المنتج لمفتاح المنتج المحدد هذا. سنستخدم RELATED ، والتي ستعطي فقط قائمة الأعمدة في IntelliSense التي يمكن توسيعها بالفعل من جدول المبيعات.
يمكننا أن نرى أن جدول العملاء وجدول المبيعات لهما علاقة رأس برأس. يمكننا أيضًا رؤية قائمة أعمدة جدول العملاء وأعمدة جدول التواريخ وأعمدة المنتج.
عندما نختار المنتجات [اللون] ، يمكننا إنشاء عمود جديد في جدول المبيعات بمساعدة الكلمة الأساسية ذات الصلة. يتيح لنا RELATED فقط الوصول إلى أعمدة الجدول التي يمكن للجدول الأساسي أن يتوسع إليها.
إذا قمنا بتغيير طبيعة تلك العلاقة من كثير إلى واحد إلى كثير إلى كثير ، فسيتوقف هذا الحساب عن العمل.
دعنا نغير طبيعة هذه العلاقة إلى كثير إلى كثير. يمكننا أن نرى في الأسفل أننا نحصل على رمز تحذير.
عندما نعود إلى جدول المبيعات ، نرى رسالة الخطأ التي تقول إن عمود المنتجات [اللون] إما غير موجود أو ليس له علاقة بأي جدول.
في السياق الحالي ، التحذير الذي نحصل عليه ليس سهل الاستخدام للغاية. في الأساس ، هذا يعني أن جدول المبيعات لا يمكن أن يتوسع إلى جدول المنتج لأننا لا نستطيع الوصول إلى قيمة واحدة فقط لعنصر الصف المحدد هذا.
ونظرًا لأننا نستخدم علاقة أطراف بأطراف ، فإن توسيع الجدول لا يحدث ولا يعمل RELATED.
لنعد إلى عرض الرسم التخطيطي ونصلح هذه العملية الحسابية. سنقوم بتغيير طبيعة العلاقة إلى علاقة رأس برأس ونقوم بتنشيط هذه العلاقة لجعل الحساب يعمل.
تحديد الجداول الموسعة
قبل أن نبدأ في النظر إلى الحسابات التي أجريناها بالفعل في التقرير ، دعنا نكرر تعريف الجدول الموسع.
إذا كان لديك نموذج بيانات بمخطط نجمي ، فسيتم توسيع جدول الحقائق ليشمل جميع الجداول في نموذج البيانات إذا كانت هناك علاقة رأس برأس بين الأبعاد وجدول الحقائق.
إذا كان لديك مخطط ندفة الثلج ، فسيتم توسيع جدول الفئات الفرعية للمنتج وجدول الفئات إلى الجدول الأساسي ، والذي يكون في هذه الحالة جدول المنتجات. جدول المبيعات هو الجدول الأساسي ، والذي يتم توسيعه ليشمل جميع الجداول الأخرى.
خلف الكواليس ، ستحتوي طاولة المبيعات على جميع الأعمدة في جدول واحد. لاحظ أن توسيع الجدول هو مجرد مفهوم منطقي ، لذلك لن يتم توسيع وزيادة حجم نموذج البيانات الخاص بك.
يظهر الجدول الموسع في الصورة فقط عندما تشير إلى جدول (وهو الجدول الأساسي) ، وعندما تكون لديك علاقة رأس برأس بجداول أخرى.
تشريح عمود الفئة واستخدام الجداول الموسعة
دعنا نحاول إصلاح الحسابات التي أجريناها بالفعل في عرض التقرير. في هذا المثال ، نقوم بالتقسيم حسب عمود الفئة من جدول فئات المنتجات ، ونحاول حساب عدد العملاء الموجودين.
إذن ما الذي نفعله هنا في الواقع؟ نحن نستخدم جدول المبيعات الموسع كمرجع. بمجرد احتواء سياق المرشح على قيمة من جدول الفئات ، سيصل هذا الفلتر إلى جدول المبيعات من منتجات الفئة الفرعية وإلى المبيعات مباشرةً.
نظرًا لأن المبيعات عبارة عن جدول موسع ونستخدم هذا المرجع داخل وظيفة CALCULATE ، فسيحتوي جدول المبيعات أيضًا على عمود جدول العميل. عندما نطبق مرشحًا على جدول المبيعات ، بشكل غير مباشر ، فإننا نقوم أيضًا بتصفية جدول العملاء.
دعنا نعود إلى حساباتنا للمبيعات باللون الأحمر ونحاول فهم ما يحدث بالفعل. سنبدأ بالحساب الفارغ. إذا حددنا هذا المقياس ، يمكنك أن ترى أننا نكتب رمزًا متداخلًا. لدينا حساب ، ثم إجمالي المبيعات ، وتصفية المبيعات ، و SAMEPERIODLASTYEAR.
دعنا نكسر هذا الحساب خطوة بخطوة. أولاً ، نحتاج إلى تحديد سياق المرشح الخارجي الموجود خارج الحساب.
لقد اخترنا 2008 في أداة تقطيع رقم سنة التقويم.
من سياق عامل التصفية هذا ، سيتم تقييم جدول المبيعات. سيحتوي جدول المبيعات فقط على صف رقم السنة التقويمية لعام 2008 وسيكون لون المنتج باللون الأحمر. لدينا مرشحين هنا: أحدهما تم إنشاؤه بواسطة سياق عامل التصفية والآخر يتم إنشاؤه بواسطة عامل التصفية .
يتم تقييم SAMEPERIODLASTYEAR في سياق عامل التصفية حيث يكون العام 2008. وستتلقى قائمة بالتواريخ في عام 2008 وستتغير تلك التواريخ من عام 2008 إلى عام 2007. وسيحتوي الجدول الذي سيتم إرجاعه بواسطة هذا فقط تواريخ عام 2007.
بمجرد اكتمال هاتين العمليتين ، تقوم وظيفة CALCULATE بإعداد سياق المرشح وتطبيق هذين المرشحات في سياق المرشح. عندما نطبق ذلك ، يكون لدينا سياق مرشح للون المنتج يساوي اللون الأحمر ، وفي عمود السنة ، لدينا مرشح فوق 2007 و 2008.
لذلك بالنسبة لنموذج البيانات هذا ، لا توجد معاملة واحدة موجودة في عامين مختلفين. عندما يحاول CALCULATE دمج هذين الفلترين في حالة وحالة ، سيقول أن العام يجب أن يكون 2008 و 2007 ، وأن لون المنتج يجب أن يكون أحمر.
عندما نقوم بتصفية جدول المبيعات بسياق عامل التصفية لعام 2008 ، فإننا نقوم أيضًا بتصفية جدول التواريخ بشكل غير مباشر. استقرار المبيعات له علاقة مستقر من طرف إلى واحد حتى تاريخه.
لنقم بإنشاء عملية حسابية جديدة لتحديد عدد الصفوف الموجودة في جدول التواريخ للتواريخ ذات الصلة. سنقوم بكتابة CALCULATE ، ثم في جدول التواريخ. ثم سنقوم بتصفية كل جدول المبيعات ، وسنقول إن التواريخ ذات الصلة في رقم السنة التقويمية يجب أن تكون مساوية لعام 2008.
داخل CALCULATE ، لم نشير إلى أي مرشح في جدول التواريخ. نحن نتحقق ببساطة من أن التواريخ في رقم السنة التقويمية يجب أن تكون من عام 2008. من الناحية المثالية ، لا ينبغي أن يكون هذا المرشح قادرًا على تصفية جدول التواريخ. نحن نستخدم أيضًا وظيفة ، والتي ستتجاهل سياق المرشح الذي سيأتي من أداة تقطيع الشرائح.
لنقم بإنشاء بطاقة جديدة لهذا الحساب. يمكنك أن ترى أننا نعيد 348 صفاً.
إذن كيف يمكن أن نعيد 348 صفاً فقط من جدول التواريخ المكون من 2500 صف؟ إذا كنا سنستخدم جدولًا موسعًا ، فسنقوم بترشيح الجدول الآخر أيضًا بشكل غير مباشر ، والذي يرتبط بعلاقة أطراف إلى واحد.
على الرغم من عدم وجود أي عامل تصفية خلال العام الحالي ، إلا أننا ما زلنا نحد من عدد الصفوف المرئية لجدول الأبعاد الموجود على جانب واحد.
عندما نعيد جدول المبيعات ، فإننا نعيد أيضًا نسخة مصفاة من جدول التواريخ وجدول العملاء وجدول المنتج وجدول فئة المنتج وجدول الفئات الفرعية للمنتج.
شرح المبيعات الحمراء 2
دعنا ننتقل إلى الحساب التالي ، وهو Red Sales 2. سنبدأ مع CALCULATE الخارجي لأنه إذا كنا نقوم بتداخل هذه الوظيفة في أي سيناريو ، فيجب على CALCULATE الخارجي تحضير سياق المرشح للحساب الداخلي.
في أداة تقطيع الشرائح ، نختار السنة التقويمية لعام 2008. عندما تحصل الدالة SAMEPERIODLASTYEAR على التاريخ لعام 2008 ، فإنها ستغير تلك التواريخ في عام 2007 وستكون سياق عامل التصفية للحساب الداخلي. هذا الحساب الداخلي سيقيم عام 2007.
ستعمل وظيفة FILTER على تصفية جدول المبيعات ، وسيكون جدول المبيعات محدودًا فقط للصف الذي يكون فيه العام 2007. وبمجرد أن نحصل على صفوف عام 2007 ، سوف نتحقق من أن المنتجات ذات الصلة تساوي اللون الأحمر.
على عكس العملية الحسابية الأولى ، لا نعيد مستويين مختلفين. لا يتم تطبيق هذين المستويين المختلفين على سياق عامل التصفية ، لذا سيحتوي الجدول الذي يتم إرجاعه بواسطة وظيفة FILTER على كل صف جدول المبيعات.
بمجرد تطبيق هذا الفلتر ، سنحصل على مبلغ المبيعات لعام 2007 ، بالإضافة إلى المنتجات التي تساوي اللون الأحمر ، بينما في الحساب الأول ، كنا نعيد عامي 2008 و 2007.
هذه المرة ، قمنا بإعداد سياق عامل التصفية لجدول المبيعات باستخدام الدالة SAMEPERIODLASTYEAR وعن طريق دمج وظيفة CALCULATE داخل CALCULATE آخر.
شرح المبيعات الحمراء 3
بالنسبة للمثال الثالث ، لدينا وظيفة CALCULATE بسيطة للغاية مع عبارتين: أحدهما هو لون المنتج يساوي الأحمر ، ثم SAMEPERIODLASTYEAR في التواريخ.
سيتم تقييم وظيفة SAMEPERIODLASTYEAR في سياق عامل التصفية ، والذي سيحتوي فقط على تواريخ عام 2007. سيطبق لون المنتجات سياق مرشح باللون الأحمر فوق جدول المنتج ، والذي سيؤدي بدوره إلى تصفية جدول المبيعات وسيحتوي فقط على صفوف لـ المنتجات الحمراء.
عند تطبيق هاتين القيمتين في سياق عامل التصفية ، سيقومون بتصفية جدول المبيعات وليس جدول المبيعات الموسع. يمكنك أن ترى أنه لم نشير في أي مكان في الكود إلى جدول المبيعات الموسع.
هذا هو السيناريو المثالي الذي يجب عليك استخدامه إذا كنت تحاول الرجوع إلى الجدول الموسع. عند استخدام الجدول الموسع ، يمكن أن تصبح العمليات الحسابية معقدة حقًا وفي بعض الأحيان ، لا يمكنك تحديد سبب إرجاع حساباتك إلى نتيجة غير صحيحة.
إذا لم تفهم مفهوم الجداول الموسعة ، يمكنك تطوير هذا الرمز المعين كمقياس نموذجي ، ثم نشره في الإنتاج. قد يبدأ المستخدمون الآخرون في إنشاء مقاييس أخرى حول هذا المقياس ، وقد لا يتمكنون من معرفة سبب عدم نجاح العمليات الحسابية لأنهم لا يمتلكون ببساطة هذا المستوى من الفهم حول لغة DAX.
إذا كنت تعمل باستخدام DAX ، فحاول دائمًا وضع عامل التصفية فوق عمود واحد لأنه عند استخدام عمود واحد ، لا يتم تطبيق مفهوم الجداول الموسعة. على سبيل المثال ، عند استخدام PRODUCTS [Color] = "Red" ، يصل الفلتر إلى جدول المبيعات ، لكن هذا الفلتر لا يمكنه الوصول إلى جدول العميل لأننا لا نستخدم جدول المبيعات الموسع.
عند استخدام عمود واحد ، فإننا لا نشير إلى مفهوم الجداول الموسعة. نحن ببساطة نطبق مرشحًا أساسيًا فوق جدول المبيعات ، والذي لا ينتشر في الجداول الأخرى.
استخدام DAX Studio للتحقق من الجداول الموسعة
قبل الختام ، سنستخدم استوديو DAX للتحقق من الكود الخاص بنا للمبيعات الحمراء 3. دعنا نذهب إلى علامة التبويب عرض ، وانقر فوق محلل الأداء ، ثم نبدأ التسجيل. سنقوم بتحديث هذا المرئي ، واختيار بطاقة فارغة.
من الأدوات الخارجية ، سنطلق استوديو DAX
يمكننا أن نرى أنه في شاشة النتائج في الأسفل ، نحصل على فراغ.
سنقوم بتشغيل توقيتات الخادم لفهم الاستفسارات التي يتم إنشاؤها خلف الكواليس. سننتقل إلى علامة التبويب توقيتات الخادم ، ونوسعها لرؤية كل شيء.
نحن نجري JOIN على طاولة المبيعات على الجانب الأيسر. نقوم أيضًا بإجراء JOIN على مفتاح المنتج من جدول المنتج.
في بند WHERE ، تنص على أن التواريخ في رقم السنة التقويمية يجب أن تكون مساوية لعام 2008 وأن لون المنتج يجب أن يكون أحمر.
ثم لدينا شرط آخر وهو التواريخ [التاريخ] ، ثم يتبعه نطاق التاريخ. إذن ما هي هذه التواريخ؟ من الناحية المثالية ، يجب أن تنتمي هذه التواريخ إلى عام 2008 ، لكنها من عام 2007 عندما قمنا بتغيير تنسيق هذه الأرقام في Excel.
هذا هو السبب في أننا نعيد قيمة فارغة. نحن نقول أن السنة التقويمية يجب أن تكون 2008 ونطبق شرط "و" يجب أن تكون التواريخ في 2007. هذا 2007 بسبب دالة SAMEPERIODLASTYEAR التي استخدمناها في الحساب.
دعنا نغير المقياس والمرجع إلى Red Sales 2. بمجرد تنفيذ الكود ، يمكنك أن ترى أننا نحصل على التواريخ من جدول التواريخ ، ثم نقوم بتصفية عمود التواريخ لرقم السنة التقويمية لعام 2008.
هذه المرة ، يمكننا إرجاع نتيجة لأننا لا نطبق عامل تصفية على بند WHERE ونقول أن التواريخ في رقم السنة التقويمية يجب أن تكون مساوية لـ 2008.
أين يمكن العثور على فخ DAX المخفي
الذي يحسب العملاء بمرور الوقت باستخدام DISTINCTCOUNT في
تحليل LuckyTemplates الجديد للعملاء باستخدام Advanced DAX
خاتمة
نأمل أن يكون هذا البرنامج التعليمي مفيدًا في فهم ماهية الجدول الموسع وكيف يمكن أن يفسد حساباتك. الجداول الموسعة ليست بديهية حقًا كما أنها ليست سهلة الفهم.
لمزيد من المعلومات حول الجداول الموسعة ، لا تنس الاشتراك في قناة LuckyTemplates التلفزيونية. لدينا قدر هائل من المحتوى يصدر طوال الوقت مني ومن مجموعة من منشئي المحتوى ، وكلهم مكرسون لتحسين طريقة استخدامك لـ LuckyTemplates ومنصة Power.
ما هي الذات في بايثون: أمثلة من العالم الحقيقي
ستتعلم كيفية حفظ وتحميل الكائنات من ملف .rds في R. ستغطي هذه المدونة أيضًا كيفية استيراد الكائنات من R إلى LuckyTemplates.
في هذا البرنامج التعليمي للغة ترميز DAX ، تعرف على كيفية استخدام وظيفة الإنشاء وكيفية تغيير عنوان القياس ديناميكيًا.
سيغطي هذا البرنامج التعليمي كيفية استخدام تقنية Multi Threaded Dynamic Visuals لإنشاء رؤى من تصورات البيانات الديناميكية في تقاريرك.
في هذه المقالة ، سأقوم بتشغيل سياق عامل التصفية. يعد سياق عامل التصفية أحد الموضوعات الرئيسية التي يجب على أي مستخدم LuckyTemplates التعرف عليها في البداية.
أريد أن أوضح كيف يمكن لخدمة تطبيقات LuckyTemplates عبر الإنترنت أن تساعد في إدارة التقارير والرؤى المختلفة التي تم إنشاؤها من مصادر مختلفة.
تعرف على كيفية إجراء تغييرات في هامش الربح باستخدام تقنيات مثل قياس التفرع والجمع بين صيغ DAX في LuckyTemplates.
سيناقش هذا البرنامج التعليمي أفكار تجسيد مخازن البيانات وكيفية تأثيرها على أداء DAX في توفير النتائج.
إذا كنت لا تزال تستخدم Excel حتى الآن ، فهذا هو أفضل وقت لبدء استخدام LuckyTemplates لاحتياجات إعداد تقارير الأعمال الخاصة بك.
ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته