ما هي الذات في بايثون: أمثلة من العالم الحقيقي
ما هي الذات في بايثون: أمثلة من العالم الحقيقي
في هذا البرنامج التعليمي ، سأعرض لك بعض التحليل التفصيلي لمقياس DAX حول كيفية تجميع إحدى صفحاتي المفضلة في التقرير الذي قدمته لتحدي LuckyTemplates العاشر.
تستخدم صفحة التصنيفات الكثير من مقاييس DAX الصعبة. ولكن بمساعدة أحد خبراء LuckyTemplates لدينا ، أنتريكش شارما ، بالإضافة إلى بعض المقاييس المتفرعة ، تمكنت من الحصول على النتائج التي أردتها.
جدول المحتويات
نظرة عامة على صفحة الترتيب
قبل أن ننتقل إلى تحليل مقياس DAX ، أود أن أوضح لك الأجزاء المختلفة من الصفحة التي نعمل عليها اليوم.
هكذا تبدو صفحة الترتيب . على عكس الصفحات الأخرى في تقريري ، يحتوي هذا في الغالب على بطاقات.
تم إنشاء كل من هذه البطاقات باستخدام مرئيات البطاقة المضمنة في سطح مكتب LuckyTemplates ضمن جزء المرئيات.
يسمح لك بالرجوع إلى الصفحات الأخرى في التقرير من خلال هذه الرموز هنا في الأعلى.
لقد ناقشت الصفحات الأخرى من هذا التقرير في البرامج التعليمية الأخرى. إذا رأيت الصفحات الأخرى في هذا التقرير ، فسترى أن لديها أيضًا رموزًا تؤدي إلى صفحة التصنيفات هذه .
يُظهر الجانب الأيسر من الصفحة أهم أربعة مصانع ومورّدين بينما يُظهر الجانب الأيمن الأربعة السفلية.
لقد قمت أيضًا بإنشاء مقاييس DAX فردية للحصول على نتائج أكثر تحديدًا. هذه الثلاثة في الأعلى ، على سبيل المثال ، تُظهر المصانع الأربعة الأولى والأربع الأدنى والبائعين بناءً على دقائق وقت التوقف ، ومتوسط دقائق التوقف ، والعيوب .
ذهبت أكثر تحديدًا في الجزء السفلي من صفحة التقرير. على الجانب الأيسر ، حصلت على أعلى أربع نباتات وأربع نباتات سفلية بناءً على دقائق وقت التوقف ، ومتوسط دقائق التعطل والعيوب.
على اليمين ، فعلت نفس الشيء لكنني استندت إلى تفاصيل البائع هذه المرة.
أثناء استعراضي لهذا البرنامج التعليمي ، سأخبرك قصة كيف توصلت إلى فكرة هذه الصفحة. بعد ذلك ، سأقدم لك تفصيلاً خطوة بخطوة حول كيفية إنشاء كل من هذه المقاييس.
الحصول على أفكار لاستخدام مقاييس DAX
خطرت لي فكرة مقاييس DAX في هذه الشريحة من أحد ، وهو Antriksh. إنه خبير في DAX وهو رائع في تحسين الإجراءات. كان من الممتع العمل معه في تحليل مقياس DAX هذا.
قبل حوالي أسبوعين من الإعلان عن تحدي LuckyTemplates العاشر ، أجرينا محادثة على Skype حول ملف PBIX نشره على منتدى LuckyTemplates.
كما ترون ، قمت بتضمين صورة لأنتريكش لأنه كان مصدر الإلهام وراء الصفحة التي سنناقشها هنا. أخبرته أنني سأمنحه الفضل عندما أكون على وشك إكمال هذا البرنامج التعليمي.
النموذج بسيط ويستخدم بعض البيانات الأساسية مثل العميل والمنتجات والمبيعات.
لديها قائمة مختصرة من البلدان على الجانب الأيسر.
أنشأ Antriksh مقياسًا لأهم N من البلدان حسب المبيعات . لدي القائمة مرتبة من الأعلى إلى الأدنى ، كما هو موضح بالسهم المتجه لأسفل.
على اليمين ، توجد بطاقة تعرض البلدان الأربعة الأولى والأربع دول في الأسفل. تُظهر القائمة الأربعة الأولى الولايات المتحدة وأستراليا والمملكة المتحدة وألمانيا ، والتي تتطابق مع المراكز الأربعة الأولى في القائمة.
ومع ذلك ، فإن الأربعة السفلية تظهر بالترتيب المعاكس. بدلاً من الذهاب من أسفل ، وهي أرمينيا ، بدأت في المرتبة الخامسة في القائمة ، وهي قيرغيزستان .
هذا هو السبب في أنني صنعت بطاقة أخرى في الأسفل تستخدم نسخة منقحة من الإجراء المستخدم أعلاه.
لاحظ أن المراكز الأربعة الأخيرة تتطابق الآن مع الترتيب الذي أردته - أرمينيا وتايلاند وسوريا وقيرغيزستان .
دعنا ندخل في مقاييس DAX وراء هذه البطاقات. سأبدأ بالمقياس الذي ابتكره Antriksh للبطاقة الأولى.
يحتوي المقياس الأصلي على أكثر من 97 صفًا للحصول على النتائج التي رأيناها على البطاقة الأولى.
عندما ننتقل لأسفل إلى الصف العشرين ، يمكننا أن نرى أن Antriksh استخدم ASC . هذا هو سبب ظهور الأربعة الأدنى بالطريقة التي ظهر بها.
الآن بعد أن عرفت من أين بدأت المشكلة ، سأوضح لك كيف يبدو المقياس الذي تمت مراجعته.
اسمحوا لي أن أبرز البطاقة الثانية حتى أتمكن من إظهار المقياس وراءها.
كما ترى ، هناك 41 صفاً فقط في الصيغة المعدلة.
عملت مع Antriksh لتقليصه بنسبة 60٪ أو 70٪ عن المقياس الأصلي. ليس الأمر أقل تعقيدًا فحسب ، بل إنه يعطيني أيضًا النتائج التي أحتاجها - حيث تبدأ المراكز الأربعة الأولى من الأول إلى الرابع ، والأربعة السفلية تبدأ من الثامن إلى الخامس.
بعد أسبوعين من مناقشتي مع Antriksh ، تم إطلاق تحدي LuckyTemplates العاشر. تضمن جزء من المتطلبات نظام تصنيف ، مما جعلني أفكر مرة أخرى في مقياس DAX الخاص بـ Antriksh. أدركت أنه يمكنني نسخ المقياس ولصقه ، ثم تطبيق بعض المقاييس المتفرعة للتوصل إلى النتائج التي أحتاجها.
تحليل مقياس داكس: بناء القياس خطوة بخطوة
الآن ، سأقوم بتفصيل المقاييس التي استخدمتها لصفحة التصنيفات للحصول على النتائج التي أردتها. يمكن أن يساعدني تحليل مقياس DAX هذا في شرح كيفية عمل المقياس ، مع مراعاة عدد الصفوف التي استغرقتها لإكماله.
في دروسي التعليمية الأخرى ، أوضحت كيف أحب تجميع مقاييسي لجعل الأمور أكثر تنظيمًا . لذلك قمت بإنشاء مجلد فرعي لـ Top N v2.
ضمن هذا المجلد ، يوجد مقياس لدقائق وقت تعطل موردي أفضل N Plants . سترى أنه يحتوي على نفس 41 سطرًا من التعليمات البرمجية التي عرضتها عليك سابقًا أثناء مناقشة مقياس Antriksh. في الأساس ، كل ما كان علي فعله هو استبدال بعض العناصر للحصول على النتائج التي أريدها.
لتقسيم هذا بشكل أفضل ، قمت بتقسيم هذا المقياس بأكمله إلى 9 أجزاء مختلفة. سأستعرض كل خطوة من هذه الخطوات من خطوة إلى تسعة وأشرح ما يحققه كل من هذه الخطوات.
يستخدم المقياس عددًا من المتغيرات حتى أتمكن من الحصول على نتائج أوضح. يساعد تعيين هذه المتغيرات المستخدم النهائي على معرفة كيفية تجميع المقياس ويشرح تفاصيل كيفية حصولي على كل نتيجة.
لنبدأ بالخطوة الأولى ، والتي تحدد المسمى BaseTable.
في هذا BaseTable ، يمكنك أن ترى أنني أشير إلى البيانات الخاصة بموقع المصنع والمورد .
عندما تعود إلى ملف PBIX ، سترى البطاقة العلوية التي تشير إلى كل من النباتات والبائعين. هذا هو السبب في أنني بحاجة إلى جميع البيانات هنا ، على عكس البطاقة الموجودة في الأسفل ، والتي هي أيضًا لدقائق التوقف ، ولكنها تستخدم فقط بيانات موقع المصنع.
نظرًا لأن الخطوة الأولى واضحة ومباشرة ، فلننتقل إلى الخطوة الثانية.
تبدأ الخطوة الثانية بوظيفة .
تشير هذه الوظيفة إلى المتغير الذي قمت بإنشائه في الخطوة 1 ودقائق وقت التوقف .
يتأكد من ظهور القيمة من خلال تجميع الدالتين و معًا . أريد أيضًا أن تكون النتائج أكبر من أو تساوي الصفر. ذلك لأن مجموعة البيانات المستخدمة لهذا التقرير تضمنت بعض المجموعات حيث يكون المصنع أو البائع فارغًا. هناك أيضًا إدخالات حيث تكون القيمة صفر.
تتضمن الخطوة الثالثة مجموعة أخرى من المتغيرات ، تبدأ بقيمة N.
هنا ، N تساوي 4 لأنني أريد أن تظهر الأربعة العلوية والأربعة السفلية.
كما أنه يحدد بادئة لـ Top & N ، بالإضافة إلى شرطة.
عند تجميعها معًا ، فإنها تريد ببساطة إظهار "أعلى 4 -" ، وهي الطريقة التي تبدأ بها البطاقة المقابلة قبل تعداد النتائج المتوقعة.
الآن ، دعنا ننتقل إلى الخطوة الرابعة. هذا هو المكان الذي أبدأ فيه الخروج بالنتائج المتوقعة.
قد يفكر البعض في استخدام في هذه الحالة. بعد كل شيء ، أحاول ترتيب الإدخالات والوصول إلى أفضل النتائج. ومع ذلك ، شعرت أنا وأنتريكش أن سيكون أكثر ملاءمة في هذه الحالة لأننا نحتاج فقط إلى المراكز الأربعة الأولى بترتيب ASC .
بعد ذلك ، استخدمت وظيفة ، التي تستخدم بيانات موقع المصنع.
كما أنه يحدد التنسيق الذي أريد أن تظهر به القائمة. لهذا السبب سترى أنه يحتوي على شرطة مائلة للخلف وفاصلة ، بالإضافة إلى علامات اقتباس للدلالة على المسافات. يتم ضبطه أيضًا على ترتيب ASC ، لذا إذا عدت إلى ملف PBIX ، فسترى قائمة الأربعة الأولى مع خطوط مائلة عكسية وفواصل بين النتائج.
تبدأ الخطوة الخامسة من الإجراء باستبدال الفاصلة الأخيرة في القائمة بعلامة " و" .
عندما تعود إلى الشريحة ، سترى أن الإدخال الأخير يحتوي على "و" قبل البائع وموقع المصنع.
هذا ما يتم إنجازه في الخطوة الخامسة. إنها تنشئ قائمة وتستخدم وظيفة لـ LastCommaPosition .
لاحظ أن هذا يشير إلى أن N أكبر من 2. وهذا يعني أن الاستبدال يحدث بعد السلسلة الثالثة.
ستبدو الخطوة السادسة مألوفة لأنها في الأساس تنسخ نفس الشيء الذي فعلته في الأعلى لبدء القائمة بـ "Top 4 -".
الاختلاف الوحيد هنا هو أنني أريده أن يظهر كـ "أسفل 4 -" بدلاً من "أعلى 4 -".
تم استخدام الجزء الذي ناقشته سابقًا حول استخدام مرة أخرى هنا في الأسفل ، لكنني الآن أستدعي المتغير BottomData بدلاً من TopData. مرة أخرى ، يقوم هذا الجزء بإدراج الشرطة المائلة للخلف والفاصلة بين أسماء المصانع والبائعين.
عندما ننظر إلى الوراء في مقياس Antriksh الأصلي ، هذا أيضًا هو نفس الجزء الذي استخدم فيه ASC ، مما أدى إلى ظهور القائمة على عكس ما توقعت. لهذا السبب أستخدم DESC هنا بدلاً من ذلك.
لذلك ، في الأساس ، في هذه المرحلة فصاعدًا ، يتم نسخ معظمها ولصقها من الأجزاء السابقة من المقياس. أنا فقط أستبدل كلمة "Top" بكلمة "Bottom" في معظم الحالات.
بالنسبة للخطوة 8 ، أريد تغيير الفاصلة الأخيرة بكلمة And .
الخطوة التاسعة تختتم هذا الإجراء.
يستخدم هذا الدالة مع الرقم 10. وهذا يضمن ظهور أعلى 4 و 4 أسفل في أسطر منفصلة. فكر في الأمر على أنه مفتاح العودة على لوحة المفاتيح. يجعلك تنزل إلى الصف التالي بحيث لا يظهر الأربعة العلوي والسفلي في سطر واحد.
التحقق من النتائج
تمكنا أنا وأنتريكش من تقليص الصفوف الأصلية البالغ عددها 90 زائدًا من DAX إلى 41 سطرًا. ومع ذلك ، قد لا يزال 41 سطرًا كثيرًا بالنسبة لبعض المستخدمين. كان تقسيم هذا المقياس بالطريقة التي قمنا بها طريقة رائعة لفهم سبب وجوب كتابة المقياس بهذه الطريقة.
الآن بعد أن أوضحت ما كانت كل خطوة تدور حوله ، حان الوقت للتحقق مما إذا كان هذا الإجراء يفعل حقًا ما يفترض القيام به. دعنا نذهب إلى صفحة التصنيفات ونتحقق من النتائج بالجزء الآخر من التقرير.
سأبدأ بالنباتات / البائعون حسب دقائق وقت التوقف .
يُظهر هذا المراكز الأربعة الأولى كـ Linktype في New Britain ، و Flashpoint في Frazer ، و Quinu في Twin Rocks ، و Layo في Henning. أما بالنسبة للمراكز الأربعة السفلية ، فيظهر أن ويكيدو في ميدلتاون هي الأسوأ بشكل عام.
الآن ، سأتوجه إلى صفحة البائعين والنباتات معًا لمعرفة ما إذا كانت النتائج ستطابق.
مع عمود الترتيب حسب دقائق وقت التعطل المصنف من أعلى إلى أسفل ، فإنه يعرض النتيجة الصحيحة للمراكز الأربعة الأولى.
ومع ذلك ، قد يتساءل البعض منكم عن سبب ظهور بريطانيا الجديدة في المرتبة الثانية في هذه القائمة ، عندما تأتي في أعلى بطاقة صفحة الترتيب .
لاحظ أن الترتيب يظهر ثلاثة إدخالات كأفضل 1. تم تصنيف هذه باستخدام RANKX.
ومع ذلك ، إذا نظرت إلى العمود الخاص بـ " دقائق وقت التوقف " ، فستظهر أن بريطانيا الجديدة تظهر 0 بينما يظهر كل من فريزر وتوين روكس 1. لهذا السبب على البطاقة في صفحة التصنيف ، لا تزال بريطانيا الجديدة تتصدر قائمة فريزر وتوين روكس حتى لو تم تصنيفهم جميعًا في المرتبة الأولى.
الآن ، دعنا نتحقق مما إذا كا��ت الأربعة السفلية صحيحة. فقط قم بفرز الترتيب حسب دقائق وقت التوقف بترتيب تنازلي.
كما ترون ، تظهر Middletown و Waldoboro و Barling و Chesaning على أنهم الأربعة الأدنى على البطاقة. هذا يعني أن مقياس المصانع / البائعين حسب دقائق وقت التوقف صحيح.
الآن ، لنلقِ نظرة على بطاقة Plants By Downtime Minutes .
هذا يدل على أن المراكز الأربعة الأولى هي ريدينغ وميدلتاون ووالدوبورو وكلاركسفيل. المراكز الأربعة الأخيرة هي ريفرسايد وتشارلز سيتي وتوين روكس وتشيزانينج.
للتحقق من هذه النتائج ، سأقوم بالتحقق من صفحة النباتات ومعرفة ما إذا كانت النتائج متطابقة. يتمثل الاختلاف الأكبر هنا في أن البطاقة التي تحققنا منها مسبقًا كانت تستند إلى بيانات النباتات والموردين ، بينما تنظر هذه البطاقة فقط إلى بيانات النباتات.
عندما نقوم بفرز الترتيب حسب دقائق وقت التوقف من أعلى إلى أسفل ، فإنه يظهر أن المراكز الأربعة الأولى هي ريدينغ ، وميدلتاون ، ووالدوبورو ، وكلاركسفيل.
الآن ، دعنا نعكس الترتيب هذه المرة لنرى ما إذا كانت الأربعة السفلية تتطابق. سترى أنه من بين 30 مصنعًا في قائمتنا ، حصلت ريفرسايد ، وتشارلز سيتي ، وتوين روكس ، وتشيسانينج على الترتيب الأدنى.
هذا يعني أننا نرى النتائج الصحيحة للنباتات.
هذه المرة ، دعنا نلقي نظرة على البطاقة التي تصنف البائعين حسب العيوب .
سأذهب إلى صفحة البائعين هذه المرة لمعرفة ما إذا كان Dablist هو البائع الأفضل و Yombu هو الأسوأ على أساس العيوب.
عندما نصنف البائعين من الأفضل إلى الأسوأ ، يبدو أن المراكز الأربعة الأولى تطابق البطاقة في صفحة التصنيفات .
اسمحوا لي أن أغير الترتيب من الأسوأ إلى الأفضل وأرى ما إذا كانت الأربعة الأخيرة تتطابق أيضًا.
سترى أن يومبو هو الأسوأ بالفعل ، إلى جانب الثلاثة الآخرين المدرجة في القائمة الأربعة السفلية على البطاقة.
تحليل مقياس داكس: تطبيق القياس المتفرّع
تحليل مقياس DAX الذي قمنا به سابقًا نظر فقط إلى المقياس وراء المصانع / البائعين حسب دقائق وقت التوقف . لكن كيف عملت على مقاييس البطاقات الأخرى؟ هذا هو المكان الذي يأتي فيه قياس التفرع .
يتضمن القياس المتفرّع استخدام مقياس موجود لاشتقاق نتائج أخرى.
في هذا التقرير ، قمت ببساطة بنسخ ولصق الإجراء الذي ناقشناه سابقًا وقمت بتغيير بعض العناصر لتناسب ما أحتاجه.
من الواضح أن اسم المقياس هو أول شيء سأغيره. ولكن أكثر من ذلك ، أحتاج أيضًا إلى تغيير البيانات التي أشير إليها. على سبيل المثال ، استخدمنا كلاً من موقع المصنع وبيانات البائع لقياسنا الأصلي.
ولكن إذا كنت سأستخدم نفس الإجراء لـ Plants By Downtime Minutes ، فسأضطر إلى إزالة بيانات البائع والتركيز فقط على موقع المصنع.
سيتعين علي تغيير ذلك بالنسبة لجميع الأجزاء الأخرى من نفس المقياس الذي يشير أيضًا إلى مجموعتي البيانات ، كما هو الحال عندما استخدمت CONCATENATEX .
وينطبق الشيء نفسه على دقائق وقت التوقف . إذا كنت سأعمل على بطاقة تبحث في متوسط دقائق أو عيوب وقت التوقف ، فكل ما علي فعله هو تغيير هذا الجزء.
أما بالنسبة للجزء الذي يقول "DowntimeMins" في المقياس ، فلن يضر أن أبقيه على هذا النحو حتى إذا كنت أشير إلى عيوبي أو متوسط دقائق وقت التعطل.
ولكن إذا كنت من النوع الذي يحب الاحتفاظ بالأشياء بترتيب معين ، فيمكنك الدخول وتغيير هذا أيضًا. فقط تذكر أنه إذا قمت بتغيير هذا ، فسيتعين عليك تغييره بالكامل في جميع أنحاء الصفحة. وهذا يعني بذل بعض الجهد الإضافي لتحقيق نفس النتائج.
يمكنك فقط تخيل مقدار الوقت الذي وفرته باستخدام قياس التفرع . إن القيام بذلك بهذه الطريقة يعني أنني لن أضطر إلى الاستمرار في إنشاء مقاييس جديدة لكل جزء من التقرير الذي أعمل عليه. أحتاج فقط إلى تعديل الإجراء الحالي بناءً على النتائج التي أريد رؤيتها ، مع تقليل وقت تطوير تقريري بقدر كبير.
لنوضح لك كيف فعلت ذلك ، دعونا نلقي نظرة على البائعين حسب دقائق وقت التوقف .
عندما أقوم بسحب المقياس ، سترى أنه يحتوي على نفس 41 صفاً مثل النباتات / البائعين حسب دقائق وقت التوقف .
ومع ذلك ، في الخطوة 1 ، أشرت فقط إلى بيانات البائع وأزلت موقع المصنع.
لقد غيرت البيانات في أماكن أخرى حيث ينطبق ذلك أيضًا.
احتفظت بدقائق وقت التوقف لأن هذا هو ما أسند إليه النتائج.
لذا فهذه إصلاحات سريعة للمقياس بحيث يمكن تطبيقها على مناطق أخرى من التقرير.
اسمحوا لي أن أريكم مثالا آخر هنا. هذه المرة ، دعونا نلقي نظرة على "البائعون بالعيوب" .
مرة أخرى ، نحن ننظر فقط إلى البائع هنا.
ما قمت بتغييره هنا هو الإشارة إلى "دقائق وقت التوقف" . بدلاً من ذلك ، استخدمت العيوب .
لقد تأكدت أيضًا من أن الصفوف الأخرى لا تزال تستخدم بيانات البائع.
مقاييس DAX في LuckyTemplates باستخدام تفريع القياس
تنفيذ مجموعات مقاييس DAX في تقاريرك - مراجعة نمذجة LuckyTemplates
لاستخراج رؤى فريدة في LuckyTemplates باستخدام تصنيف مقاييس DAX
خاتمة
كان هذا عملًا قويًا لمؤشر DAX بواسطة Antriksh. لقد استمتعت بالتأكيد بالعمل معها ، وتقسيمها ، وتطبيقها على أجزاء مختلفة من تقريري .
كان تحليل مقياس DAX المتعمق الذي قمنا به أيضًا طريقة رائعة لفهم كل جانب من جوانب العملية. قد يبدو العمل على مقياس طويل أمرًا شاقًا في البداية ، ولكن تحليل مقياس DAX الشامل مثل هذا يمكن أن يساعد في فرز الأمور.
أكد العمل على هذه الصفحة أيضًا على أهمية وجود مجتمع تعاوني مثل المجتمع الموجود هنا في LuckyTemplates. إنه لأمر رائع أن تتاح للجميع فرصة العمل مع أشخاص مثل Antriksh ، بالإضافة إلى أعضاء وخبراء آخرين لديهم أيضًا بعض النصائح والحيل الخاصة بهم.
أتمنى لك كل خير،
جاريت
ما هي الذات في بايثون: أمثلة من العالم الحقيقي
ستتعلم كيفية حفظ وتحميل الكائنات من ملف .rds في R. ستغطي هذه المدونة أيضًا كيفية استيراد الكائنات من R إلى LuckyTemplates.
في هذا البرنامج التعليمي للغة ترميز DAX ، تعرف على كيفية استخدام وظيفة الإنشاء وكيفية تغيير عنوان القياس ديناميكيًا.
سيغطي هذا البرنامج التعليمي كيفية استخدام تقنية Multi Threaded Dynamic Visuals لإنشاء رؤى من تصورات البيانات الديناميكية في تقاريرك.
في هذه المقالة ، سأقوم بتشغيل سياق عامل التصفية. يعد سياق عامل التصفية أحد الموضوعات الرئيسية التي يجب على أي مستخدم LuckyTemplates التعرف عليها في البداية.
أريد أن أوضح كيف يمكن لخدمة تطبيقات LuckyTemplates عبر الإنترنت أن تساعد في إدارة التقارير والرؤى المختلفة التي تم إنشاؤها من مصادر مختلفة.
تعرف على كيفية إجراء تغييرات في هامش الربح باستخدام تقنيات مثل قياس التفرع والجمع بين صيغ DAX في LuckyTemplates.
سيناقش هذا البرنامج التعليمي أفكار تجسيد مخازن البيانات وكيفية تأثيرها على أداء DAX في توفير النتائج.
إذا كنت لا تزال تستخدم Excel حتى الآن ، فهذا هو أفضل وقت لبدء استخدام LuckyTemplates لاحتياجات إعداد تقارير الأعمال الخاصة بك.
ما هي بوابة LuckyTemplates؟ كل شيئ ترغب بمعرفته