Microsoft Power Fx का अवलोकन

नोट

Microsoft Power Fx कैनवास ऐप्स के लिए सूत्र भाषा का नया नाम है. इन पूर्वावलोकन और संबद्ध आलेखों का काम प्रगति पर है क्योंकि हम कैनवास ऐप से भाषा निकालते हैं, इसे अन्य Microsoft Power Platform उत्पाद के साथ एकीकृत करते हैं, और इसे खुले स्रोत के रूप में उपलब्ध कराते हैं. आज भाषा के बारे में अधिक जानने और अनुभव करने के लिए Power Apps में फॉर्मूला के साथ शुरू करें के साथ शुरू करें और मुफ़्त Power Apps परीक्षण के लिए साइन अप करें.

Power Fx कम-कोड भाषा है जिसका Microsoft Power Platform पर उपयोग किया जाएगा. यह एक सामान्य-उद्देश्य, मजबूत-प्रकार, घोषित और कार्यात्मक प्रोग्रामिंग भाषा है.

Power Fx को मानव-अनुकूल पाठ में व्यक्त किया गया है. यह एक कम-कोड भाषा है जिसे निर्माता Excel-जैसे सूत्र बार या Visual Studio Code पाठ विंडो में सीधे काम कर सकते हैं. कम-कोड में "कम" भाषा के संक्षिप्त और सरल स्वभाव के कारण है, जो निर्माताओं और डेवलपर्स दोनों के लिए सामान्य प्रोग्रामिंग कार्यों को आसान बनाता है. यह आपस में किसी भी तरह की सीखने या दोबारा लिखने की परेशानी नहीं होने के साथ, जिन्होंने पहले कभी भी प्रोग्रामिंग नहीं की है उनके लिए "नो-कोड" से लेकर अनुभवी पेशेवरों के लिए "प्रो कोड" तक विकास के पूर्ण विस्तार को सक्षम करता है, विभिन्न टीम को सहयोग करने और समय एवं खर्च की बचत के लिए सक्षम करता है.

नोट

इस आलेख में, जब हम एक ऐसी विशेषता का वर्णन करते हैं जिसका उपयोग प्रोग्रामिंग कौशल स्पेक्ट्रम के अंत में किया जा सकता है, तो हम निर्माताओं को संदर्भित करते हैं. यदि सुविधा अधिक उन्नत है और एक विशिष्ट Excel उपयोगकर्ता के कार्यक्षेत्र से बाहर होने की संभावना है, तो हम उपयोगकर्ता को एक डेवलपर के रूप में संदर्भित करते हैं.

Power Fx विषयों को एक साथ घोषणात्मक स्प्रेडशीट-जैसे फॉर्मूला के साथ जोड़ता है. उदाहरण के लिए, एक संबद्ध सूत्र के साथ जो अन्य नियंत्रणों के गुणों के आधार पर इसके मूल्य की गणना करता है, UI नियंत्रण के दृश्यमान गुण को एक Excel कार्यपत्रक में एक सेल के रूप में सोचें. सूत्र तर्क स्वचालित रूप से मान को पुन: परिकलित करता है, जैसा कि एक स्प्रेडशीट करता है, जो नियंत्रण की दृश्यता को प्रभावित करता है.

इसके अलावा, Power Fx आवश्यकता पड़ने पर अनिवार्य तर्क पेश करता है. कार्यपत्रक में आमतौर पर ऐसे बटन नहीं होते हैं जो एक डेटाबेस में परिवर्तन प्रस्तुत कर सकते हैं, लेकिन ऐप अक्सर करते हैं. उसी अभिव्यक्ति भाषा का प्रयोग घोषणात्मक और अनिवार्य तर्क दोनों के लिए किया जाता है.

Power Fx को ओपन-सोर्स सॉफ्टवेयर के रूप में उपलब्ध कराया जाएगा. यह वर्तमान में कैनवास ऐप्स में एकीकृत है, जहां आप आज इसे अनुभव कर सकते हैं. हम इसे Power Apps से निकालने की प्रक्रिया में हैं ताकि अन्य Microsoft Power Platform उत्पादों का और ओपन सोर्स के रूप में उपयोग हो सके. अधिक जानकारी: Microsoft Power Fx GitHub पर

यह आलेख भाषा और इसके डिजाइन सिद्धांतों का अवलोकन है. Power Fx के बारे में अधिक जानने के लिए, निम्न आलेख देखें:

स्प्रेडशीट का ख़्याल रखें

क्या होगा अगर आप Excel में कार्यपत्रक बनाते समय आसानी से ऐप बना पाएँ?

क्या होगा अगर आप अपने मौजूदा स्प्रेडशीट ज्ञान का लाभ उठा पाएँ?

ये कुछ सवाल थे जिन्होंने Power Apps और Power Fx के निर्माण को प्रेरित किया. Excel के साथ हर दिन सैकड़ों लाखों लोग कार्यपत्रक बनाते हैं; आइए उन्हें आसान बनाने के लिए ऐप बनाएं और ऐसे अवधारणाओं का उपयोग करें जो वे पहले से जानते हैं. Power Fx को Power Apps से निकालकर, हम स्वचालन, या एक Virtual Agent, या अन्य डोमेन के निर्माण के लिए इन सवालों के जवाब देने जा रहे हैं.

Power Fx सहित सभी प्रोग्रामिंग भाषाओं में भाव हैं : संख्याओं, स्ट्रिंग या अन्य डेटा प्रकारों पर गणना को पेश करने का एक तरीका. उदाहरण के लिए, अधिकतर भाषाओं में mass * acceleration mass और acceleration के गुणा को अभिव्यक्त करता है. किसी अभिव्यक्ति के परिणाम को एक चर में रखा जा सकता है, प्रक्रिया में तर्क के तौर पर उपयोग किया जाता है या वृहद अभिव्यक्ति में निहित किया जाता है.

Power Fx इसे एक कदम आगे लेता है. अपने आप में एक अभिव्यक्ति कहती है कि यह किसकी गणना कर रहा है. यह निर्माता पर निर्भर है कि इसे एक चर में रखें या इसे फ़ंक्शन में पास करें. Power Fx में, केवल एक अभिव्यक्ति लिखने के बजाय जिसका कोई विशिष्ट अर्थ नहीं है, आप एक सूत्र लिखते हैं जो आइडेंटिफायर के लिए अभिव्यक्ति को बांधता है. आप force = mass * acceleration को एक सूत्र के रूप में लिखें ताकि force की गणना की जा सके. mass या acceleration परिवर्तन के रूप में, force स्वचालित रूप से एक नए मूल्य के लिए अद्यतन किया जाता है. अभिव्यक्ति ने एक गणना का वर्णन किया, एक सूत्र ने उस गणना को एक नाम दिया और इसे एक नुस्खे के रूप में इस्तेमाल किया. इसलिए हम Power Fx को सूत्र भाषा के तौर पर संदर्भित करते हैं.

उदाहरण के लिए, यह स्टैक ओवरफ्लो का सूत्र विपरीत क्रम में एक स्ट्रिंग खोजता है. Excel में, यह निम्न छवि जैसा दिखता है.

रिवर्स सर्च

इस सूत्र के साथ Excel में सूत्र पट्टी का स्क्रीनशॉट: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) सेल A1 में "Hello, World पाठ शामिल है! आपसे मिलकर बहुत अच्छा लगा! ” सेल A2 में "आप!" पाठ शामिल है

Power Fx इसी फॉर्मूला के साथ कार्य करता है, सेल सन्दर्भों को नियंत्रण गुण सन्दर्भों के साथ प्रतिस्थापित कर दिया जाता है.

Power Fx रिवर्स सर्च.

Power Apps में Power Fx सूत्र पट्टी का स्क्रीनशॉट. सूत्र है =राइट (इनपुट। टेक्स्ट, लेन (इनपुट। टेक्स्ट) - फाइंड ("|", सबस्टिट्यूट (इनपुट। टेक्स्ट," "," |", लेन (इनपुट। टेक्स्ट) - लेन (विकल्प (इनपुट। टेक्स्ट)," ",""))))) सूत्र के नीचे इनपुट बॉक्स में, टेक्स्ट "हैलो, वर्ल्ड! आपसे मिलकर बहुत अच्छा लगा! ” प्रकट होता है, अक्षरशः. उसी समय लेबल बॉक्स में, अंतिम शब्द के अक्षर दिखाई देते हैं. जब पूरा पाठ इनपुट बॉक्स में दिखाई देता है, तो शब्द "आप!" लेबल बॉक्स में दिखाई देता है.

जैसे ही Input नियंत्रण मान बदल जाता है, Label नियंत्रण स्वचालित तौर से फॉर्मूला के दोबारा गणना करता है और नए मान को दिखाता है. यहां कोई भी OnChange इवेंट हैंडलर्स नहीं हैं जैसा कि अन्य भाषाओं में सामान्य तौर पर होंगे.

एक अन्य उदाहरण जो स्क्रीन के Fill रंग के लिए एक फॉर्मूला का उपयोग करता है. जब लाल, बरा और नीला नियंत्रित करने वाले स्लाइडर्स को बदल जाते हैं, तो पृष्ठभूमि रंग स्वचालित रूप से बदल जाता है क्योंकि इसकी पुनर्गणना हो रही है.

रंग स्लाइडर.

स्लाइडर नियंत्रण के लिए कोई OnChange इवेंट्स नहीं हैं जैसा अन्य भाषाओं में सामान्य होंगे. Fill गुण का मान स्पष्ट रूप से सेट करने का कोई तरीका नहीं है. यदि रंग अपेक्षा के अनुरूप काम नहीं कर रहा है, तो यह समझने के लिए कि यह काम क्यों नहीं कर रहा है, आपको यह एक सूत्र देखने की जरूरत है. आपको अप्रत्याशित समय पर गुण सेट करने वाले कोड का एक टुकड़ा खोजने के लिए ऐप के माध्यम से खोज करने की आवश्यकता नहीं है; कोई समय तत्व नहीं है. सही सूत्र मान हमेशा बनाए रखा जाता है.

जैसा कि स्लाइडर्स को गहरे रंग पर सेट किया जाता है, लाल, हरे और नीले के लिए लेबल को क्षतिपूर्ति करने के लिए सफ़ेद पर बदल दिया जाता है. प्रत्येक लेबल नियंत्रण के लिए Color गुण पर यह एक सरल सूत्र के माध्यम से किया जाता है.

Power Fx कलर स्लाइडर्स.

