अनटाइप्ड ऑब्जेक्ट डेटा प्रकार

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

अनटाइप्ड ऑब्जेक्ट विशिष्ट अनटाइप्ड प्रदाताओं का रिटर्न प्रकार है. वर्तमान में, केवल ParseJSON() फंक्शन अनटाइप्ड ऑब्जेक्ट लौटाता है.

साधारण प्रकार

अनटाइप्ड ऑब्जेक्ट प्रकार के वेरिएबल का मान सीधे उपयोग नहीं किया जा सकता है. आपको हमेशा संबंधित प्रकार के कन्स्ट्रक्टर का उपयोग करके इसे सही ढंग से टाइप करना होगा.

निम्नलिखित उदाहरण UOValue नाम के एक अनटाइप्ड ऑब्जेक्ट वेरिएबल की वैल्यू को कन्वर्ट करते हैं.

Text(UOValue)
Value(UOValue)

निम्न तालिका अनटाइप्ड ऑब्जेक्ट को उस डेटा प्रकार में बदलने के लिए डेटा प्रकारों और संबंधित कार्यों को सूचीबद्ध करती है.

डेटा प्रकार फ़ंक्शन विवरण
Boolean बूलियन() अनटाइप्ड ऑब्जेक्ट को बूलियन में परिवर्तित करते समय, अंतर्निहित मान को एक बूलियन या एक प्रकार का प्रतिनिधित्व करना होता है जो स्वचालित रूप से हो सकता है परिवर्तित (जैसे कि एक स्ट्रिंग "सही")।
रंग ColorValue() या RGBA() रंगों को कैस्केडिंग स्टाइल शीट (CSS) रंग परिभाषा संकेतन में एक स्ट्रिंग के रूप में या अलग-अलग आरजीबीए घटकों के रूप में दर्शाया जा सकता है. अनटाइप्ड ऑब्जेक्ट को ColorValue() फ़ंक्शन का उपयोग करके कैस्केडिंग स्टाइल शीट (CSS) रंग परिभाषा स्ट्रिंग से सीधे परिवर्तित किया जा सकता है, या RGBA() फ़ंक्शन का उपयोग करके अलग-अलग RGBA संख्याओं से रंग में परिवर्तित किया जा सकता है.
मुद्रा, संख्या मान() अनटाइप्ड ऑब्जेक्ट को नंबर में परिवर्तित करते समय, अंतर्निहित मान को एक संख्या या एक प्रकार का प्रतिनिधित्व करना होता है जो स्वचालित रूप से हो सकता है परिवर्तित (जैसे कि एक स्ट्रिंग "123.456")।
दिनांक, तिथिसम, समय DateValue(), TimeValue() or DateTimeValue() ISO 8601 प्रारूप में प्रदर्शित होने पर दिनांक, समय और दिनांक समय को सीधे अनटाइप्ड ऑब्जेक्ट से उनके संबंधित प्रकार में परिवर्तित किया जा सकता है. अन्य प्रारूपों को पहले टेक्स्ट() फ़ंक्शन का उपयोग करके पाठ में परिवर्तित किया जाना चाहिए और फिर DateValue(), TimeValue() या DateTimeValue( ) फ़ंक्शन में पारित किया जाना चाहिए जो डिफ़ॉल्ट रूप से दिनांक और समय की व्याख्या करने के लिए वर्तमान उपयोगकर्ता की सेटिंग की भाषा का उपयोग करेगा.
मार्गदर्शक GUID() एक अनटाइप्ड ऑब्जेक्ट को सीधे GUID में परिवर्तित किया जा सकता है यदि अंतर्निहित ऑब्जेक्ट एक GUID का प्रतिनिधित्व करता है, या यदि यह एक स्ट्रिंग का प्रतिनिधित्व करता है।
HyperLink, छवि, मीडिया टेक्स्ट() ये डेटा प्रकार टेक्स्ट डेटा प्रकार हैं, और इन्हें टेक्स्ट में परिवर्तित किया जा सकता है और फिर Power Fx में उपयोग किया जा सकता है.
पसंद, दो विकल्प स्विच() या If() विकल्प और दो विकल्प Power Fx में स्थानीयकृत स्ट्रिंग के रूप में प्रस्तुत किए गए हैं. विकल्प एक संख्या और दो विकल्प बूलियन के रूप में समर्थित हैं. बूलियन, संख्या या स्ट्रिंग से पसंद या दो विकल्प में कोई सीधा रूपांतरण नहीं है, लेकिन बूलियन, टेक्स्ट या संख्या मान पर स्विच() या If() फ़ंक्शन का उपयोग पसंद या दो विकल्प मान को सही ढंग से असाइन करने के लिए किया जा सकता है.
रिकॉर्ड लागू नहीं रिकॉर्ड संरचना में अनटाइप्ड ऑब्जेक्ट से कोई सीधा रूपांतरण नहीं होता है, लेकिन अलग-अलग फ़ील्ड को से अनटाइप्ड ऑब्जेक्ट पुनर्प्राप्त किया जा सकता है एक नया रिकॉर्ड बनाने के लिए.
रिकॉर्ड संदर्भ लागू नहीं रिकॉर्ड संदर्भ डेटा स्रोतों के लिए अद्वितीय होते हैं और अनटाइप्ड ऑब्जेक्ट्स में उनका कोई अर्थपूर्ण प्रतिनिधित्व नहीं होता है.
टेबल टेबल() और ForAll() untyped object एक सरणी का प्रतिनिधित्व कर सकता है, जिसे तालिका में परिवर्तित किया जा सकता है. ये ऑब्जेक्ट रिकॉर्ड्स की सरणियाँ, या मानों की सरणियाँ हो सकते हैं जो प्रभावी रूप से सिंगल-कॉलम टेबल हैं. ForAll() पूरी तरह से टाइप किए गए रिकॉर्ड के साथ टेबल बनाने के लिए इस्तेमाल किया जा सकता है. अधिक जानकारी के लिए इस लेख के नीचे उदाहरणों की समीक्षा करें.
टेक्स्ट टेक्स्ट() पाठ को सीधे रूपांतरित किया जा सकता है. यदि कोई अनटाइप्ड ऑब्जेक्ट किसी संख्या का प्रतिनिधित्व करता है, तो आपको टेक्स्ट में कनवर्ट करने से पहले अनटाइप्ड ऑब्जेक्ट को पहले मूल्य() का उपयोग करके नंबर में बदलना होगा.

रिकॉर्ड प्रकार

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

रिकॉर्ड पर प्रत्येक फ़ील्ड भी अनटाइप्ड ऑब्जेक्ट प्रकार की है, और इसे ठीक से टाइप करने की आवश्यकता है. फ़ील्ड सरल प्रकार का एक अप्रकाशित रिकॉर्ड हो सकता है. यदि यह एक रिकॉर्ड है, तो आप डॉट-नोटेशन को चेन कर सकते हैं. यदि श्रृंखला में कोई फ़ील्ड मौजूद नहीं है, तो खाली() दिया जाता है.

निम्न उदाहरण UORecord नाम के एक अनटाइप्ड ऑब्जेक्ट वेरिएबल से फ़ील्ड्स का उपयोग करते हैं.

Text(UORecord.StringField)
Value(UORecord.Field.ChildField)

यदि किसी फ़ील्ड नाम में एक अमान्य पहचानकर्ता नाम शामिल है, उदाहरण के लिए जब फ़ील्ड नाम किसी संख्या से शुरू होते हैं या हाइफ़न जैसे अमान्य वर्ण होते हैं, तो आप फ़ील्ड नामों को एकल उद्धरणों में रख सकते हैं:

untyped.'01'
untyped.'my-field'

सरणी

एक अनटाइप्ड ऑब्जेक्ट वेरिएबल में एक ऐरे हो सकता है. भले ही सरणी या तो रिकॉर्ड की एक सरणी या सरल प्रकार की सरणी हो सकती है, अनटाइप्ड ऑब्जेक्ट सरणी को तालिका() फ़ंक्शन का उपयोग करके तालिका में परिवर्तित करने से हमेशा अनटाइप्ड ऑब्जेक्ट की एकल-स्तंभ तालिका का परिणाम होगा. ForAll() और इंडेक्स() जैसे कार्यों के लिए आपको पहले तालिका() बनाने की आवश्यकता नहीं है और परिणामस्वरूप आपको एकल-स्तंभ Value फ़ील्ड का उपयोग करने की आवश्यकता नहीं है,

उदाहरण के लिए, संख्या मान ( [1, 2, 3] ) युक्त अनटाइप्ड ऑब्जेक्ट की एक सरणी में दूसरी संख्या प्राप्त करने के लिए, तालिका में दूसरी पंक्ति को पुनः प्राप्त करने और कॉलम को एक संख्या में बदलने के लिए निम्न सूत्र का उपयोग किया जा सकता है:

Value( Index( UOArray, 2 ) )

यदि अनटाइप्ड ऑब्जेक्ट को पहले तालिका() में परिवर्तित किया गया था, तो परिणामी एकल-स्तंभ तालिका में दूसरी पंक्ति एक Value स्तंभ है जिसमें अनटाइप्ड ऑब्जेक्ट है:

Value( Index( Table( UOArray ), 2 ).Value )

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

इंडेक्स() फ़ंक्शन द्वारा लौटाए गए अनटाइप्ड ऑब्जेक्ट से Field कॉलम को सीधे एक्सेस किया जा सकता है.

Text( Index( UORecordArray, 2 ).Field )

Table() फ़ंक्शन का उपयोग करते समय, पहले अनटाइप्ड ऑब्जेक्ट प्राप्त करने के लिए सिंगल-कॉलम Value कॉलम को पुनः प्राप्त करें, फिर Field कॉलम तक पहुंचें:

Text( Index( Table( UORecordArray ), 2 ).Value.Field )

रिकॉर्ड की एक सरणी को टाइप की गई तालिका में बदलने के लिए, आप ForAll() फ़ंक्शन का उपयोग कर सकते हैं और प्रत्येक अलग-अलग फ़ील्ड को रूपांतरित कर सकते हैं.

ForAll( UORecordArray, { FirstField: Value(ThisRecord.FirstField), SecondField: Text(ThisRecord.SecondField) } )

अगर अनटाइप्ड ऑब्जेक्ट को पहले एक टेबल में बदला जाता है, फिर से,अनटाइप्ड ऑब्जेक्ट की परिणामी सिंगल-कॉलम टेबल के लिए आपको फ़ील्ड प्राप्त करने के लिए Value कॉलम का उपयोग करने की आवश्यकता होगी.

ForAll( Table(UORecordArray), { FirstField: Value(ThisRecord.Value.FirstField), SecondField: Text(ThisRecord.Value.SecondField) } )