नोट
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप साइन इन करने या निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
डायनेमिक Power Fx में एक डेटा प्रकार है जो किसी भी डेटा संरचना, जटिल या सरल को धारण कर सकता है. इसका सीधे उपयोग नहीं किया जा सकता है और रनटाइम पर किसी अन्य डेटा प्रकार में रूपांतरण नहीं किया जा सकता है, या तो स्पष्ट रूप से या अप्रत्यक्ष रूप से। डायनेमिक मान में रिकॉर्ड के फ़ील्ड को डॉट नोटेशन का उपयोग करके एक्सेस किया जा सकता है, और फ़ील्ड का अस्तित्व केवल रनटाइम पर सत्यापित किया जाता है।
डायनेमिक मान बनाने के दो तरीके हैं:
- ParseJSON फ़ंक्शन का उपयोग करना।
- एक कनेक्टर का उपयोग करना जो एक "गतिशील" प्रकार देता है।
नोट
डायनामिक को पहले UntypedObject कहा जाता था। केवल नाम बदल गया है, शब्दार्थ में कोई बदलाव नहीं हुआ है। एकमात्र स्थान जहां नाम किसी सूत्र में दिखाई देगा, वह उपयोगकर्ता परिभाषित फ़ंक्शंस और उपयोगकर्ता परिभाषित प्रकारों के प्रयोगात्मक संस्करणों में है।
साधारण प्रकार
डायनेमिक मान वाले चर का मान सीधे उपयोग नहीं किया जा सकता है। आपको हमेशा संबंधित प्रकार के कन्स्ट्रक्टर का उपयोग करके या इसे AsType और ParseJSON फ़ंक्शन के साथ एक विशिष्ट प्रकार में परिवर्तित करके इसे सही ढंग से टाइप करना होगा।
निम्नलिखित उदाहरण एक डायनेमिक चर के मान को परिवर्तित करते हैं जिसका नाम है DynValue।
Text(DynValue)
Value(DynValue)
निम्न तालिका डायनामिक को उस डेटा प्रकार में कनवर्ट करने के लिए डेटा प्रकार और संबंधित फ़ंक्शंस को सूचीबद्ध करती है.
| डेटा प्रकार | फ़ंक्शन | विवरण |
|---|---|---|
| बूलियन | बूलियन() | डायनामिक कोबूलियन में परिवर्तित करते समय, अंतर्निहित मान को एक बूलियन या एक प्रकार का प्रतिनिधित्व करना होता है जिसे स्वचालित रूप से परिवर्तित किया जा सकता है (जैसे कि एक स्ट्रिंग "सत्य")। |
| रंग | ColorValue() या RGBA() | रंगों को कैस्केडिंग स्टाइल शीट (CSS) रंग परिभाषा संकेतन में एक स्ट्रिंग के रूप में या अलग-अलग आरजीबीए घटकों के रूप में दर्शाया जा सकता है. डायनामिक को सीधे ColorValue() फ़ंक्शन का उपयोग करके कैस्केडिंग स्टाइल शीट (CSS) रंग परिभाषा स्ट्रिंग से या RGBA() फ़ंक्शन का उपयोग करके अलग-अलग RGBA नंबरों से रंग में कनवर्ट किया जा सकता है। |
| मुद्रा, संख्या | कीमत() | डायनेमिक कोनंबर में कनवर्ट करते समय, अंतर्निहित मान को एक संख्या या एक प्रकार का प्रतिनिधित्व करना होता है जिसे स्वचालित रूप से परिवर्तित किया जा सकता है (जैसे कि एक स्ट्रिंग "123.456")। |
| दिनांक, तिथिसम, समय | DateValue(), TimeValue() या DateTimeValue() | दिनांक, समय और दिनांक समय को सीधे डायनामिक से उनके संबंधित प्रकार में परिवर्तित किया जा सकता है, जब आईएसओ 8601 प्रारूप में दर्शाया जाता है। अन्य प्रारूपों को पहले टेक्स्ट() फ़ंक्शन का उपयोग करके पाठ में परिवर्तित किया जाना चाहिए और फिर DateValue(), TimeValue() या DateTimeValue( ) फ़ंक्शन में पारित किया जाना चाहिए जो डिफ़ॉल्ट रूप से दिनांक और समय की व्याख्या करने के लिए वर्तमान उपयोगकर्ता की सेटिंग की भाषा का उपयोग करेगा. |
| GUID | गाइड() | एक डायनेमिक मान सीधे GUID में कनवर्ट किया जा सकता है यदि अंतर्निहित ऑब्जेक्ट किसी GUID का प्रतिनिधित्व करता है, या यदि यह किसी स्ट्रिंग का प्रतिनिधित्व करता है। |
| HyperLink, छवि, मीडिया | मूलपाठ() | ये डेटा प्रकार टेक्स्ट डेटा प्रकार हैं, और इन्हें टेक्स्ट में परिवर्तित किया जा सकता है और फिर Power Fx में उपयोग किया जा सकता है. |
| पसंद, दो विकल्प | स्विच() या यदि() | विकल्प और दो विकल्प स्थानीयकृत स्ट्रिंग के रूप में प्रस्तुत किए जाते हैं Power Fx. विकल्प एक संख्या और दो विकल्पों बूलियन द्वारा समर्थित होते हैं। बूलियन, संख्या या स्ट्रिंग से पसंद या दो विकल्प में कोई सीधा रूपांतरण नहीं है, लेकिन बूलियन, टेक्स्ट या संख्या मान पर स्विच() या If() फ़ंक्शन का उपयोग पसंद या दो विकल्प मान को सही ढंग से असाइन करने के लिए किया जा सकता है. |
| रिकॉर्ड | लागू नहीं | डायनामिक से रिकॉर्ड संरचना में कोई सीधा रूपांतरण नहीं है, लेकिन एक नया रिकॉर्ड बनाने के लिए अलग-अलग फ़ील्ड को डायनामिक से पुनर्प्राप्त किया जा सकता है. |
| रिकॉर्ड संदर्भ | लागू नहीं | रिकॉर्ड संदर्भ डेटास्रोतों के लिए अद्वितीय होते हैं और डायनामिक में उनका कोई सार्थक प्रतिनिधित्व नहीं होता है। |
| टेबल | तालिका() और सभी के लिए() | एक डायनेमिक एक सरणी का प्रतिनिधित्व कर सकता है, जिसे एक तालिका में परिवर्तित किया जा सकता है। ये ऑब्जेक्ट रिकॉर्ड्स की सरणियाँ, या मानों की सरणियाँ हो सकते हैं जो प्रभावी रूप से सिंगल-कॉलम टेबल हैं. ForAll() का उपयोग पूर्णतः टाइप किए गए रिकॉर्ड वाली तालिका बनाने के लिए किया जा सकता है। अधिक जानकारी के लिए इस लेख के नीचे उदाहरणों की समीक्षा करें. |
| टेक्स्ट | मूलपाठ() | पाठ को सीधे रूपांतरित किया जा सकता है. यदि कोई डायनेमिक मान किसी संख्या का प्रतिनिधित्व करता है, तो आपको टेक्स्ट में कनवर्ट करने से पहले Value() का उपयोग करके डायनामिक को संख्या में बदलना होगा। |
रिकॉर्ड प्रकार
आप रिकॉर्ड के लिए उपयोग किए जाने वाले नियमित डॉट-नोटेशन का उपयोग करके डायनेमिक रिकॉर्ड का प्रतिनिधित्व करने वाले चर पर फ़ील्ड तक पहुँच सकते हैं. हालांकि, फील्ड के अस्तित्व को रनटाइम तक सत्यापित नहीं किया जाएगा. परिणामस्वरूप, कोई इंटैलिजेंस भी उपलब्ध नहीं है. यदि कोई फ़ील्ड मौजूद नहीं है या कोई अंतर्निहित शून्य मान है, तो इसे एक्सेस करने से रिक्त() मान प्राप्त होगा.
रिकॉर्ड पर प्रत्येक फ़ील्ड भी डायनामिक प्रकार का है, और इसे ठीक से टाइप करने की आवश्यकता है। फ़ील्ड सरल प्रकार का एक गतिशील रिकॉर्ड हो सकता है। यदि यह एक रिकॉर्ड है, तो आप डॉट-नोटेशन को चेन कर सकते हैं. यदि श्रृंखला में कोई फ़ील्ड मौजूद नहीं है, तो खाली() दिया जाता है.
निम्न उदाहरण किसी डायनेमिक वैरिएबल DynRecordसे फ़ील्ड का उपयोग करते हैं.
Text(DynRecord.StringField)
Value(DynRecord.Field.ChildField)
यदि किसी फ़ील्ड नाम में एक अमान्य पहचानकर्ता नाम शामिल है, उदाहरण के लिए जब फ़ील्ड नाम किसी संख्या से शुरू होते हैं या हाइफ़न जैसे अमान्य वर्ण होते हैं, तो आप फ़ील्ड नामों को एकल उद्धरणों में रख सकते हैं:
dynamic.'01'
dynamic.'my-field'
गतिशील स्तंभ पहुँच
कभी-कभी किसी रिकॉर्ड में स्तंभों के नाम गतिशील होंगे। रिकॉर्ड में कौन से स्तंभ नाम उपलब्ध हैं, यह निर्धारित करने के लिए ColumnNames फ़ंक्शन का उपयोग करें, और फिर नामित स्तंभ का मान प्राप्त करने के लिए Column फ़ंक्शन का उपयोग करें.
उदाहरण के लिए,
LettersUsed = ParseJSON( "{ ""d"": 2, ""p"": 3 }" );
Concat( ColumnNames( LettersUsed ) As Names, Names.Value, ", " )
// returns "d, p"
Sum( ForAll( ColumnNames( LettersUsed ) As Names, Column( LettersUsed, Names.Value ) ), Value )
// returns 5
सरणी
एक डायनेमिक वेरिएबल में एक सरणी हो सकती है। भले ही सरणी या तो रिकॉर्ड की एक सरणी या सरल प्रकारों की सरणी हो सकती है, फिर भी Table() फ़ंक्शन का उपयोग करके डायनेमिक सरणी को तालिका में कनवर्ट करने से हमेशा Dynamic की एकल-स्तंभ तालिका होगी.
ForAll() और इंडेक्स() जैसे कार्यों के लिए आपको पहले तालिका() बनाने की आवश्यकता नहीं है और परिणामस्वरूप आपको एकल-स्तंभ Value फ़ील्ड का उपयोग करने की आवश्यकता नहीं है,
उदाहरण के लिए, डायनेमिक की एक सरणी में दूसरी संख्या प्राप्त करने के लिए संख्या मान ( ), [1, 2, 3] निम्न सूत्र का उपयोग तालिका में दूसरी पंक्ति को पुनः प्राप्त करने और कॉलम को एक संख्या में बदलने के लिए किया जा सकता है:
Value( Index( UOArray, 2 ) )
यदि डायनामिक को पहले तालिका() में परिवर्तित किया गया था, तो परिणाम एकल-स्तंभ तालिका में दूसरी पंक्ति एक Value कॉलम है जिसमें डायनामिक होता है:
Value( Index( Table( UOArray ), 2 ).Value )
रिकॉर्ड की एक सरणी के लिए जिसमें Field नामक टेक्स्ट कॉलम है, वही तर्क लागू होता है.
डायनामिक को सीधे एक्सेस किया जा सकता है, या यदि Table() फ़ंक्शन का उपयोग करने से डायनामिक की एकल-कॉलम तालिका प्राप्त होगी।
कॉलम को Field सीधे Index() फ़ंक्शन द्वारा लौटाए गए डायनेमिक से एक्सेस किया जा सकता है।
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) } )
टाइप किए गए रिकॉर्ड और तालिकाओं में परिवर्तित करना
महत्त्वपूर्ण
- डायनेमिक मानों के साथ AsType और IsType का उपयोग करना एक प्रयोगात्मक विशेषता है।
- प्रायोगिक सुविधाएं उत्पादन में उपयोग के लिए नहीं होतीं और हो सकता है कि वे पूर्ण न हों। ये सुविधाएँ आधिकारिक रिलीज़ से पहले उपलब्ध होती हैं ताकि आप शीघ्र पहुँच प्राप्त कर सकें और प्रतिक्रिया दे सकें। अधिक जानकारी: कैनवास ऐप में प्रयोगात्मक, पूर्वावलोकन और रिटायर्ड फ़ीचर्स समझें
- यह आलेख जिस व्यवहार का वर्णन करता है वह केवल तभी उपलब्ध होता है जब उपयोगकर्ता-परिभाषित प्रकार सेटिंग्स आगामी सुविधाएँ > प्रायोगिक > में प्रायोगिक सुविधा चालू होती है (यह डिफ़ॉल्ट रूप से बंद होती है)।
- आपकी प्रतिक्रिया हमारे लिए बहुमूल्य है। प्रयोगात्मक सुविधाओं के सामुदायिक मंच पर हमें बताएँ कि आप क्या सोचते हैं। Power Apps
प्रत्येक सरल मान को व्यक्तिगत रूप से परिवर्तित करने के बजाय, ParseJSON, IsType और AsType फ़ंक्शंस का उपयोग डायनेमिक को बल्क में टाइप किए गए ऑब्जेक्ट में बदलने के लिए किया जा सकता है। एक प्रकार बनाने के लिए प्रकार फ़ंक्शन का उपयोग करें जो गतिशील संरचना को टाइप की गई संरचना में मैप करेगा।
उदाहरण के लिए, यहां हम JSON स्ट्रिंग को दिनांक समय मानों के रूप में व्याख्या कर रहे हैं, बिना DateTimeValue function को कॉल करने की आवश्यकता के:
Eclipse = ParseJSON( "{ ""Start"": ""2026-08-12T18:26:00.000Z"", ""End"": ""2026-08-12T18:33:00.000Z"" }",
Type( { Start: DateTime, End: DateTime } ) );
DateDiff( Eclipse.Start, Eclipse.End, TimeUnit.Minutes )
// 7