इसके बारे में बहुत अच्छी बात यह है कि Fill रंग के लिए जो हो रहा है, उससे अलग है: ये पूरी तरह से अलग गणनाएं हैं. बड़ी अखंड प्रक्रियाओं के बजाय, इसके लिए जो हो रहा Power Fx लॉजिक आमतौर पर बहुत सारे छोटे फॉर्मूलों से बना होता है जो स्वतंत्र होते हैं. यह उन्हें समझने में आसान बनाता है और मौजूदा तर्क को परेशान किए बिना संवर्द्धन को सक्षम बनाता है.

Power Fx एक प्रकट भाषा है, जैसे Excel है. निर्माता यह निर्धारित करता है कि उन्हें क्या व्यवहार चाहिए, लेकिन यह निर्धारित करना और उसे पूरा करना है कि कब और कैसे इसे पूरा करना है, ऐसा सिस्टम करता है. उसे व्यावहारिक बनाने के लिए, अधिकतर कार्य बिना किसी दुष्प्रभाव के शुद्ध कार्य के जरिए किए जाते हैं, Power Fx को एक कार्यात्मक भाषा बनाते हैं (फिर से, Excel की तरह ही).

हमेशा लाइव

वर्कशीट का परिभाषित पहलू यह है कि वे हमेशा लाइव होती हैं, और परिवर्तन तुरंत दिखाई देते हैं. वर्कशीट में कंपाइल या रन मोड नहीं है. जब एक फॉर्मूला को संशोधित किया जाता है या एक मान दर्ज किया जाता है, तो परिवर्तनों को दर्शाने के लिए वर्कशीट की तुरंत पुनर्गणना की जाती है. किसी भी त्रुटि का पता चलता है जो तुरंत सामने आती हैं, और शेष वर्कशीट में हस्तक्षेप नहीं करती हैं.

यही बात Power Fx के साथ लागू होती है. प्रोग्राम को उस डेटा जिस पर यह काम कर रहा है के साथ लगातार सिंक में रखने के लिए एक वृद्धिशील कंपाइलर का उपयोग किया जाता है. परिवर्तन स्वचालित रूप से प्रोग्राम के ग्राफ के माध्यम से प्रोपेगेट होते हैं, जो आश्रित गणनाओं के परिणामों को प्रभावित करते हैं, जो रंग या स्थिति जैसे नियंत्रणों पर गुण चला सकते हैं. वृद्धि संबंधी कंपाइलर IntelliSense, सुझाव, ऑटोकंप्लीट, और प्रकार चेकिंग के साथ एक समृद्ध फॉर्मूला संपादन अनुभव भी प्रदान करता है.

इस एनिमेशन में नीचे, स्लाइडर नियंत्रण पर निर्भर एक लेबल नियंत्रण में ऑर्डर संख्या प्रदर्शित होता है, तब भी जब इसके नीचे के लेबल पर दो त्रुटियां हैं. अनुप्रयोग लाइव और इंटरएक्टिव है. फॉर्मूला को .InvalidName दर्ज करके ठीक करने का पहला प्रयास तत्काल लाल रेखा और त्रुटि प्रदर्शित करने के रूप में सामने आता है, जैसा कि इसे होना चाहिए, लेकिन ऐप चलता रहता है.

हमेशा लाइव.

जब .Employee दर्ज किया जाता है, तो इसके कारण कर्मचारी टेबल को Data फलक में जोड़ा जाता है, इस टेबल के लिए मेटाडेटा पुनर्प्राप्त किया जाता है, और कॉलम के लिए सुझाव तुरंत पेश किए जाते हैं. हम बस एक टेबल से दूसरे टेबल पर एक संबंध में जाते हैं और सिस्टम ऐप के संदर्भों के लिए आवश्यक समायोजन करता है. जब .Customer को जोड़ा जाता है तो भी सही चीज होती है.

प्रत्येक बदलाव के बाद, स्लाइडर अपने अंतिम मान के साथ जारी रहता है और अन्य चर अपने मान को बनाए रखते हैं. हर जगह, ऑर्डर संख्या का शीर्ष लेबल पर प्रदर्शित रहना जारी है जैसा कि इसे होना चाहिए. अनुप्रयोग लाइव है, पूरे समय वास्तविक डेटा को संसाधित कर रहा है. हम इसे सुरक्षित कर सकते हैं, दूर जा सकते हैं, और अन्य इसे ठीक Excel की तरह खोल और उपयोग कर सकते हैं. कोई निर्माण चरण नहीं है, कोई कंपाइल नहीं है, केवल प्रकाशित चरण है ताकि यह निर्धारित किया जा सके कि ऐप का कौन सा संस्करण उपयोगकर्ताओं के लिए तैयार है.

निम्न कोड

Power Fx संक्षिप्त में व्यापार तर्क का वर्णन करता है, फिर भी शक्तिशाली, फॉर्मूला के रूप में. अधिकांश तर्क को एक ही पंक्ति तक कम किया जा सकता है, जिसमें अधिक जटिल आवश्यकताओं के लिए बहुत अधिक अभिव्यक्ति और नियंत्रण होता है. लक्ष्य यह है कि कम से कम उन अवधारणाओं को ध्यान में रखा जाए जिन्हें एक निर्माता को समझना होता है—आदर्श रूप से, एक Excel उपयोगकर्ता पहले से नहीं जानता होगा.

उदाहरण के लिए, किसी ऑर्डर के लिए किसी कर्मचारी का पहला नाम देखने के लिए, आप Power Fx लिखें जैसा कि निम्नलिखित एनीमेशन में दिखाया गया है. Excel अवधारणाओं से बढ़कर, डेटा संरचना में ड्रिलिंग के लिए यहां इस्तेमाल की जाने वाली एकमात्र जोड़ी गई अवधारणा बिंदु "." नोटेशन है, इस मामले में .Employee.'First Name'. एनीमेशन Power Fx फॉर्मूला के हिस्सों और अवधारणाओं के बीच मैपिंग दिखाता है, जिन्हें स्पष्ट रूप से समकक्ष JavaScript में कोड किए जाने की आवश्यकता होती है.

निम्न-कोड JavaScript.

आइए उन चीजों की गहनता से देखते हैं जो Power Fx हमारे लिए कर रहा है और इसके पास अनुकूल करने की स्वतंत्रता है क्योंकि फॉर्मूला घोषित किया गया है:

  • एसिन्क्रॉनस: Power Fx में सभी डेटा कार्य अतुल्यकालिक हैं. निर्माता को इसे निर्दिष्ट करने की आवश्यकता नहीं है और न ही कॉल समाप्त होने के बाद निर्माता को संचालन को सिंक्रनाइज़ करने की ज़रूरत है. निर्माता को इस अवधारणा के बारे में जागरुक होने की कतई आवश्यकता नहीं है, उन्हें यह जानने की आवश्यकता नहीं है कि एक वादा क्या है या लैम्बडा फ़ंक्शन क्या है.

  • स्थानीय और रिमोट: Power Fx डेटा के लिए एक ही सिंटैक्स और फ़ंक्शन का उपयोग करता है जो इन-मेमरी में स्थानीय है और एक डेटाबेस या सेवा में रिमोट है. उपयोगकर्ता को इस भेद के बारे में सोचने की आवश्यकता नहीं है. Power Fx स्वचालित तौर पर यह कार्यभार सौंपता है कि फिल्टर को संसाधित करने के लिए यह सर्वर के लिए क्या हो सकता है और वहां अधिक प्रभावी तरीके से छांटता है.

  • संबंधपरक डेटा: ऑर्डर और ग्राहक दो अलग-अलग टेबल हैं, जिनके कई रिश्ते हैं. OData क्वेरी को विदेशी कुंजी के ज्ञान के साथ "$expand" की आवश्यकता पड़ती है, SQL में किसी ज्वाइन की तरह. फॉर्मूला में इनमें से कोई भी नहीं भी है; असल में डेटाबेस कुंजियों की अन्य अवधारणा हैं जिसके बारे में निर्माता को जानने की आवश्यकता नहीं है. किसी रिकॉर्ड से संबंधों के संपूर्ण ग्राफ़ तक पहुंचने के लिए निर्माता सरल डॉट नोटेशन का उपयोग कर सकते हैं.

  • प्रोजेक्शन: क्वेरी लिखते समय, कई डेवलपर्स select * from table लिखते हैं, जो डेटा के सभी कॉलमों को वापस लाता है. Power Fx सभी कॉलम का विश्लेषण करता है जिनका उपयोग संपूर्ण अनुप्रयोग के जरिए किया जाता है, यहां तक कि फॉर्मूला पर निर्भरता भी. प्रोजेक्शन स्वचालित रूप से ऑप्टिमाइज़ है और, फिर से, निर्माता को यह जानने की ज़रूरत नहीं है कि "प्रोजेक्शन" का क्या मतलब है.

  • केवल वही पुनः प्राप्त करें, जो चाहिए: इस उदाहरण में, LookUp फ़ंक्शन का मतलब है सिर्फ एक रिकॉर्ड को पुनः प्राप्त होना चाहिए और केवल वही वापस आता है. यदि Filter फ़ंक्शन का उपयोग करके अधिक रिकॉर्ड का अनुरोध किया जाता है—जिसके लिए हजारों रिकॉर्ड अर्हता प्राप्त कर सकते हैं—प्रति पृष्ठ 100 रिकॉर्ड के आदेश पर डेटा का केवल एक पृष्ठ एक बार में लौटाया जाता है. उपयोगकर्ता को अधिक डेटा देखने के लिए गैलरी या डेटा टेबल में से देखना चाहिए और उनके लिए इसे स्वचालित रूप से लाया जाएगा. निर्माता डेटा के बड़े सेटों के बारे में सोचने की जरूरत के बिना प्रबंध कर सकता है, ताकि प्रबंधन किए जा सकने योग्य टुकड़ों के लिए डेटा अनुरोध को सीमित किया जा सके.

  • केवल ज़रूरत पड़ने पर ही रन होता है: हमने लेबल नियंत्रण की Text परिसंपत्ति के लिए एक फॉर्मूला परिभाषित किया है. जैसे चयनित चर बदलते हैं, LookUp की स्वचालित तौर पर दोबारा गणना की जाती है और लेबल अपडेट हो जाता है. चयन के लिए निर्माता को OnChange हैंडलर लिखने की आवश्यकता नहीं थी और यह याद रखने की ज़रूरत नहीं थी कि यह लेबल इस पर निर्भर है. यह घोषणात्मक प्रोग्रामिंग है, जैसा कि पहले चर्चा की गई है: निर्माता ने निर्दिष्ट किया है कि वे लेबल में क्या करना चाहते थे, न कि इसे कैसे या कब लाया जाना चाहिए. यदि यह लेबल दिखाई नहीं देता है क्योंकि यह एक ऐसी स्क्रीन पर है जो दिखाई नहीं दे रहा है, या इसकी Visible परिसंपत्ति झूठी है, तो यदि ऐसा वाकई में होता है हम इस गणना को तब तक के लिए टाल सकते हैं जब तक कि लेबल दिखाई न दे और प्रभावी रूप से समाप्त हो जाए.

  • Excel सिंटेक्स अनुवाद: Excel का उपयोग कई उपयोगकर्ताओं द्वारा किया जाता है, जिनमें से अधिकांश जानते हैं कि स्ट्रिंग संयोजन के लिए एम्परसएंड (&) का उपयोग किया जाता है. JavaScript एक प्लस चिह्न (+) का उपयोग करता है और अन्य भाषाएं बिंदु (.) का उपयोग करती हैं.

  • डिस्प्ले के नाम और स्थानीकरण: Power Fx फॉर्मूला में First Name का उपयोग किया जाता है जबकि JavaScript समतुल्य में nwind_firstname का उपयोग किया जाता है. Microsoft Dataverse और SharePoint में, एक विशिष्ट तार्किक नाम के अलावा कॉलम और टेबल के लिए एक प्रदर्शन नाम है. इस मामले में प्रदर्शन नाम अक्सर बहुत अधिक उपयोगकर्ता-अनुकूल होते हैं, लेकिन उनके पास एक और महत्वपूर्ण गुण है कि वे स्थानीयकृत हो सकते हैं. यदि आपके पास बहुभाषी टीम है, तो प्रत्येक टीम का सदस्य अपनी भाषा में टेबल और फ़ील्ड नाम देख सकता है. सभी उपयोग के मामलों में, Power Fx यह सुनिश्चित करता है कि सही तार्किक नाम स्वचालित रूप से डेटाबेस को भेजा जाता है.

कोई कोड नहीं

तर्क व्यक्त करना शुरू करने के लिए आपको Power Fx को पढ़ने और लिखने की ज़रूरत नहीं है. कई अनुकूलन और तर्क हैं जिन्हें सरल स्विचेज और UI बिल्डर के जरिए अभिव्यक्त किया जा सकता है. ये नो-कोड टूल Power Fx को पढ़ने और लिखने के लिए बनाए गए हैं, ताकि यह सुनिश्चित किया जा सके कि किसी के द्वारा इसे आगे ले जाने के लिए बहुत सारा हेडरूम है, जबकि यह स्वीकार करना होगा कि नो-कोड टूल कभी भी पूर्ण भाषा की सभी अभिव्यक्तियों की पेशकश नहीं करेंगे. यहां तक कि जब नो-कोड को बिल्डरों के साथ उपयोग किया जाता है, Power Apps में फॉर्मूला बार सामने और बीच में है, ताकि निर्माता को शिक्षित किया जा सके कि उनकी ओर से क्या किया जा रहा है जिससे वे Power Fx सीखना शुरू कर सकते हैं.

आइए कुछ उदाहरणों पर एक नज़र डालते हैं. Power Apps में, परिसंपत्ति पैनल नियंत्रण के गुणों के लिए नो-कोड स्विच और नॉब्स प्रदान करता है. व्यवहार में, अधिकांश परिसंपत्ति मान स्टैटिक हैं. आप Gallery की पृष्ठभूमि का रंग बदलने के लिए रंग बिल्डर का उपयोग कर सकते हैं. ध्यान दें कि फॉर्मूला बार इस परिवर्तन को दर्शाता है, फॉर्मूला को एक भिन्न RGBA कॉल में अपडेट करते हुए. किसी भी समय, आप फॉर्मूला बार पर जा सकते हैं और इसे एक कदम आगे ले जा सकते हैं—इस उदाहरण में रंग को समायोजित करने के लिए ColorFade का उपयोग करके. रंग की परिसंपत्ति अभी भी गुण पैनल में दिखाई देती है, लेकिन माउस घुमाने पर fx आइकन दिखाई देता है और आपको फॉर्मूला बार पर निर्देशित किया जाता है. यह पूरी तरह से दो तरीकों से काम करता है: ColorFade कॉल को हटाने से वह रंग वापस आ जाता है जिसे गुण पैनल कुछ समझता है, और आप इसे एक रंग सेट करने के लिए फिर से उपयोग कर सकते हैं.

कोई-कोड रंग नहीं.

यहां एक और अधिक जटिल उदाहरण है. गैलरी Dataverse से कर्मचारियों की एक सूची दिखाती है. Dataverse तालिका डेटा विचार प्रदान करता है. हम इनमें से एक दृश्य का चयन कर सकते हैं और इस दृश्य नाम के साथ Filter फ़ंक्शन का उपयोग करने के लिए फॉर्मूला बदल दिया गया है. दो ड्रॉप-डाउन मेनू का उपयोग सही तालिका में डायल करने और फॉर्मूला बार को छूए बिना देखने के लिए किया जा सकता है. लेकिन मान लीजिए कि आप आगे बढ़ना चाहते हैं और एक प्रकार जोड़ना चाहते हैं. हम फॉर्मूला बार में ऐसा कर सकते हैं, और गुण पैनल फिर से एक fx आइकन दिखाता है और फॉर्मूला बार में संशोधनों को निर्देशित करता है. और फिर, यदि हम फॉर्मूला को किसी चीज के लिए आसान बनाते हैं, जिसे गुण फ़लक पढ़ और लिख सके, तो इसका उपयोग फिर से किया जा सकता है.

कोई-कोड किस्म नहीं.

ये आसान उदाहरण हैं. हमारा मानना है कि Power Fx नो-कोड इंटरैक्शन का वर्णन करने के लिए एक शानदार भाषा बनाता है. यह छोटा, ताकतवर और पार्स करने में आसान है, और हेडरूम प्रदान करता है जो अक्सर "नो क्लिफ" के साथ लो-कोड तक आवश्यक होता है.

प्रो कोड

लो-कोड निर्माता कभी-कभी ऐसी चीजों का निर्माण करते हैं, जिसके लिए किसी विशेषज्ञ की सहायता की आवश्यकता होती है या बनाए रखने और बढ़ाने के लिए किसी पेशेवर डेवलपर द्वारा इसे अधिग्रहित किया जाता है. पेशेवर प्रशंसा करते हैं कि एक पेशेवर उपकरण बनाने के बजाय निम्न- कोड निर्माण सरल, तेजी, और कम महंगा हो सकता है. हर स्थिति को Visual Studio की संपूर्ण शक्ति की आवश्यकता नहीं पड़ती है.

पेशेवर अधिक उत्पादक होने के लिए पेशेवर उपकरणों का उपयोग करना चाहते हैं. Power Fx फ़ार्मूला YAML स्रोत फ़ाइलों को में स्टोर किया जा सकता है, जिनको Visual Studio Code, Visual Studio या किसी अन्य टेक्स्ट एडिटर के साथ संपादित करना आसान है और Power Fx को GitHub, Azure DevOps, या किसी अन्य स्रोत कोड नियंत्रण प्रणाली के साथ नियंत्रण में रखने में सक्षम बनाता है.

प्रो कोड Visual Studio Code.

प्रो कोड GitHub.

Power Fx साझाकरण और दोबारा उपयोग करने के लिए फॉर्मूला-आधारित घटकों का समर्थन करता है. हमने कंपोनेंट गुणों के लिए मापदंडों के समर्थन की घोषणा की है, अधिक एन्हांसमेंट के साथ शुद्ध उपयोगकर्ता-परिभाषित कार्यों के निर्माण को सक्षम किया गया है.

इसके अलावा, Power Fx घटकों और पेशेवरों द्वारा निर्मित सेवाओं को साथ में जोड़ने में बहुत बढिया है. आउट-ऑफ-द-बॉक्स कनेक्टर सैकड़ों डेटा स्रोतों और वेब सेवाओं तक पहुंच प्रदान करते हैं, कस्टम कनेक्टर किसी भी REST वेब सेवा से बात करने के लिए Power Fx को सक्षम करते हैं और कोड कंपोनेंट Power Fx को स्क्रीन और पेज पर पूरी तरह से कस्टम JavaScript के साथ बातचीत करने में सक्षम करते हैं.

डिज़ाइन सिद्धांत

सरल

Power Fx को निर्माता ऑडियंस को लक्षित करने के लिए डिज़ाइन किया गया है, जिनके सदस्यों को डेवलपर्स के रूप में प्रशिक्षित नहीं किया गया है. जहां भी सम्भव हो, हम ज्ञान का उपयोग करते हैं जिसे यह दर्शक पहले से जानती है या तुरंत पिक अप कर सकती है. सफल होने के लिए अवधारणाओं की संख्या को न्यूनतम रखा जाता है.

सरल रहना भी डेवलपर्स के लिए अच्छा है. डेवलपर दर्शक के लिए, हम निम्न-कोड को लक्ष्य करते हैं जो किसी समाधान के निर्माण में लगने वाले आवश्यक समय को कम करता है.

Excel समरूपता

Microsoft Power Fx भाषा Excel फॉर्मूला भाषा से बहुत अधिक उधार लेता है. हम Excel का उपयोग करने वाले कई निर्माताओं से Excel नॉलेज और अनुभव का लाभ लेना चाहते हैं. प्रकारों, ऑपरेटर्स, और फ़ंक्शन अर्थ विज्ञान जितना संभव हो Excel के करीब हैं.

यदि Excel के पास कोई जवाब नहीं है, तो हम अगले SQL को देखते हैं. Excel के बाद, SQL अगली सबसे अधिक इस्तेमाल की जाने वाली घोषणात्मक भाषा है और डेटा ऑपरेशन और मजबूत टाइपिंग पर मार्गदर्शन प्रदान कर सकती है जो Excel नहीं करता है.

घोषणात्मक

निर्माता वर्णन करता है कि वे उनके तर्क से क्या करवाना चाहते हैं, न कि कैसे या कब करना है. यह कंपाइलर को समानांतर में काम करने, आवश्यकता पड़ने तक काम को स्थगित करने और कैश्ड डेटा के पूर्व-प्राप्ति और पुन: उपयोग करके ऑप्टिमाइज़ करने की अनुमति देता है.

उदाहरण के लिए, एक Excel वर्कशीट में, लेखक सेल के बीच संबंधों को परिभाषित करता है, लेकिन Excel यह तय करता है कि कब और किस क्रम में फॉर्मूला का मूल्यांकन किया जाएगा. इसी तरह, एक ऐप में फॉर्मूला को "recalc-ing" के रूप में आवश्यकतानुसार सोचा जा सकता है जो उपयोगकर्ता के कार्यों, डेटाबेस में बदलाव, या टाइमर घटनाओं के आधार पर होता है.

कार्यात्मक

हम उन शुद्ध फ़ंक्शन का पक्ष लेते हैं जिनके दुष्प्रभाव नहीं होते हैं. यह उस तर्क में सामने आता है जो समझने में आसान है और कंपाइलर को ऑप्टिमाइज़ करने की सबसे अधिक आजादी देता है.

Excel के विपरीत, ऐप्स उनकी प्रकृति के अनुसार म्यूटैट स्टेट करते हैं—उदाहरण के लिए, ऐप्स में बटन होते हैं जो डेटाबेस में रिकॉर्ड में बदलाव से बचाते हैं. कुछ कार्य, इसलिए, के दुष्प्रभाव होते हैं, हालांकि हम इसे उतना ही सीमित करते हैं जितना कि उपयोगी है.

संरचना

जहां संभव हो, जो कार्यक्षमता जोड़ी जाती है वह मौजूदा कार्यक्षमता के साथ अच्छी तरह से कंपोज होती है. शक्तिशाली कार्यों को छोटे हिस्सों में विघटित किया जा सकता है जिन्हें स्वतंत्र तौर पर अधिक आसानी से उपयोग किया जा सकता है.

उदाहरण के लिए, एक गैलरी नियंत्रण जिसमें अलग-अलग Sort और Filter गुण नहीं हैं. इसके बजाय, Sort और Filter गुणयों को एक Items गुण में साथ में जोड़ दिया जाता है. इस परिसंपत्ति के लिए दो-तरफ़ा संपादक का उपयोग करके Sort और Filter व्यवहार को व्यक्त करने के लिए UI Items परिसंपत्ति के शीर्ष पर लेयर होती है.

दृढ़तापूर्वक टाइप किया हुआ

सभी मान के प्रकारों को कंपाइल समय पर जाना जाता है. यह संलेखन करते समय त्रुटियों और समृद्ध सुझावों के जल्दी पता लगाने की अनुमति देता है.

पॉलीमॉर्फिक प्रकारों का समर्थन किया जाता है, लेकिन उनका उपयोग करने से पहले, उनके प्रकार को एक स्टैटिक प्रकार में पिन किया जाना चाहिए और उस प्रकार को कंपाइल समय पर ज्ञात होना चाहिए. IsType और AsType कार्य टेस्टिंग और कास्टिंग प्रकारों के लिए प्रदान किए जाते हैं.

प्रकार अनुमान

घोषित किए बिना प्रकारों को उनके उपयोग से प्राप्त किया जाता है. उदाहरण के लिए, एक चर को संख्या में सेट करने से चर के प्रकार को एक संख्या के रूप में स्थापित किया जाता है.

किसी कंपाइल-समय त्रुटि में विरोधाभास प्रकार वाले उपयोग परिणाम.

स्थान-संवेदनशील दशमलव विभाजक

दुनिया के कुछ क्षेत्र दशमलव विभाजक के रूप में बिंदु (.) का उपयोग करते हैं, जबकि अन्य कॉमा (,) का उपयोग करते हैं. Excel भी यही करता है. यह आमतौर पर अन्य प्रोग्रामिंग भाषाओं में नहीं किया जाता है, जो आम तौर पर दुनिया भर में सभी उपयोगकर्ताओं के लिए दशमलव विभाजक के रूप में एक कैनोनिकल बिंदु (.) का उपयोग करते हैं. सभी स्तरों पर निर्माताओं के लिए जितना संभव हो उतना स्वीकार्य होने के लिए, यह महत्वपूर्ण है कि फ्रांस में एक व्यक्ति के लिए 3,14 वह दशमलव संख्या है जिसने अपने सारे जीवन में उस सिंटैक्स का उपयोग किया है.

दशमलव विभाजक चुनने का सूची विभाजक पर कैस्केडिंग प्रभाव पड़ता है, जिसका उपयोग फ़ंक्शन के कॉल तर्कों और चेनिंग ऑपरेटर के लिए किया जाता है.

लेखक की भाषा का दशमलव विभाजक Power Fx दशमलव विभाजक Power Fx सूची विभाजक Power Fx चेनिंग ऑपरेटर
. (बिंदु) . (बिंदु) , (अल्पविराम) ; (अर्धविराम)
, (अल्पविराम) , (अल्पविराम) ; (अर्धविराम) ;; (दोहरे अर्धविराम)

अधिक जानकारी: वैश्विक समर्थन

ऑब्जेक्ट-ओरिएंटेड नहीं

Excel ऑब्जेक्ट-ओरिएंटेड नहीं है, और न ही Power Fx है. उदाहरण के लिए, कुछ भाषाओं में, स्ट्रिंग की लंबाई को स्ट्रिंग की परिसंपत्ति के रूप में व्यक्त किया जाता है, जैसे कि JavaScript में "Hello World".length. Excel और Power Fx इसके बजाय एक फ़ंक्शन के संदर्भ में व्यक्त करते हैं, जैसा कि Len( "Hello World" ).

गुणों और विधियों के साथ घटक विषय-उन्मुख होते हैं और Power Fx आसानी से उनके साथ काम करता है. लेकिन जहां संभव हो, हम एक कार्यात्मक दृष्टिकोण पसंद करते हैं.

एक्सटेंसिबल

निर्माता Power Fx का इस्तेमाल करके अपने कंपोनेंट और फ़ंक्शन बना सकते हैं. निर्माता JavaScript लिखकर अपने घटकों और फ़ंक्शनों का निर्माण कर सकते हैं.

डेवलपर अनुकूल

