ما هي الذات في بايثون: أمثلة من العالم الحقيقي
ما هي الذات في بايثون: أمثلة من العالم الحقيقي
بالنسبة إلى البرنامج التعليمي اليوم ، سأوضح كيف يمكنك أتمتة عملية فرز عمود واحد بعمود آخر داخل LuckyTemplates و SSAS أو خدمات تحليل خادم SQL. يمكنك مشاهدة الفيديو الكامل لهذا البرنامج التعليمي أسفل هذه المدونة.
في هذا المثال ، لدينا جدول التواريخ بعدة أعمدة. بعض الأعمدة هي الجزء الصحيح الذي سنخفيه ؛ وبعض الأعمدة هي جزء السلسلة ، والتي سنعرضها للمستخدم النهائي.
لذلك ، لدينا أعمدة السنة التقويمية والسنة التقويمية والشهر والشهر. ما نريد فعله هو أتمتة فرز هذه الأعمدة الثلاثة حسب الجزء الصحيح منها. سأقوم بفرز سنة التقويم حسب رقم السنة التقويمية ، السنة التقويمية الشهر حسب رقم الشهر ، السنة التقويمية ، وكذلك الشهر حسب رقم الشهر.
لكننا لن نفعل ذلك واحدا تلو الآخر. سنقوم بتشغيل برنامج نصي يقوم بفرز ذلك تلقائيًا لهذا الجدول المحدد. في حالة وجود أعمدة متعددة لجداول متعددة ، يمكنك استخدام هذا البرنامج النصي في تلك المجموعات من الجداول.
سنستخدم Tabular Editor لكتابة رمز C # ، ولكن في الوقت الحالي ، لا يحتوي Tabular Editor على IntelliSense للغة C #. لتسهيل الأمر ، سنستخدم Visual Studio (VS) ، حيث لدينا IntelliSense للغة C # ويمكنك أيضًا استخدام رمز VS.
جدول المحتويات
فرز الأعمدة في LuckyTemplates و SSAS باستخدام C #
أولاً ، نحتاج إلى إنشاء مشروع جديد داخل Visual Studio ، والذي سيكون تطبيق Console (.Net Framework) للغة C #. دعنا نختار ذلك انقر فوق التالي.
بعد ذلك ، يمكننا تقديم أي اسم للمشروع. سأطلق على هذا SortBy ، وانقر فوق إنشاء.
الآن ، يمكنك ��ن ترى أن لدينا الرمز. بمجرد عمل الكود ، سنقوم ببساطة بنسخه ولصقه داخل Tabular Editor.
ولكن لكي يعمل الرمز داخل Visual Studio ، نحتاج إلى تعيين مرجع إلى مكتبة. ولهذا ، يمكننا ببساطة النقر فوق المراجع واختيار خيار إدارة حزم NuGet داخل خيار المتصفح.
داخل خيار التصفح ، نحتاج إلى كتابة خدمات التحليل . وبعد ذلك ، في الخيارات المتاحة ، نحتاج إلى تحديد الخيار الثاني والنقر فوق تثبيت. سيبدأ التثبيت وسيستغرق التثبيت بضع ثوانٍ.
بعد ذلك ، نحتاج إلى الكتابة داخل الكود ، باستخدام Microsoft.AnalysisServices.Tabular ثم كتابة فاصلة منقوطة. سنقوم بإنشاء كائن خادم ، حتى نتمكن ببساطة من كتابة خادم ، وسيكون اسم كائن الخادم هو الخادم نفسه ، وسنقوم بكتابة خادم جديد .
لذلك بشكل أساسي ، نقوم بإنشاء كائن جديد داخل الذاكرة. ولتوصيل هذا الخادم بملف LuckyTemplates ، سنستخدم طريقة كائن الخادم. لذلك ، دعنا نكتب server.Connect ، وسنوفر هنا رقم المنفذ الذي تستمع إليه خدمات التحليل داخل LuckyTemplates.
للعثور على رقم المنفذ هذا ، نذهب إلى الأدوات الخارجية ، وننقر على DAX Studio ، وفي الجزء السفلي ، سنجد المضيف المحلي. هذا هو رقم الكود الذي تستمع فيه خدمات تحليل خادم SQL التي لدينا داخل LuckyTemplates إلى التغييرات التي نرسلها عبر LuckyTemplates أو أي أداة خارجية أخرى.
الخادم شيء واحد ، ولكن يمكن أن يحتوي الخادم على نماذج متعددة أيضًا في حالة SSAS. لكن الآن ، في LuckyTemplates ، لدينا نموذج واحد فقط. لذلك ، سوف نعلن عن هذا النموذج. نكتب هنا النموذج يساوي (=) قواعد البيانات ، وسنصل إلى قاعدة البيانات الأولى داخل ذلك الخادم ، لذا سنكتب .Model .
الآن دعنا نختبر ما إذا كان هذا الجزء من الكود يعمل أم لا. للقيام بذلك ، سنقوم ببساطة بطباعة قائمة بجميع الجداول التي لدينا داخل نموذج البيانات هذا. لذلك ، سنكتب هنا ، لكل (جدول t في model.Tables) ، افتح القوس ، واضغط على Enter.
بعد ذلك ، نكتب Console.WriteLine (t.Name) . للتأكد من أن النافذة لا تغلق تلقائيًا بمجرد طباعة اسم الجداول ، سنكتب Console.ReadLine ، فتح وإغلاق قوس ، وفاصلة منقوطة. الآن ، كل ما نحتاج إلى القيام به هو النقر فوق خيار البدء والانتظار حتى يتم تنفيذه.
يمكنك أن ترى أننا قادرون على طباعة أسماء الجداول التي لدينا داخل نموذج البيانات. لدينا التواريخ والمنتج والعميل والمتجر. هذا يؤكد أن الإعداد الذي أنشأناه يعمل.
الآن ، يمكننا بالفعل الدخول في جوهر الكود والبدء في إنشاء الكود الذي سيساعدنا في فرز هذا العمود حسب العدد الصحيح المقابل.
دعنا نتخلص من كل شيء أنشأناه من الجزء ForEach . سنحافظ على الخادم والنموذج كما هو. دعنا نعلن عن متغير سيحمل اسم الجدول الذي نريد التكرار عليه. سأطلق عليه اسم DatesTable ، وسيكون اسم الجدول في الأساس التواريخ .
بعد ذلك ، سيكون لدينا foreach var t في النموذج ، والجداول ، ثم سنستخدم جملة where ، لذلك يمكننا القول أين يذهب T إلى t ، يجب أن يكون الاسم مساويًا لـ DatesTable . إذا كنا نقوم حاليًا بالتكرار على DatesTable ، فسنبدأ حلقة أخرى على جميع أعمدة DatesTable. لذلك ، يمكننا كتابة كل فار ج في الأعمدة .
لاختبار ما إذا كنا نكرر فقط على DatesTable ولدينا حق الوصول إلى جميع أعمدة DatesTable ، يمكننا ببساطة طباعة Console.WriteLine ، وسنقول c.Name .
إذا قمت بالضغط على F5 ، يمكنك أن ترى أننا نتمكن من الوصول إلى الأعمدة.
الآن يمكننا المضي قدمًا وكتابة المزيد من التعليمات البرمجية.
سنقوم بإنشاء قائمة من المجموعات التي ستحتوي على ثلاثة أعمدة أخرى. سيكون أحد الأعمدة هو العمود الهدف. سيكون العمود الثاني هو العمود الذي نريد فرز العمود الهدف من خلاله ، وسيظل العمود الثالث صحيحًا أو خطأ ، سواء كنا نريد إخفاء العمود الذي نقوم بالفرز من خلاله بالفعل.
لنفترض أننا نريد فرز عمود سنة التقويم برقم سنة التقويم. سيحتوي العمود الأول على سنة التقويم ، وسيكون العمود الثاني لرقم سنة التقويم ، والعمود الثالث سيقرر ما إذا كنا نريد إخفاء عمود رقم سنة التقويم بعد أن ننتهي من الفرز أم لا.
ولهذا ، دعنا نعود إلى Visual Studio ، حيث سنقوم بإنشاء متغير جديد. يمكنك تسميته بأي شيء تريده. في هذا المثال ، سأسميها عمليات مشتركة . بعد ذلك ، سنكتب جديدًا ، ثم سننشئ قائمة وسنكتب نوع الأعمدة (سلسلة ، سلسلة ، و منطقي). بعد ذلك ، نقوم بإنشاء المجموعات.
لذلك بشكل أساسي ، نقوم ببساطة بإنشاء قائمة من ثلاثة أعمدة ، وبالنسبة لثلاثة أعمدة ، قمنا بتوفير صفين. الآن داخل حلقة foreach الخاصة بنا ، سنبدأ حلقة for . إذن ، ما نقوله في الأساس هو إعلان متغير يبدأ بـ i في كل تكرار. إذا كان i أقل من colOperations ، فقم بزيادة ذلك ببساطة .
بعد ذلك ، سنكتب عبارة IF . ينتمي c.Name إلى اسم العمود الذي نحن فيه حاليًا. ثم لدينا عمليات colOperations i . يسمح لنا بشكل أساسي بالوصول إلى صف واحد معين. وعندما نكتب البند 1 ، يمكننا الوصول إلى العمود الأول أو العمود الثاني أو العمود الثالث.
لذلك سنستخدم عمود العنصر 1 أولاً . إذا كان هذا صحيحًا ، فنحن ببساطة نكتب c.SortByColumn يجب أن يكون مساويًا لـ t.Columns . تذكر أن t هو كائن الجدول. بعد ذلك ، نقوم بالوصول إلى الأعمدة من هذا الجدول المحدد. نريد عمليات colOperations ، الصف الذي نقوم به حاليًا في عمليات العمود ، والعمود هو أساسًا كائن Item2 .
أخيرًا ، لإخفاء هذا العمود المعين الذي من خلاله نطبق الفرز ، نكتب سطرًا أخيرًا من التعليمات البرمجية.
والآن بعد أن كتبنا الكود الرئيسي الذي سنقوم بتنفيذه مقابل نموذجنا الجدولي ، يمكننا ببساطة نسخ الكود من var colOperations ونقله إلى Tabular Editor ، ومن ثم سنقوم بتنفيذ نفس الكود.
فرز الأعمدة في LuckyTemplates و SSAS باستخدام محرر جدولي
لن نستخدم الخادم أو كائن النموذج لأنه خلف الكواليس سيعرف Tabular Editor تلقائيًا نموذج LuckyTemplates أو نموذج خدمات التحليل الذي يجب عليه الاتصال به. لذلك ، لا نحتاج إلى استخدام هذه المتغيرات لأن هذه هي بالفعل مهمة محرر الجداول لتحديد كيف يريد الاتصال بهذه النماذج.
بالعودة إلى LuckyTemplates ، سنقوم بتشغيل إما Tabular Editor 3 أو Tabular Editor 2. يمكنك استخدام أيهما تريد. في هذه الحالة ، دعنا نذهب مع Tabular Editor 3.
نذهب إلى علامة التبويب ملف ، وننقر على رمز C # جديد ، ونغلق خيار الخصائص. بعد ذلك ، يمكننا لصق الكود هنا. الشيء الوحيد الذي نحتاج إلى التأكد منه هو أنه بدلاً من استخدام متغير النموذج هو استخدام كائن النموذج . لذا ، دعنا نستخدم حرف M الكبير وننفذ هذا الرمز.
الآن بعد أن تم تنفيذ البرنامج النصي بنجاح ويقول أيضًا أنه يظهر ثلاثة تغييرات في النموذج ، سنقوم بإلزام التغييرات مرة أخرى في نموذج البيانات. سنحفظ كل ما طبقناه على تلك الأعمدة.
مرة أخرى في LuckyTemplates ، يمكنك أن ترى أن رقم الشهر مخفي. إذا قمت بالنقر فوق عمود الشهر وانتقلت إلى " أدوات العمود " ، وإلى "فرز حسب العمود" ، يمكنك أن ترى أن هذا العمود المحدد قد تم فرزه حسب رقم الشهر. الشيء نفسه ينطبق مع رقم شهر السنة التقويمية.
يتم فرز سنة التقويم بنفسها لأنه لم يكن لدينا هذا العمود داخل كود C #. لذا ، ما يمكننا فعله هو إعادة تشغيل محرر الجدول وإنشاء مجموعة أخرى. وبعد ذلك ، مرة أخرى ننفذ هذا النص.
المحرر الجدولي LuckyTemplates: مراجعة الإصدار 3 والبرنامج التعليمي
LuckyTemplates Tabular Editor 3: أتمتة باستخدام برنامج نصي
DAX Coding داخل محرر جدولي 3
خاتمة
هذا هو مدى سهولة أتمتة عملية فرز عمود واحد بعمود آخر في و SSAS. كان هذا مثالًا أساسيًا جدًا على كيفية إجراء هذه العملية داخل جدول التواريخ. ولكن يمكنك إثراء هذه القائمة عن طريق إضافة المزيد من الأعمدة ثم البحث عن جدول آخر.
بهذه الطريقة ، يمكنك تقليل مقدار الوقت الذي يجب أن تقضيه في فرز هذه الأعمدة لنفس النماذج التي ستقوم بإنشائها مرارًا وتكرارًا.
أتمنى أن تكون قد وجدت هذا مفيدًا. إذا كان لديك أي أسئلة ، فقط أخبرني في قسم التعليقات.
ما هي الذات في بايثون: أمثلة من العالم الحقيقي
ستتعلم كيفية حفظ وتحميل الكائنات من ملف .rds في R. ستغطي هذه المدونة أيضًا كيفية استيراد الكائنات من R إلى LuckyTemplates.
في هذا البرنامج التعليمي للغة ترميز DAX ، تعرف على كيفية استخدام وظيفة الإنشاء وكيفية تغيير عنوان القياس ديناميكيًا.
سيغطي هذا البرنامج التعليمي كيفية استخدام تقنية Multi Threaded Dynamic Visuals لإنشاء رؤى من تصورات البيانات الديناميكية في تقاريرك.
في هذه المقالة ، سأقوم بتشغيل سياق عامل التصفية. يعد سياق عامل التصفية أحد الموضوعات الرئيسية التي يجب على أي مستخدم LuckyTemplates التعرف عليها في البداية.
أريد أن أوضح كيف يمكن لخدمة تطبيقات LuckyTemplates عبر الإنترنت أن تساعد في إدارة التقارير والرؤى المختلفة التي تم إنشاؤها من مصادر مختلفة.
تعرف على كيفية إجراء تغييرات في هامش الربح باستخدام تقنيات مثل قياس التفرع والجمع بين صيغ DAX في LuckyTemplates.
سيناقش هذا البرنامج التعليمي أفكار تجسيد مخازن البيانات وكيفية تأثيرها على أداء DAX في توفير النتائج.
إذا كنت لا تزال تستخدم Excel حتى الآن ، فهذا هو أفضل وقت لبدء استخدام LuckyTemplates لاحتياجات إعداد تقارير الأعمال الخاصة بك.
ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته