تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

إذا كنت عالقًا في تحليل المشكلة نفسه ، فيمكنك إعادة النظر في لمعرفة ما إذا كانت هناك عناصر في أي من الأساليب التي يمكن أن تساعدك في هذا التحدي.

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

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

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

نقطة البداية لإنشاء تقويم دائم

جدول العطلات الخام هذا هو نقطة انطلاقنا. لتجميع تاريخ معًا ، نحتاج إلى عام وشهر ويوم لتواريخ محددة. كل ما هو مفقود هو العام.

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

استرجاع السنوات من جدول التواريخ

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

عندما أقوم بالنقر فوق الجانب الموجود في المساحة البيضاء بجوار أي من هذه الجداول ، سترى أيضًا قائمة بالسنوات المميزة الموجودة في استعلام جدول التواريخ.

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

بإضافة Date.Month ، يتبقى لنا رقم الشهر فقط لذلك التاريخ المحدد. لشهر يناير ، تقوم بإرجاع 1. لشهر فبراير ، تقوم بإرجاع 2 ، وهكذا.

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

الحصول على العدد من عمود اليوم

للحصول على الرقم من عمود اليوم ، قررنا عدم تقسيم العمود واستخراج القيمة بدلاً من ذلك. كما ترى في شريط الصيغة ، استخدمنا Text.BeforeDelimiter واستخدمنا تلك المساحة لتحديد الجزء الأيمن والأيسر من تلك السلسلة النصية.

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

بالنسبة للسجل الأول ، فإنه يمرر القيمة 1 ، وهي غير موجودة في قائمتنا. هذا هو سبب إرجاع القيمة -1. بالنسبة للسجل الثاني ، تقوم بإرجاع القيمة يوم الإثنين .

يقوم بتمرير ذلك إلى وظيفتنا وإرجاع 1 لأنه العنصر الثاني في قائمتنا. بعد ذلك ، سنستبدل جميع القيم -1 بصفر .

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

استدعاء الوظيفة المخصصة لتقويم العطلة الدائمة

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

ولكن كيف تحدد قيمة التاريخ؟ سنستخدم List.PositionOf مرة أخرى للحصول على قيمة رقمية للأرقام. لدينا قائمة تحتوي على الأول والثاني والثالث والرابع. عندما نمرر الرقم إلى List.PositionOf ، فإنه يُرجع الإزاحة الصفرية.

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

إنشاء قائمة بالتواريخ

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

بعد ذلك ، سوف نستخدم List.Select للاحتفاظ فقط بتلك التواريخ الموجودة في يوم معين من أيام الأسبوع.

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

تطبيق المنطق الشرطي

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

إذا كان الرقم يساوي أخيرًا ، فيمكننا استخدام الدالة List.Reverse لعكس الترتيب في القائمة واستخراج القيمة الأولى.

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

بالنسبة لجميع الحالات الأخرى ، نستخدم List.Skip .

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

مراجعة كود M لتقويم الإجازة الدائمة

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

الخطوة التالية هي توسيع تلك القائمة وإضافة CelebratedOnDate .

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

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

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

أخيرًا ، الخطوة الأخيرة هي تغيير الأنواع.

تقويم العطلة الدائمة - POTW # 12 (حل Power Query)

خاتمة

مجرد تذكير سريع بأن هي سلسلة مستمرة تحدث كل أول وثالث أربعاء في منتدى LuckyTemplates. تتطلب المشكلة التي تم نشرها في الأسبوع الأول حلاً مستندًا إلى DAX ، بينما تتطلب مشكلة الأسبوع الثالث حلًا يستند إلى Power Query.

إذا كنت قد استمتعت بالمحتوى المغطى في POTW ، يرجى الاشتراك في قناة LuckyTemplates التلفزيونية للمزيد. لدينا قدر هائل من المحتوى يصدر طوال الوقت مني ومن مجموعة من منشئي المحتوى ، وكلهم مكرسون لتحسين طريقة استخدامك لـ LuckyTemplates ومنصة Power.

ميليسا


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

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

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

كيفية حفظ وتحميل ملف 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 لاحتياجات إعداد تقارير الأعمال الخاصة بك.

ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته

ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته

ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته