Share via


डेटा प्रकार

नोट

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

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

यह लेख उन डेटा प्रकारों के लिए विवरण प्रदान करता है जो कैनवास अनुप्रयोग का समर्थन करते हैं. जब कोई अनुप्रयोग बाहरी डेटा स्रोत से जुड़ता है, तो उस स्रोत के प्रत्येक डेटा प्रकार को कैनवास अनुप्रयोग के लिए डेटा प्रकार में मैप किया जाता है.

डेटा प्रकार वर्णन उदाहरण
बूलियन सही या गलत मान. बिना किसी तुलना के सीधे If, Filter और अन्य कार्यों में उपयोग किया जा सकता है. सही
रंग एक अल्फा चैनल सहित रंग का विशेष वर्णन. Color.Red
ColorValue( "#102030" )
RGBA( 255, 128, 0, 0.5 )
मुद्रा एक मुद्रा मान जो एक फ्लोटिंग-पॉइंट संख्या में संग्रहीत किया गया. मुद्रा मान मुद्रा-स्वरूपण विकल्पों के साथ संख्या मान के समान हैं. 123
4.56
दिनांक अनुप्रयोग के उपयोगकर्ता के समय क्षेत्र में समय के बिना दिनांक. दिनांक( 2019, 5, 16 )
दिनांक समय अनुप्रयोग के उपयोगकर्ता के समय क्षेत्र में समय के साथ दिनांक. DateTimeValue( "16 मई, 2019 1:23:09 अपराह्न" )
दशमलव भिन्‍न उच्च परिशुद्धता, बेस 10 संचालन और सीमित सीमा के साथ एक संख्या। 123
दशमलव ("1.2345")
GUID एक विश्व स्तर पर अद्वितीय पहचानकर्ता। GUID()
GUID( "123e4567-e89b-12d3-a456-426655440000" )
हाइपरलिंक हाइपरलिंक वाला पाठ स्ट्रिंग. "https://powerapps.microsoft.com"
Image यूनिवर्सल रिसोर्स आइडेंटिफ़ायर (URI) पाठ स्ट्रिंग की छवि में .jpeg, .png, .svg, .gif, या अन्य सामान्य वेब-छवि प्रारूप. MyImage ऐप संसाधन के रूप में जोड़ा गया
"https://northwindtraders.com/logo.jpg"
"appres://blobmanager/7b12ffa2..."
मीडिया वीडियो या ऑडियो रिकॉर्डिंग के लिए URI पाठ स्ट्रिंग. MyVideo ऐप संसाधन के रूप में जोड़ा गया
"https://northwindtraders.com/intro.mp4"
"appres://blobmanager/3ba411c..."
संख्या या फ्लोट मानक परिशुद्धता, आधार 2 संचालन और एक विस्तृत श्रृंखला के साथ एक संख्या। 123
8.903e121
1.234e200
विकल्प विकल्पों के सेट से विकल्प, संख्या द्वारा समर्थित. यह डेटा प्रकार संख्यात्मक मान के साथ स्थानीयकृत किए जाने योग्य पाठ लेबल जोड़ता है. अनुप्रयोग में लेबल दिखाई देता है और संख्यात्मक मान तुलना के लिए संग्रहीत और उपयोग किया जाता है. ThisItem.OrderStatus
रिकॉर्ड डेटा मानों का रिकॉर्ड. इस मिश्रित डेटा प्रकार में अन्य डेटा प्रकार के उदाहरण हैं जो इस विषय में सूचीबद्ध हैं. अधिक जानकारी: आतालिकाओं के साथ कार्य करें कर रहे है. { Company: "Northwind Traders",
Staff: 35,
NonProfit: false }
रिकॉर्ड संदर्भ टेबल में एक रिकॉर्ड का संदर्भ. इस तरह के संदर्भों का उपयोग अक्सर बहुरूपी लुकअप के साथ किया जाता है. अधिक जानकारी: संदर्भ के साथ कार्य कर रहे है. पहला (खाते).स्वामी
Table रिकॉर्ड्स का एक तालिका. सभी अभिलेखों में समान डेटा प्रकारों के साथ अपने फ़ील्ड के लिए समान नाम होना चाहिए और छोड़े गए फ़ील्ड को रिक्त माना जाता है. इस मिश्रित डेटा प्रकार में अन्य डेटा प्रकार के उदाहरण हैं जो इस विषय में सूचीबद्ध हैं. अधिक जानकारी: आतालिकाओं के साथ कार्य करें कर रहे है. Table( { FirstName: "Sidney",
LastName: "Higa" },
{ FirstName: "Nancy",
LastName: "Anderson" } )
पाठ यूनिकोड पाठ स्ट्रिंग. "हैलो, वर्ल्ड"
समय ऐप के उपयोगकर्ता के समय क्षेत्र में एक तारीख के बिना एक समय. समय( 11, 23, 45 )
दो विकल्प एक संख्या द्वारा समर्थित, कई विकल्पों में से दो विकल्प. यह डेटा प्रकार बूलियन मान के साथ स्थानीयकृत किए जाने योग्य पाठ लेबल जोड़ता है. अनुप्रयोग में लेबल दिखाई देता है, और बूलियन मान संग्रहीत और तुलना के लिए उपयोग किया जाता है. ThisItem.Taxable
अनटाइप्ड ऑब्जेक्ट एक अघोषित प्रकार का ऑब्जेक्ट. अंतर्निहित ऑब्जेक्ट कोई भी मौजूदा प्रकार हो सकता है और इस तरह के कार्यों का उपयोग करके संगत प्रकारों में परिवर्तित किया जा सकता हैBoolean(), Value(), Table() आदि. अधिक जानकारी के लिए अनटाइप्ड ऑब्जेक्ट और JSON के साथ काम करना देखें. ParseJSON("{ ""Field"" : 1234 }").Field

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

रिक्त

सभी डेटा प्रकारों में रिक्त का मान हो सकता है (दूसरे शब्दों में, कोई मान नहीं). शब्द "अमान्य" का उपयोग अक्सर इस अवधारणा के लिए डेटाबेस में किया जाता है.

चर या फ़ील्ड को रिक्त सेट करने के लिए Set या Patch फ़ंक्शन के साथ Blank फ़ंक्शन का उपयोग करें. उदाहरण के लिए, सेट (x, रिक्त () ) वैश्विक चर x में किसी भी मान को हटाता है.

IsBlank फ़ंक्शन का उपयोग करके रिक्त मान के लिए परीक्षण करें. Coalesce फ़ंक्शन का उपयोग करके संभव रिक्त मानों को गैर-रिक्त मानों से बदलें.

क्योंकि सभी डेटा प्रकार रिक्त का समर्थन करते हैं, बूलियन और दो विकल्प डेटा प्रकार प्रभावी रूप से तीन संभावित मान हैं.

इन सभी चार प्रकार के डेटा पाठ की पंक्ति यूनिकोड पर आधारित हैं.

एंबेडेड पाठ

फ़ॉर्मूले में एंबेडेड पाठ स्ट्रिंग्स दोहरे उद्धरण चिह्नों में संलग्न हैं. पाठ स्ट्रिंग में एकल दोहरे उद्धरण का प्रतिनिधित्व करने के लिए साथ दो दोहरे उद्धरण चिह्नों का उपयोग करें. उदाहरण के लिए, बटन नियंत्रण के OnSelect गुण में निम्न फ़ॉर्मूले का उपयोग करना:

Notify( "Jane said ""Hello, World!""" )

जब बटन दबाया जाता है तो बैनर में परिणाम होता है जहां पहले और अंतिम दोहरे उद्धरण छोड़े गए हैं (जैसा कि वे पाठ स्ट्रिंग को चित्रित करते हैं) और हैलो, वर्ल्ड के आसपास दोहराए गए दोहरे उद्धरण एकल दोहरे उद्धरण से प्रतिस्थापित किए जाते हैं:

जेन द्वारा कहे गए संदेश

पहचानकर्ता नाम के लिए ऐसे एकल उद्धरण चिह्नों का उपयोग नहीं किया जाता है जिसमें विशेष वर्ण होते हैं और पाठ स्ट्रिंग के भीतर कोई खास महत्व नहीं होता है.

स्ट्रिंग इंटरपोलेशन

पाठ स्ट्रिंग के भीतर सूत्र एम्बेड करने के लिए स्ट्रिंग इंटरपोलेशन का उपयोग करें. Concateate फ़ंक्शन या & ऑपरेटर का उपयोग करने की तुलना में आउटपुट के साथ काम करना और कल्पना करना अक्सर आसान होता है

टेक्स्ट स्ट्रिंग के आगे डॉलर चिह्न $ लगाएँ और कर्ली ब्रेसेस { } के साथ एम्बेड किए जाने वाले सूत्र को संलग्न करें. टेक्स्ट स्ट्रिंग में कर्ली ब्रेस शामिल करने के लिए, बार-बार कर्ली ब्रेसेस का उपयोग करें: {{ या }}. स्ट्रिंग प्रक्षेप का उपयोग कहीं भी किया जा सकता है जहां एक मानक पाठ स्ट्रिंग का उपयोग किया जा सकता है.

उदाहरण के लिए, वैश्विक चर के साथ इस सूत्र पर विचार करें 3 पर सेट सेब और 4 पर सेट केले :

$"We have {Apples} apples, {Bananas} bananas, yielding {Apples+Bananas} fruit total."

यह सूत्र टेक्स्ट यह स्ट्रिंग लौटाता है We have 3 apples, 4 bananas, yielding 7 fruit total.सेब और केले चरों को गणितीय सूत्र सेब+केले के परिणाम वाले कर्ली ब्रेसिज़ की जगह पाठ में डाला गया है. कर्ली ब्रेसिज़ के आसपास के स्थान और अन्य वर्ण जैसे हैं वैसे ही संरक्षित किए जाते हैं.

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

$"Welcome {Coalesce( NickName, FirstName )}, it's great to meet you!" )

अगर NickName "जो" पर सेट है, तो यह फ़ॉर्मूला यह टेक्स्ट स्ट्रिंग बनाता है स्वागत है जो, आपसे मिलकर बहुत खुशी हुई!. लेकिन अगर NickName है रिक्त और NickName "यूसुफ" है, तो यह सूत्र इसके बजाय प्रिय जोसफ, आपसे मिलकर अच्छा लगा! बनाता है.

स्ट्रिंग इंटरपोलेशन में एम्बेड किए गए फ़ॉर्मूला में मानक टेक्स्ट स्ट्रिंग शामिल हो सकते हैं. उदाहरण के लिए, यदि न तो उपनाम न ही प्रथम नाम उपलब्ध कराया गया था, तब भी हम प्रदान कर सकते थे "दोस्त" एक विकल्प के रूप में:

$"Welcome {Coalesce( NickName, FirstName, "Friend" )}!"

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

$"Welcome {Coalesce( Trim( $"{First} {Middle} {Last}"}), "Friend" )}!"
प्रथम मध्य अंतिम परिणाम
जॉन कुनीसी डो Welcome John Quincy Doe!
जॉन खाली डो Welcome John Doe!
खाली खाली डो Welcome Doe!
खाली खाली खाली Welcome Friend!

नई-पंक्तियां

एंबेडेड टेक्स्ट स्ट्रिंग्स में न्यूलाइन्स हो सकती हैं. उदाहरण के लिए, निम्न के लिए लेबल नियंत्रण के पाठ गुण को सेट करने पर विचार करें:

"Line 1
Line 2
Line 3"

उपरोक्त सूत्र का परिणाम लेबल नियंत्रण में दिखाई गई तीन पंक्तियों में होता है:

एम्बेडेड टेक्स्ट स्ट्रिंग और लेबल नियंत्रण लाइन 1, लाइन 2 और लाइन 3 के साथ तीन लाइनें दिखा रहा है।

स्ट्रिंग इंटरपोलेशन के साथ न्यूलाइन्स भी समर्थित हैं, जैसा कि नीचे दिखाया गया है:

$"Line {1}
Line {1+1}
Line {1+1+1}"

उपरोक्त सूत्र का परिणाम समान आउटपुट में होता है:

स्ट्रिंग प्रक्षेप सूत्र और लेबल नियंत्रण लाइन 1, लाइन 2 और लाइन 3 के साथ तीन लाइनें दिखाते हैं।

छवि और मीडिया संसाधन

फ़ाइल मेनू के माध्यम से, आप छवि, वीडियो और ऑडियो फ़ाइलों को अनुप्रयोग संसाधनों के रूप में जोड़ सकते हैं. आयातित फ़ाइल का नाम अनुप्रयोग में संसाधन नाम बन जाता है. इस ग्राफिक में, नॉर्थविंड ट्रेडर्स लोगो, जिसका नाम nwindlogo है, को अनुप्रयोग में जोड़ा गया है:

नॉर्थविंड संसाधन।

किसी अनुप्रयोग में इस संसाधन का उपयोग करने के लिए, इसे छवि नियंत्रण की छवि गुण में निर्दिष्ट करें:

नॉर्थविंड छवि।

छवियों और अन्य मीडिया के लिए URIs

आप उस अंतिम उदाहरण में लेबल नियंत्रण के पाठ गुण को nwindlogo पर सेट करके अधिक गहन खोज कर सकते हैं. लेबल एक पाठ स्ट्रिंग दिखाता है:

नॉर्थविंड पाठ।

कैनवास अनुप्रयोग प्रत्येक छवि या अन्य मीडिया फ़ाइल का संदर्भ देते हैं, चाहे वह URI टेक्स्ट स्ट्रिंग द्वारा क्लाउड में जोड़ा गया हो या अनुप्रयोग संसाधन के रूप में जोड़ा गया हो.

उदाहरण के लिए, छवि छवि नियंत्रण का गुण न केवल अनुप्रयोग संसाधनों को स्वीकार करता है, बल्कि वेब पर छवियों का लिंक भी देता है जैसे कि "https://northwindtraders.com/logo.jpg". गुण इनलाइन छवियों को भी स्वीकार करता है जो इस उदाहरण में डेटा URI योजना का उपयोग करती हैं:

"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFAQMAAACtnVQoAAAABlBMVEUAAAB0J3UMNU6VAAAAAXRSTlMAQObYZgAAABRJREFUCNdjUGJgCGVg6GgAkkA2AA8/AffqCEBsAAAAAElFTkSuQmCC"

वह URI दो पर्पल डायमंड का विस्तारित संस्करण प्रदर्शित करता है:

डबल हीरे।

यदि आप कैमरा नियंत्रण के फ़ोटो गुण के लिए छवि नियंत्रण का छवि गुण सेट करते हैं, तो आप कैमरा नियंत्रण में कैप्चर की गई नवीनतम छवि दिखा सकते हैं. अनुप्रयोग छवि में मेमोरी में रखता है, और कैमरा नियंत्रण का फोटो गुण छवि के लिए एक URI संदर्भ देता है. चित्र और कैमरे की फ़ोटो गुण "appres://blobmanager/7b12ffa2ea4547e5b3812cb1c7b0a2a0/1" दे सकता है.

आप किसी छवि या किसी अन्य मीडिया फ़ाइल को डेटाबेस में संग्रहीत करने के लिए URI का उपयोग करते हैं. इस तरह, अनुप्रयोग वास्तविक डेटा को तब तक पुनर्प्राप्त नहीं करता है जब तक कि वास्तव में इसकी आवश्यकता न हो. उदाहरण के लिए, Microsoft Dataverse टेबल में अटैचमेंट "appres://datasources/Contacts/table/..." लौटा सकता है, जैसा कि कैमरे के उदाहरण में है, आप छवि नियंत्रण की छवि संपत्ति को इस संदर्भ में सेट करके इस छवि को प्रदर्शित कर सकते हैं, जो बाइनरी डेटा को पुनः प्राप्त करती है.

जब आप एक मीडिया डेटा प्रकार, जैसे छवि, डेटाबेस में सहेजते हैं, तो अनुप्रयोग वास्तविक छवि या मीडिया डेटा भेजता है, URI संदर्भ नहीं.

आकार सीमा

पाठ स्ट्रिंग्स और URI के रूप में, इन डेटा प्रकारों की लंबाई की कोई पूर्व निर्धारित सीमा नहीं है.

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

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

सर्वोत्तम कार्य प्रणाली के रूप में, जब तक आवश्यक हो, केवल मेमोरी में डेटा रखें. जितनी जल्दी हो सके डेटाबेस में छवियों को अपलोड करें; छवियों को केवल तभी डाउनलोड करें, जब अनुप्रयोग का उपयोगकर्ता उनके लिए अनुरोध करे.

संख्याएं

नोट

Power Apps केवल आज फ्लोट का समर्थन करता है और यह सभी संख्याओं का प्रकार है। दशमलव समर्थन जल्द ही जोड़ा जाएगा।

Power Fx दो प्रकार की संख्याओं का समर्थन करता है: दशमलव और फ्लोट (समानार्थक शब्द संख्या औरमुद्रा के साथ)।

अधिकांश व्यावसायिक गणनाओं के लिए दशमलव सबसे अच्छा है। यह आधार 10 में संख्याओं का सटीक रूप से प्रतिनिधित्व कर सकता है जिसका अर्थ है कि वास्तव में दर्शाया जा सकता है 0.1 और गणना के दौरान राउंडिंग त्रुटियों का खतरा नहीं होगा। इसमें किसी भी व्यावसायिक आवश्यकता के लिए एक बड़ी रेंज है, 28 अंकों की सटीकता के साथ 1028 तक। दशमलव अधिकांश Power Fx मेजबानों के लिए डिफ़ॉल्ट संख्यात्मक डेटा प्रकार है, जिसका उपयोग तब किया जाता है जब कोई बस लिखता है 2*2

फ्लोट वैज्ञानिक गणना के लिए सबसे अच्छा है। यह 10308 तक बहुत बड़ी सीमा में संख्याओं का प्रतिनिधित्व कर सकता है। परिशुद्धता 15 दशमलव स्थानों तक सीमित है और गणित आधार 2 पर आधारित है, इसलिए यह कुछ सामान्य दशमलव मानों का सटीक प्रतिनिधित्व नहीं कर सकता है। फ्लोट में उच्च प्रदर्शन भी होता है और यदि यह एक कारक है और परिशुद्धता महत्वपूर्ण नहीं है तो इसका पक्ष लिया जाता है।

दशमलव संख्या

दशमलव डेटा प्रकार अक्सर .NET दशमलव डेटा प्रकार का उपयोग करता है। कुछ होस्ट, जैसे SQL Serer में चलाए गए सूत्र स्तंभ, SQL Dataverse Server दशमलव डेटा प्रकार का उपयोग करते हैं।

दशमलव 10 अंकों का उपयोग करके स्कूल में सीखने के तरीके से गणित करता है। आधार 2 गणित (जैसा कि फ्लोट द्वाराउपयोग किया जाता है) का उपयोग करते समय जमा होने वाले बहुत छोटे अंतरों से राउंडिंग त्रुटियों से बचने के लिए यह बहुत महत्वपूर्ण है।

सीमा सकारात्मक 79,228,162,514,264,337,593,543,950,335 से नकारात्मक 79,228,162,514,264,337,593,543,950,335 तक है। दशमलव विभाजक को इन संख्याओं के भीतर कहीं भी रखा जा सकता है, जो सटीकता के 28 अंकों तक प्रदान करता है, और अभी भी सटीक रूप से दर्शाया जा सकता है। उदाहरण के लिए, 79,228,162,514,264.337593543950335 को बिल्कुल प्रतिनिधित्व किया जा सकता है, जैसा कि 7.9228162514264337593543950335 सकता है।

फ्लोटिंग पॉइंट नंबर

फ्लोट डेटा प्रकार, जिसे संख्या या मुद्रा के रूप मेंभी जाना जाता है, आईईईई 754 डबल-परिशुद्धता फ्लोटिंग-पॉइंट मानक का उपयोग करताहै। यह मानक –1.79769 x 10308 से 1.79769 x 10308 तक काम करने के लिए बहुत बड़ी संख्या में नंबर प्रदान करता है. सबसे छोटा मान जो दर्शाया जा सकता है वह 5 x 10–324 है.

फ़्लोट -9,007,199,254,740,991 (-(253 – 1)) और 9,007,199,254,740,991 (253 - 1), सम्मिलित। पूर्ण संख्याओं (या पूर्णांक) का बिल्कुल प्रतिनिधित्व कर सकता है। यह सीमा 32-बिट (या 4-बाइट) पूर्णांक डेटा प्रकारों से बड़ी है जो डेटाबेस आमतौर पर उपयोग करते हैं. हालांकि, कैनवास अनुप्रयोग 64-बिट (या 8-बाइट) पूर्णांक डेटा प्रकारों का प्रतिनिधित्व नहीं कर सकते हैं. आप पाठ फ़ील्ड में संख्या को संग्रहीत करना चाहते हैं या किसी पाठ फ़ील्ड में संख्या की प्रतिलिपि बनाने के लिए परिकलित स्तंभ का उपयोग कर सकते हैं, ताकि यह कैनवास अनुप्रयोग में पाठ डेटा प्रकार में मैप हो जाए. इस तरीके से, आप इन मानों को रख, प्रदर्शित और दर्ज कर सकते हैं, साथ ही साथ उनकी तुलना करके यह निर्धारित कर सकते हैं कि वे समान हैं; हालांकि, आप इस रूप में उनकी संख्यात्मक गणना नहीं कर सकते हैं.

फ्लोटिंग-पॉइंट अंकगणित अनुमानित है, इसलिए यह कभी-कभी कई प्रलेखित उदाहरणों के साथ अप्रत्याशित परिणाम दे सकता है. आप फ़ॉर्मूला 55 / 100 * 100 से ठीक 55 और (55 / 100 * 100) - 55 से ठीक शून्य आने की उम्मीद कर सकते हैं. हालांकि, बाद वाला फ़ॉर्मूला 7.1054 x 10–15 देता है, जो बहुत छोटा है लेकिन शून्य नहीं है. यह छोटा अंतर आम तौर पर समस्या का कारण नहीं बनता है, और परिणाम दिखाते समय अनुप्रयोग इसे दूर कर देता है. हालांकि, छोटे अंतर बाद की गणनाओं में मिश्रित हो सकते हैं और गलत उत्तर दे सकते हैं.

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

डिफ़ॉल्ट और रूपांतरण

नोट

Power Apps केवल आज फ्लोट का समर्थन करता है और यह सभी संख्याओं का प्रकार है। दशमलव समर्थन जल्द ही जोड़ा जाएगा।

अधिकांश Power Fx होस्ट डिफ़ॉल्ट रूप से दशमलव का उपयोग करते हैं । यह प्रभावित करता है:

  • सूत्रों में शाब्दिक संख्याएं। संख्या 1.234 की व्याख्या दशमलव मूल्य के रूप में की जाएगी। उदाहरण के लिए, सूत्र 1.234 * 2 दशमलव के रूप 1.234 में व्याख्या 2 करेगा और दशमलव परिणाम वापस करेगा।
  • मान फ़ंक्शन. Value( "1.234" ) एक दशमलव मूल्य वापस कर देगा। उदाहरण के लिए, सूत्र Value( "1.234" ) * 2 मान फ़ंक्शन पाठ स्ट्रिंग "1.234" की सामग्री को दशमलव के रूप में व्याख्या करेगा।

फ्लोट मानों के साथ काम करने के लिए, फ्लोटफ़ंक्शन का उपयोग किया जाता है। ऊपर दिए गए उदाहरण का विस्तार करते हुए, Float( 1.234 ) दशमलव को फ्लोट1.234 में परिवर्तित करदेगा। फ्लोट का उपयोग फ्लोटिंग पॉइंट नंबर वाले स्ट्रिंग को फ्लोटमान में परिवर्तित करने के लिए मान के प्रतिस्थापन के रूप में भी किया जा सकता है, जो आवश्यक है यदि संख्या को दशमलव के Float( "1.234" )रूप में दर्शाया नहीं जा सकता है

सारांश में:

उपयोग दशमलव भिन्‍न बहना
सूत्रों में शाब्दिक संख्याएं 1.234 Float( 1.234 )
Float( "1.234" )
पाठ स्ट्रिंग से रूपांतरण Value( "1.234" )
Decimal( "1.234" )
Float( "1.234" )
सांख्यिक प्रकारों के बीच रूपांतरण Decimal( float ) Float( decimal )
पाठ स्ट्रिंग में रूपांतरण Text( decimal ) Text( float )

सांख्यिक प्रकारों का मिश्रण

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

उदाहरण के लिए, सीएलआई स्थापित करने के बाद निम्न गणना का उपयोग pac power-fx repl करने पर Power Platform विचार करें। चूंकि दोनों संख्याएं दशमलव हैं , गणना दशमलव मेंकी जाती है, और परिणाम पूर्ण परिशुद्धता को बरकरार रखता है:

>> 1.0000000000000000000000000001 * 2
2.0000000000000000000000000002

यदि इसके बजाय, दूसरे ऑपरेंड को फ्लोट में बदल दिया जाता है तो पूरी गणना फ्लोट में की जाएगी और छोटा आंशिक हिस्सा खो जाएगा:

>> 1.0000000000000000000000000001 * Float(2)
2

दिनांक, समय, और DateTime

समय क्षेत्र

दिनांक/समय मान इन श्रेणियों में आते हैं:

  • उपयोगकर्ता स्थानीय: ये मान UTC (समन्वित वैशविक समय) में संग्रहीत हैं, लेकिन अनुप्रयोग उपयोगकर्ता के समय क्षेत्र को प्रभावित करता है कि अनुप्रयोग इन मानों को कैसे दिखाता है और अनुप्रयोग उपयोगकर्ता उन्हें कैसे निर्दिष्ट करता है. उदाहरण के रूप में, एक ही क्षण कनाडा में एक उपयोगकर्ता के लिए अलग-अलग दिखाई देता है, जैसा कि यह जापान में उपयोगकर्ता के लिए करता है.
  • समय क्षेत्र स्वतंत्र: अनुप्रयोग इन मानों को उसी तरह दिखाता है और अनुप्रयोग उपयोगकर्ता उन्हें समय क्षेत्र की परवाह किए बिना उसी तरह निर्दिष्ट करता है. वही क्षण कनाडा में उपयोगकर्ता के लिए उसी तरह प्रकट होता है जैसा कि वह जापान में एक उपयोगकर्ता के लिए होता है. अनुप्रयोग निर्माता, जो अपने अनुप्रयोग को अलग-अलग समय क्षेत्र में चलने की उम्मीद नहीं करते हैं, वे इन मानों का उपयोग करते हैं क्योंकि वे समग्र सरल हैं.

यह तालिका कुछ उदाहरण दिखाती है:

दिनांक/समय प्रकार डेटाबेस में मान संग्रहीत किया गया मूल्य प्रदर्शित किया गया और UTC के पश्चिम में 7 घंटे में प्रवेश किया मूल्य प्रदर्शित किया गया और UTC के पूर्व में 4 घंटे में प्रवेश किया
उपयोगकर्ता का स्थानीय रविवार,मई19,2019
4:00 पूर्वाह्न
शनिवार,मई18,2019
9:00 अपराह्न
रविवार,मई19,2019
8:00 पूर्वाह्न
समय-क्षेत्र से मुक्त रविवार,मई19,2019
4:00 पूर्वाह्न
रविवार,मई19,2019
4:00 पूर्वाह्न
रविवार,मई19,2019
4:00 पूर्वाह्न

उपयोगकर्ता स्थानीय दिनांक/समय के लिए, कैनवास अनुप्रयोग ब्राउज़र या डिवाइस के समय क्षेत्र का उपयोग करते हैं, लेकिन मॉडल-चालित अनुप्रयोग Dataverse में उपयोगकर्ता की सेटिंग का उपयोग करते हैं. ये सेटिंग्स आम तौर पर मेल खाती हैं, लेकिन अगर ये सेटिंग्स अलग-अलग होंगी तो परिणाम अलग होंगे.

स्थानीय समय को UTC और फिर वापसी के लिए DateAdd और TimeZoneInformation फ़ंक्शन का उपयोग करें. इन फ़ंक्शन के लिए लेख के अंत में उदाहरण देखें.

सांख्यिक समकक्ष

कैनवास अनुप्रयोग सभी दिनांक/समय मूल्यों को रखते हैं और गणना करते हैं, चाहे उपयोगकर्ता स्थानीय हो या UTC में समय क्षेत्र स्वतंत्र. अनुप्रयोग उपयोगकर्ता को दिखाते समय अनुप्रयोग उपयोगकर्ता के समय क्षेत्र के आधार पर मानों का अनुवाद करता है और जब अनुप्रयोग उपयोगकर्ता उन्हें निर्दिष्ट करता है.

जब एक कैनवस अनुप्रयोग डेटा स्रोत से समय क्षेत्र स्वतंत्र मान पढ़ता है या किसी डेटा स्रोत पर ऐसा मान लिखता है, अनुप्रयोग स्वचालित रूप से अनुप्रयोग के उपयोगकर्ता के समय क्षेत्र की कमी पूरी करने के लिए मान को समायोजित करता है. अनुप्रयोग तब मान को UTC मान के रूप में मानता है, जो अनुप्रयोग में अन्य सभी दिनांक/समय मानों के अनुरूप है. इस कमी को पूरा करने के कारण, मूल समय क्षेत्र स्वतंत्र मान तब प्रकट होता है जब अनुप्रयोग उपयोगकर्ता के समय क्षेत्र के लिए UTC मान समायोजित करता है.

किसी दिनांक/समय मान के लिए अंतर्निहित संख्यात्मक मान तक पहुंचने के लिए आप इस व्यवहार को अधिक बारीकी से Value फ़ंक्शन का उपयोग करके देख सकते हैं. यह फ़ंक्शन 1 जनवरी, 1970 00:00:00.000 UTC के बाद से मिलीसेकंड की संख्या के रूप में दिनांक/समय मान देता है.

क्योंकि UTC में प्रत्येक दिनांक / समय मान होता है, फ़ॉर्मूला Value( Date( 1970, 1, 1 ) ) दुनिया के अधिकांश हिस्सों में शून्य नहीं देता है क्योंकि Date फ़ंक्शन UTC में दिनांक देता है. उदाहरण के लिए, फ़ॉर्मूला UTC से आठ घंटे की भरपाई करने वाले समय क्षेत्र में 28,800,000 देगा. यह संख्या आठ घंटे में मिलीसेकंड की संख्या को दर्शाती है.

ऊपर से हमारे उदाहरण पर लौटना:

दिनांक/समय प्रकार डेटाबेस में मान संग्रहीत किया गया मूल्य प्रदर्शित किया गया और UTC के पश्चिम में 7 घंटे में प्रवेश किया Value फ़ंक्शन देता है
उपयोगकर्ता का स्थानीय रविवार,मई19,2019
4:00 पूर्वाह्न
शनिवार,मई18,2019
9:00 अपराह्न
1,558,238,400,000
(रविवार,मई19,2019
4:00 पूर्वाह्न UTC)
समय-क्षेत्र से मुक्त रविवार,मई19,2019
4:00 पूर्वाह्न
रविवार,मई19,2019
4:00 पूर्वाह्न
1,558,263,600,000
(रविवार,मई19,2019
11:00 पूर्वाह्न UTC)

Unix समय परिवर्तित कर रहा

Unix टाइम 1 जनवरी, 1970 00:00:00 UTC के बाद से सेकंड की संख्या को दर्शाता है. चूंकि कैनवास अनुप्रयोग सेकंड के बजाय मिलीसेकंड का उपयोग करते हैं, आप दोनों को 1,000 से गुणा या विभाजित करके परिवर्तित कर सकते हैं.

उदाहरण के लिए, Unix टाइम 9 सितंबर, 2001, को 01:46:40 बजे UTC को 1,000,000,000 दिखाता है. कैनवास अनुप्रयोग में उस दिनांक/ समय के मान को दिखाने के लिए, इसे मिलीसेकंड में बदलने के लिए उस संख्या को 1,000 से गुणा करें, और फिर Text फ़ंक्शन में इसका उपयोग करें. फ़ॉर्मूला Text( 1000000000 * 1000, DateTimeFormat.UTC ) स्ट्रिंग 2001-09-09T01:46:40.000Z देता है.

हालांकि, यह फ़ंक्शन शनिवार, 8 सितंबर, 2001 18:46:40 देता है यदि आप DateTimeFormat.LongDateTime24 प्रारूप का उपयोग उस समय क्षेत्र में करते हैं, जो UTC से -7 घंटे (UTC के पश्चिम में 7 घंटे) से ऑफसेट है. यह परिणाम स्थानीय समय क्षेत्र के आधार पर DateTime मान को सही ढंग से दिखाता है.

Unix टाइम में बदलने के लिए, मान के परिणाम को 1,000 से विभाजित करें:
RoundDown (मान ( UnixTime ) / 1000, 0 )

यदि आपको आगे की गणना के लिए दिनांक मान में Unix टाइम की आवश्यकता है या Power Apps के भीतर प्रदर्शित करना चाहते हैं, तो इस फ़ॉर्मूले का उपयोग करें:
DateAdd( दिनांक ( 1970,1,1 ), UnixTime, सेकंड्स )

SQL Server

SQL सर्वर में Datetime, Datetime2 और अन्य दिनांक/समय डेटा प्रकार होता है जिसमें एक समय-क्षेत्र ऑफसेट शामिल नहीं होता है और यह इंगित नहीं करता है कि वे किस समय-क्षेत्र में हैं. कैनवस अनुप्रयोग मान लेते हैं कि ये मान UTC में संग्रहीत हैं और उन्हें उपयोगकर्ता स्थानीय के रूप में मानते हैं. यदि मान समय-क्षेत्र स्वतंत्र होने के लिए हैं, तो TimeZoneOffset फ़ंक्शन का उपयोग करना UTC अनुवादों के लिए सही है.

अनुप्रयोग के आंतरिक UTC प्रतिनिधित्व के लिए मान को परिवर्तित करते समय कैनवास अनुप्रयोग Datetimeoffset फ़ील्ड में शामिल समय-क्षेत्र जानकारी का उपयोग करते हैं. जब वे डेटा लिखते हैं, तो अनुप्रयोग हमेशा UTC को समय क्षेत्र (शून्य समय क्षेत्र ऑफसेट) के रूप में उपयोग करते हैं.

ISO 8601 अवधि प्रारूप में पाठ स्ट्रिंग्स के रूप में कैनवास अनुप्रयोग SQL सर्वर में समय डेटा प्रकार के मान पढ़ते और लिखते हैं. उदाहरण के लिए, आपको इस स्ट्रिंग प्रारूप का विश्लेषण करना चाहिए और पाठ स्ट्रिंग "PT2H1M39S" को समय मान में बदलने के लिए Time फ़ंक्शन का उपयोग करना चाहिए:

With(
    Match( "PT2H1M39S", "PT(?:(?<hours>\d+)H)?(?:(?<minutes>\d+)M)?(?:(?<seconds>\d+)S)?" ),
    Time( Value( hours ), Value( minutes ), Value( seconds ) )
)
// Result: 2:01 AM (as shown in a label control, use the Text function to see the seconds)

मिश्रण दिनांक और समय की जानकारी

दिनांक, समय और DateTime के अलग-अलग नाम हैं, लेकिन वे सभी दिनांक और समय के बारे में एक ही जानकारी रखते हैं.

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

दिनांक और समय मानों को सीधे जोड़ना और घटाना अनुशंसित नहीं है क्योंकि समय-क्षेत्र और अन्य रूपांतरण भ्रामक परिणाम पैदा कर सकते हैं. या तो पहले दिनांक/समय मान को मिलीसेकंड में परिवर्तित करने के लिए Value फ़ंक्शन का उपयोग करें और अनुप्रयोग उपयोगकर्ता के समय क्षेत्र को ध्यान में रखें या इनमें से किसी एक मान को जोड़ने या घटाने के लिए DateAdd और DateDiff फ़ंक्शन का उपयोग करें.

विकल्प और हां/नहीं

विकल्प और दो-विकल्प डेटा प्रकार एक ऐप उपयोगकर्ता को चुनने के लिए दो या अधिक विकल्प प्रदान करते हैं. उदाहरण के लिए, एक ऑर्डर स्थिति विकल्प नया, शिप किया गया, इनवॉइस किया गया और बंद विकल्प प्रदान कर सकता है. दो-विकल्प डेटा प्रकार केवल दो विकल्प प्रदान करता है.

ये दोनों डेटा प्रकार पाठ-स्ट्रिंग संदर्भ में अपने लेबल दिखाते हैं. उदाहरण के लिए, यदि नियंत्रण की टेक्स्ट संपत्ति उस विकल्प को संदर्भित करने वाले फॉर्मूला पर सेट है, तो एक लेबल नियंत्रण ऑर्डर-स्थिति विकल्पों में से एक दिखाता है. विकल्प लेबल को विभिन्न स्थानों में अनुप्रयोग उपयोगकर्ताओं के लिए स्थानीयकृत किया जा सकता है.

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

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

If( ThisItem.OrderStatus = "Active", ...

लेकिन आप इस सूत्र का उपयोग कर सकते हैं:

If( ThisItem.OrderStatus = OrderStatus.Active, ...

वैश्विक विकल्पों के लिए (जिसे टेबल साझा करती हैं), विकल्प-सेट गणना का नाम वैश्विक पसंद के नाम से मेल खाता है. स्थानीय विकल्पों के लिए (जो किसी टेबल के दायरे में हैं), नाम में टेबल का नाम हो सकता है. यदि अनेक टेबल में समान नाम वाले विकल्प हैं, तो यह व्यवहार टकरावों से बचाता है. उदाहरण के लिए, खाता टेबल में OrderStatus विकल्प हो सकता है और इसका नाम OrderStatus (खाते) हो सकता है. उस नाम में एक या अधिक स्थान और कोष्ठक शामिल हैं, इसलिए यदि आप इसे किसी फ़ॉर्मूले में संदर्भित करते हैं, तो आपको इसे एकल उद्धरण चिह्नों से घेरना चाहिए.

इसके अलावा, दो-विकल्प मान बूलियन मान के रूप में भी व्यवहार कर सकते हैं. उदाहरण के लिए, TaxStatus नामक दो-विकल्प मान में कर योग्य और गैर-कर योग्य लेबल हो सकते हैं, जो क्रमशः सही और गलत के अनुरूप हैं. प्रदर्शित करने के लिए, आप इस सूत्र का उपयोग नहीं कर सकते हैं:

If( ThisItem.Taxable = TaxStatus.Taxable, ...

आप इस समान फ़ॉर्मूले का भी उपयोग कर सकते हैं:

If( ThisItem.Taxable, ...