नोट
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप साइन इन करने या निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
इस पृष्ठ तक पहुंच के लिए प्राधिकरण की आवश्यकता होती है। आप निर्देशिकाएँ बदलने का प्रयास कर सकते हैं।
इस पर लागू होता है: कैनवास ऐप्लिकेशन,
Copilot Studio
Desktop फ़्लो,
मॉडल-चालित ऐप्स,
Power Platform, CLI
Dataverse फ़ंक्शंस
, Power Pages
मान परिकलित करता है और तालिका के सभी रिकॉर्ड के लिए कार्रवाइयाँ करता है.
वर्णन
ForAll फ़ंक्शन किसी तालिका में सभी रिकॉर्ड्स के लिए एक सूत्र का मूल्यांकन करता है। सूत्र, किसी मान की गणना और/या क्रियाएँ कर सकता है, जैसे डेटा संशोधित करना या कनेक्शन के साथ कार्य करना. एकल रिकॉर्ड के लिए सूत्र का मूल्यांकन करने हेतु With फ़ंक्शन का उपयोग करें.
गिनती के आधार पर पुनरावृति करने के लिए फ़ंक्शन के साथ अनुक्रमForAll फ़ंक्शन का उपयोग करें।
वर्तमान में संसाधित की जा रही रिकॉर्ड की फ़ील्ड फ़ॉर्मूला में उपलब्ध हैं. ThisRecord ऑपरेटर या केवल नाम से संदर्भ फ़ील्ड का उपयोग करें, जैसे आप किसी अन्य मान के साथ करेंगे. संसाधित किए जा रहे रिकॉर्ड को नाम देने के लिए As ऑपरेटर का भी उपयोग किया जा सकता है, जो आपके सूत्र को समझ पाना आसान बना सकता है और नेस्टेड रिकॉर्ड को सुलभ बना सकता है. अधिक जानकारी के लिए, नीचे दिए गए उदाहरणों को देखें और रिकॉर्ड कार्यक्षेत्र के साथ कार्य करें.
मान देता है
प्रत्येक सूत्र मूल्यांकन का परिणाम एक तालिका में, इनपुट तालिका के समान ऑर्डर में मिलता है.
यदि सूत्र का परिणाम एक एकल मान है, तो परिणामी तालिका एक एकल-स्तंभ तालिका है। यदि सूत्र का परिणाम एक रिकॉर्ड है, तो परिणामी तालिका में परिणाम रिकॉर्ड के समान स्तंभ वाले रिकॉर्ड होते हैं.
यदि सूत्र का परिणाम एक रिक्त मान है, तो उस इनपुट रिकॉर्ड के लिए परिणाम तालिका में कोई रिकॉर्ड नहीं है। इस मामले में, स्रोत तालिका की तुलना में परिणाम तालिका में कम रिकॉर्ड हैं।
क्रियाएँ करना
सूत्र में ऐसे फ़ंक्शन शामिल हो सकते हैं जो क्रियाएँ, जैसे Patch और Collect फ़ंक्शन द्वारा डेटा स्रोत के रिकॉर्ड संशोधित करते हैं. सूत्र, कनेक्शन पर विधियाँ भी कॉल कर सकते हैं. ; ऑपरेटर के उपयोग द्वारा प्रति रिकॉर्ड एकाधिक क्रियाएँ की जा सकती हैं. आप उस तालिका को संशोधित नहीं कर सकते जो फ़ंक्शन का ForAll विषय है.
अपना सूत्र लिखते समय ध्यान रखें, कि रिकॉर्ड किसी भी ऑर्डर में, और जब संभव होता है, तब समानांतर संसाधित किए जा सकते हैं. तालिका के प्रथम रिकॉर्ड को अंतिम रिकॉर्ड के बाद संसाधित किया जा सकता है.
ऑर्डर संबंधी निर्भरताओं से बचने के लिए सावधानी बरतें. इस कारण से, आप किसी फ़ंक्शन ForAll के भीतर UpdateContext, Clear और ClearCollect फ़ंक्शंस का उपयोग नहीं कर सकते क्योंकि उनका उपयोग आसानी से उन चर को रखने के लिए किया जा सकता है जो इस प्रभाव के लिए अतिसंवेदनशील होंगे। आप Collect का उपयोग कर सकते हैं, परंतु जिस ऑर्डर में रिकॉर्ड जोड़े गए हैं, वह अपरिभाषित है.
डेटा स्रोत को संशोधित करने वाले अनेक फ़ंक्शन, जिनमें Collect, Remove, और Update शामिल हैं, अपने वापसी मान के रूप में परिवर्तित डेटा स्रोत देते हैं. ये रिटर्न मान बड़े हो सकते हैं और टेबल के ForAll प्रत्येक रिकॉर्ड के लिए लौटाए जाने पर महत्वपूर्ण संसाधनों का उपभोग कर सकते हैं। आप यह भी पा सकते हैं कि ये रिटर्न मान वह नहीं हैं जो आप उम्मीद करते हैं क्योंकि समानांतर ForAll में काम कर सकते हैं और इन कार्यों के साइड इफेक्ट्स को उनके परिणाम प्राप्त करने से अलग कर सकते हैं। यदि से वापसी ForAll मान का उपयोग नहीं किया जाता है, जो अक्सर डेटा संशोधन कार्यों के मामले में होता है, तो वापसी मान नहीं बनाया जाएगा और कोई संसाधन या ऑर्डर चिंताएं नहीं हैं। लेकिन अगर आप डेटा स्रोत लौटाने वाले फ़ंक्शंस ForAll में से एक के परिणाम का उपयोग कर रहे हैं, तो इस बारे में ध्यान से सोचें कि आप परिणाम की संरचना कैसे करते हैं और पहले छोटे डेटा सेट पर इसे आज़माते हैं।
विकल्प
Power Apps में कई फ़ंक्शन एकल-स्तंभ तालिका का उपयोग करके एक समय में एक से अधिक मानों को संसाधित कर सकते हैं. उदाहरण के लिए, लेन फ़ंक्शन पाठ मानों की एक तालिका को संसाधित कर सकता है, लंबाई की एक तालिका लौटा सकता है, उसी तरह, जो हो ForAll सकता है। यह कई मामलों में उपयोग करने ForAll की आवश्यकता को समाप्त कर सकता है, अधिक कुशल हो सकता है, और पढ़ने में आसान है।
एक और विचार यह है कि अन्य ForAll कार्य हो सकते हैं, जबकि फ़िल्टर जैसे अन्य कार्य हो सकते हैं।
प्रत्यायोजन
डेटा स्रोत के साथ उपयोग किए जाने पर, यह फ़ंक्शन प्रत्यायुक्त नहीं किया जा सकता. डेटा स्रोत का केवल पहला भाग पुनर्प्राप्त किया जाएगा और फिर फ़ंक्शन लागू होगा. हो सकता है कि परिणाम पूर्ण कहानी प्रस्तुत न करे. इस सीमा के बारे में आपको याद दिलाने के लिए और संभवतः प्रत्यायोजन योग्य विकल्पों पर स्विच करने का सुझाव देने के लिए लेखांकन समय पर एक चेतावनी दिखाई दे सकती है. अधिक जानकारी के लिए, प्रत्यायोजन ओवरव्यू देखें.
सिंटैक्स
ForAll(तालिका, सूत्र)
- तालिका - आवश्यक. Table पर क्रिया की जाएगी.
- सूत्र - आवश्यक. Table के सभी रिकॉर्ड के लिए मूल्यांकन करने का सूत्र.
उदाहरण
गणनाएँ
निम्नलिखित उदाहरण Squaresडेटा स्रोत का उपयोग करते हैं:
इस डेटा स्रोत को एक संग्रह के रूप में बनाने के लिए, बटन नियंत्रण के OnSelect गुण को इस सूत्र पर सेट करें, पूर्वावलोकन मोड खोलें और उसके बाद बटन चुनें:
ClearCollect( Squares, [ "1", "4", "9" ] )
| सूत्र | वर्णन | परिणाम |
|---|---|---|
|
ForAll(वर्ग, वर्ग (मान) Sqrt( वर्ग ) |
इनपुट तालिका के सभी रिकॉर्ड के लिए, Value स्तंभ के वर्गमूल की गणना करता है. Sqrt फ़ंक्शन का उपयोग एकल-कॉलम तालिका के साथ भी किया जा सकता है, जिससे इस उदाहरण का उपयोग किए ForAllबिना प्रदर्शन करना संभव हो जाता है। |
|
| ForAll(वर्ग, शक्ति (मूल्य, 3) | इनपुट तालिका के सभी रिकॉर्ड के लिए, Value स्तंभ को तृतीय घात तक बढ़ाता है. पावर फ़ंक्शन एकल-स्तंभ तालिकाओं का समर्थन नहीं करता है। इसलिए, ForAll इस मामले में इस्तेमाल किया जाना चाहिए। |
|
कनेक्शन का उपयोग करना
निम्नलिखित उदाहरण Expressionsडेटा स्रोत का उपयोग करते हैं:
इस डेटा स्रोत को एक संग्रह के रूप में बनाने के लिए, बटन नियंत्रण के OnSelect गुण को इस सूत्र पर सेट करें, पूर्वावलोकन मोड खोलें और उसके बाद बटन चुनें:
ClearCollect( Expressions, [ "Hello", "Good morning", "Thank you", "Goodbye" ] )
यह उदाहरण Microsoft Translator कनेक्शन का भी उपयोग करता है. अपने ऐप में इस कनेक्शन को जोड़ने के लिए, कनेक्शन प्रबंधित करने के तरीके पर आलेख देखें.
| सूत्र | वर्णन | परिणाम |
|---|---|---|
| ForAll(अभिव्यक्ति, MicrosoftTranslator.Translate (मान, "es")) | Expressions तालिका के सभी रिकॉर्ड के लिए, Value स्तंभ की सामग्री का स्पेनिश (संक्षिप्त "es") में अनुवाद करें. |
|
| ForAll(अभिव्यक्ति, MicrosoftTranslator.Translate (मान, "fr")) | Expressions तालिका के सभी रिकॉर्ड के लिए, Value स्तंभ की सामग्री का फ़्रेंच (संक्षिप्त "fr") में अनुवाद करें. |
|
तालिका की प्रतिलिपि बनाना
कभी-कभी आपको डेटा को फ़िल्टर, आकार, सॉर्ट और बदलाव करने की आवश्यकता होती है. Power Apps ऐसा करने के लिए कई फ़ंक्शन प्रदान करता है, जैसे Filter, AddColumns और Sort. Power Apps प्रत्येक तालिका को एक मान के रूप में मानता है, जिससे यह सूत्रों के माध्यम से प्रवाहित हो सकता है और आसानी से उपभोग किया जा सकता है.
और कभी-कभी आप बाद के उपयोग के लिए इस परिणाम की एक प्रति बनाना चाहते हैं या आप एक डेटा स्रोत से दूसरे में जानकारी ले जाना चाहते हैं. Power Apps डेटा की प्रतिलिपि बनाने के लिए Collect फ़ंक्शन प्रदान करता है.
लेकिन इससे पहले कि आप उस प्रति को बनाएं, अगर इसकी आवश्यकता हो तो ध्यान से सोचें। कई स्थितियों का समाधान अंतर्निहित डेटा स्रोत को मांग के अनुसार सूत्र द्वारा फ़िल्टर और आकार देकर किया जा सकता है. प्रतिलिपि बनाने के कुछ नकारात्मक पक्ष निम्नलिखित हैं:
- एक ही जानकारी की दो प्रतियों का मतलब है कि उनमें से एक सिंक से बाहर हो सकती है.
- प्रतिलिपि बनाने से कंप्यूटर मेमोरी, नेटवर्क बैंडविड्थ और/या समय का अधिक उपयोग हो सकता है.
- अधिकांश डेटा स्रोतों के लिए, प्रतिलिपि बनाना प्रत्यायोजित नहीं किया जा सकता है, जिससे यह सीमित हो जाता है कि कितना डेटा स्थानांतरित किया जा सकता है.
निम्नलिखित उदाहरण Productsडेटा स्रोत का उपयोग करते हैं:
इस डेटा स्रोत को एक संग्रह के रूप में बनाने के लिए, बटन नियंत्रण के OnSelect गुण को इस सूत्र पर सेट करें, पूर्वावलोकन मोड खोलें और उसके बाद बटन चुनें:
ClearCollect( Products,
Table(
{ Product: "Widget", 'Quantity Requested': 6, 'Quantity Available': 3 },
{ Product: "Gadget", 'Quantity Requested': 10, 'Quantity Available': 20 },
{ Product: "Gizmo", 'Quantity Requested': 4, 'Quantity Available': 11 },
{ Product: "Apparatus", 'Quantity Requested': 7, 'Quantity Available': 6 }
)
)
हमारा लक्ष्य एक ऐसी व्युत्पन्न तालिका के साथ कार्य करना है, जिसमें केवल वे आइटम शामिल हैं जिनमें उपलब्ध से अधिक का अनुरोध किया गया है, और उसके लिए हमें एक ऑर्डर देने की आवश्यकता है:
हम इस कार्य को विभिन्न तरीकों से कर सकते हैं, जिनमें से सभी विभिन्न गुण-दोषों से साथ समान परिणाम देते हैं.
मांग पर तालिका को आकार देना
वह प्रतिलिपि न बनाएँ! हम निम्नलिखित सूत्र का उपयोग आवश्यकतानुसार कहीं भी कर सकते हैं:
// Table shaping on demand, no need for a copy of the result
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
Filter और AddColumns फ़ंक्शन द्वारा एक रिकॉर्ड कार्यक्षेत्र बनाया गया है, ताकि प्रत्येक रिकॉर्ड के 'Quantity Requested' और 'Quantity Available' फ़ील्ड के साथ क्रमशः तुलना और घटाव ऑपरेशन किए जा सकें.
इस उदाहरण में, Filter फ़ंक्शन को प्रत्यायोजित किया जा सकता है. यह महत्वपूर्ण है, क्योंकि यह मापदंडों को पूरा करने वाले सभी उत्पादों को ढूँढ सकता है, भले ही लाखों रिकॉर्ड वाली तालिका में से कुछ ही रिकॉर्ड हो. इस समय, ShowColumns और AddColumns को प्रत्यायोजित नहीं किया जा सकता है, इसलिए ऑर्डर करने के लिए आवश्यक उत्पादों की वास्तविक संख्या सीमित है। यदि आप जानते हैं कि इस परिणाम का आकार हमेशा अपेक्षाकृत छोटा होता है, तो यह दृष्टिकोण ठीक है।
और क्योंकि हमने एक प्रति नहीं बनाई है, इसलिए प्रबंधन या पुराने होने के लिए जानकारी की कोई अतिरिक्त प्रति नहीं है।
ForAll मांग पर
एक अन्य दृष्टिकोण टेबल-आकार देने वाले कार्यों को बदलने के लिए फ़ंक्शन का ForAll उपयोग करना है:
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
यह सूत्र कुछ लोगों के पढ़ने और लिखने के लिए आसान हो सकता है.
इसका ForAll कोई भी हिस्सा delegable नहीं है। उत्पाद तालिका के केवल पहले भाग का मूल्यांकन किया जाता है, जो एक समस्या हो सकती है यदि यह तालिका बड़ी है। चूँकि पिछले उदाहरण में, Filter को प्रत्यायोजित किया जा सकता है, अतः यह बड़े डेटा सेट के साथ बेहतर कार्य कर सकता है.
परिणाम एकत्र करें
कुछ स्थितियों में, डेटा की एक प्रतिलिपि की आवश्यकता हो सकती है. आपको जानकारी एक डेटा स्रोत से दूसरे में स्थानांतरित करने की आवश्यकता होगी. इस उदाहरण में, ऑर्डर एक विक्रेता के सिस्टम पर NewOrder तालिका के माध्यम से दिया जाता है. हाई-स्पीड उपयोगकर्ता इंटरैक्शन के लिए, हो सकता है कि आप किसी तालिका की स्थानीय प्रतिलिपि को कैश करना चाहें, ताकि सर्वर विलंबता न हो.
हम उसी तालिका आकार देने का उपयोग किया, जैसा पिछले दो उदाहरणों में था, लेकिन हमने परिणाम एक संग्रह में कैप्चर किया है:
ClearCollect( NewOrder,
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
)
ClearCollect( NewOrder,
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
)
ClearCollect और Collect को प्रत्यायोजित नहीं किया जा सकता. परिणामस्वरूप इस तरीके से स्थानांतरित किए जा सकने वाले डेटा की मात्रा सीमित है.
भीतर इकट्ठा करें ForAll
अंत में, हम सीधे कलेक्ट कर सकते हैं ForAll:
Clear( NewOrder );
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
Collect( NewOrder,
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
)
फिर से, फ़ंक्शन को ForAll इस समय प्रत्यायोजित नहीं किया जा सकता है। यदि हमारी उत्पाद तालिका बड़ी है, ForAll तो केवल रिकॉर्ड के पहले सेट को देखता है और हम कुछ उत्पादों को याद कर सकते हैं जिन्हें ऑर्डर करने की आवश्यकता है। लेकिन जिन तालिकाओं को हम जानते हैं कि वे छोटी हैं, उनके लिए यह दृष्टिकोण ठीक है।
ध्यान दें कि हम का परिणाम कैप्चर नहीं कर रहे हैं ForAll। इसके भीतर से किए गए कलेक्ट फ़ंक्शन कॉल सभी रिकॉर्ड के लिए न्यूऑर्डर डेटा स्रोत लौटाते हैं, जो कई डेटा तक जोड़ सकता है यदि हम इसे कैप्चर कर रहे थे।
घटक में मानचित्र तालिका
मानचित्र तालिकाएँ देखें.