हालांकि निर्माता हमारे प्राथमिक लक्ष्य हैं, हम जहां तक सम्भव है, डेवलपर-अनुकूल होने का प्रयास करते हैं. यदि यह पहले वर्णित डिजाइन प्रिंसिपल के साथ संघर्ष नहीं करता है, तो हम चीजों को इस तरह से करते हैं जिसकी डेवलपर की सराहना करेगा. उदाहरण के लिए, Excel में टिप्पणियों को जोड़ने की कोई क्षमता नहीं है, इसलिए हम C-लाइक लाइन और इनलाइन टिप्पणियों का उपयोग करते हैं.

भाषा विकास

प्रोग्रामिंग भाषाओं को विकसित करना आवश्यक और मुश्किल दोनों है. हर कोई—सही मायने में—चिंतित है कि कोई बदलाव, चाहे कोई कितना ही नेक इरादे वाला क्यों न हो, मौजूदा कोड को तोड़ सकता है और उपयोगकर्ताओं को एक नया पैटर्न सीखने की ज़रूरत हो सकती है. Power Fx बैकवर्ड कंपैटिबिलिटी को गंभीरता से लेता है, लेकिन हम यह भी दृढ़ता से मानते हैं कि हम हमेशा इसे पहली बार में ही सही नहीं पाएंगे और हम सामूहिक रूप से सीखेंगे कि एक समुदाय के रूप में सबसे अच्छा क्या है. हमें विकसित होना चाहिए, और Power Fx ने शुरुआत से ही भाषा के विकास के लिए समर्थन डिज़ाइन किया है.

एक भाषा संस्करण स्टैम्प हर उस Power Fx दस्तावेज़ के साथ शामिल है, जो सहेजा गया है. यदि हम एक इनकंपैटिबल बदलाव करना चाहते हैं, तो हम लिखेंगे जिसे हम "बैक कंपैक्ट कन्वर्टर" कहते हैं जो अगली बार संपादित किए जाने पर फॉर्मूला को स्वचालित रूप से फिर से लिखता है. यदि बदलाव बड़ा है जिसके बारे में हमें उपयोगकर्ता को शिक्षित करने की ज़रूरत है, तो हम docs के लिंक के साथ एक संदेश भी प्रदर्शित करेंगे. इस सुविधा का उपयोग करते हुए, हम अभी भी उन ऐप्स को लोड कर सकते हैं जो कई सालों पहले Power Apps के पूर्वावलोकन संस्करणों के साथ, इसके बाद से हुए सभी परिवर्तनों के बावजूद बनाए गए थे.

उदाहरण के लिए, हमने एक लाल पृष्ठभूमि के साथ त्रुटि बैनर दिखाने के लिए ShowError कार्य का परिचय दिया.

त्रुटि दिखाएं.

उपयोगकर्ताओं को यह पसंद आया, लेकिन उन्होंने हमसे एक सफल बैनर (हरी पृष्ठभूमि) या एक जानकारी बैनर (नीली पृष्ठभूमि) को दिखाने के तरीके के लिए भी पूछा. तो, हम एक और अधिक सामान्य Notify फ़ंक्शन के साथ आए जो अधिसूचना के प्रकार के लिए दूसरा तर्क लेता है. हम सिर्फ Notify को जोड़ सकते थे और ShowError को वैसे ही रख सकते थे, बल्कि हमने ShowError को Notify से बदल दिया. हमने उस फ़ंक्शन को हटा दिया था जो पहले उत्पादन में था और इसे कुछ और के साथ बदल दिया. क्योंकि एक ही काम को करने के दो तरीके होंगे, इससे भ्रम पैदा होगा—खासकर नए उपयोगकर्ताओं के लिए—और, सबसे महत्वपूर्ण बात यह कि इसमें जटिलता भी शामिल होगी. किसी ने कोई शिकायत नहीं की, हर किसी ने बदलाव की सराहना की और फिर अपने अगले नोटिफ़िकेशन फ़ीचर पर चले गए.

इसी तरह वही अनुप्रयोग दिखता है जब Power Apps के नवीनीकृत संस्करण में लोड होता है. उपयोगकर्ता द्वारा इस परिवर्तन को करने के लिए किसी भी कार्रवाई की आवश्यकता नहीं थी, ऐप खोले जाने पर यह स्वचालित रूप से हुआ.

नोटिफाई फ़ंक्शन ShowError की जगह लेता है.

इस सुविधा के साथ, Power Fx अधिकांश प्रोग्रामिंग भाषाओं की तुलना में तेज़ी से और अधिक आक्रामक रूप से विकसित हो सकता है.

कोई अपरिभाषित मान नहीं

कुछ भाषाएं, जैसे कि JavaScript, अप्रारंभीकृत चर या लापता गुणों के लिए एक अपरिभाषित मान की अवधारणा का उपयोग करती हैं. सरलता के लिए, हमने इस अवधारणा से परहेज किया है. अन्य भाषाओं में अपरिभाषित होने वाले उदाहरणों को एक त्रुटि या रिक्त मान के रूप में माना जाता है. उदाहरण के लिए, सभी अप्रारंभीकृत चर किसी रिक्त मान के साथ शुरू होते हैं. सभी डेटा प्रकार रिक्त के मान पर ले सकते हैं.

डेटा प्रकार
संचालक और पहचानकर्ता
टेबल्स
चर
अनिवार्य तर्क
वैश्विक समर्थन
अभिव्यक्ति व्याकरण
YAML फॉर्मूला व्याकरण
Power Apps में फॉर्मूला