इसके माध्यम से साझा किया गया


क्वेरी सीमाएँ: प्रत्यायोजन और क्वेरी सीमाएँ

प्रतिनिधिमंडल को समझना

Power Apps बैक-एंड डेटा स्रोत के साथ सबसे अच्छा काम करता है जब Power Fx क्वेरी को पूरी तरह से एक समतुल्य क्वेरी में अनुवादित किया जा सकता है जिसे डेटा स्रोत पर चलाया जा सकता है। Power Apps एक क्वेरी भेजता है जिसे डेटा स्रोत समझता है, क्वेरी डेटा स्रोत पर निष्पादित की जाती है, और क्वेरी परिणाम वापस कर दिए जाते हैं। Power Apps उदाहरण के लिए, डेटा स्रोत, डेटा स्रोत पर डेटा को फ़िल्टर करने का कार्य कर सकता है और केवल उन पंक्तियों को लौटा सकता है जो फ़िल्टर मानदंडों को पूरा करती हैं। जब यह सही ढंग से काम करता है, तो हम कहते हैं कि क्वेरी का कार्य करने के लिए क्वेरी को डेटा स्रोत को सौंप दिया गया है। ·

हालाँकि, सभी डेटा स्रोतों पर क्वेरीज़ को हमेशा समतुल्य क्वेरीज़ में अनुवादित नहीं किया जा सकता है। Power Fx उदाहरण के लिए, Dataverse एक्सेल की तुलना में अधिक क्वेरी सुविधाओं का समर्थन करता है। Dataverse 'in' (सदस्यता) क्वेरी ऑपरेटर का समर्थन करता है और एक्सेल नहीं करता है। यदि कोई क्वेरी किसी ऐसी सुविधा का उपयोग करती है जिसका डेटा स्रोत समर्थन नहीं करता है, तो हम कहते हैं कि क्वेरी गैर-प्रत्यायोजनीय है। · सामान्यतः, यदि क्वेरी अभिव्यक्ति का कोई भाग गैर-प्रत्यायोजित है तो हम क्वेरी के किसी भी भाग को प्रत्यायोजित नहीं करते हैं।

जब कोई क्वेरी गैर-प्रत्यायोजनीय होती है, तो Power Apps डेटा स्रोत से केवल पहले 500 रिकॉर्ड प्राप्त करता है और फिर क्वेरी में क्रियाएं निष्पादित करता है। इस सीमा को 2,000 रिकॉर्ड तक बढ़ाया जा सकता है सीमा को बदलने से Power Apps परिणाम का आकार 500 रिकॉर्ड तक सीमित हो जाता है, ताकि Power Apps का अच्छा प्रदर्शन बना रहे। हमने प्रयोगों के माध्यम से पाया कि इन आकारों से बड़े परिणाम सेट आपके ऐप और सामान्य रूप से प्रदर्शन संबंधी समस्याएं उत्पन्न करते हैं। Power Apps

हालाँकि, यह सीमा एक समस्या हो सकती है क्योंकि यदि डेटा स्रोत पर डेटा 500/2000 रिकॉर्ड से अधिक हो जाता है तो क्वेरी गलत परिणाम लौटा सकती है। उदाहरण के लिए, उस उदाहरण पर विचार करें जहां आपके डेटा स्रोत में 10 मिलियन रिकॉर्ड हैं और आपकी क्वेरी को डेटा के अंतिम भाग पर काम करने की आवश्यकता है। (उदाहरण के लिए, 'Z' से शुरू होने वाले पारिवारिक नाम) हालाँकि, आपकी क्वेरी में एक गैर-प्रत्यायोजनीय ऑपरेटर है (उदाहरण के लिए, विशिष्ट।) इस मामले में, आपको केवल पहले 500/2000 रिकॉर्ड मिलते हैं और आपके परिणाम गलत होते हैं।

अपने डेटा स्रोत के लिए प्रत्यायोजित तालिकाओं का उपयोग करके अपनी Power Fx क्वेरी बनाएँ। आपको केवल उन क्वेरी फ़ंक्शन का उपयोग करना चाहिए जिन्हें प्रत्यायोजित किया जा सकता है। यह आपके ऐप को बेहतर प्रदर्शन करने और उपयोगकर्ताओं को उनकी आवश्यक सभी जानकारी तक पहुंच सुनिश्चित करने का एकमात्र तरीका है।

प्रत्यायोजन की चेतावनियों पर ध्यान दें, जो उन स्थानों की पहचान करते हैं जहां प्रत्यायोजन संभव नहीं है. यदि आप छोटे डेटा सेट (500 से कम रिकॉर्ड) के साथ काम करते हैं, तो आप किसी भी डेटा स्रोत और सूत्र का उपयोग कर सकते हैं क्योंकि यदि सूत्र को प्रत्यायोजित नहीं किया जा सकता है तो ऐप स्थानीय रूप से डेटा संसाधित कर सकता है।

नोट

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

प्रत्यायोजन योग्य डेटा स्रोत

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

आयातित Excel वर्कबुक्स (अपने अनुप्रयोग में स्थैतिक डेटा जोड़ें डेटा स्रोत का उपयोग करके), संदर्भ चर में संग्रहित संग्रह और तालिकाओं को प्रत्यायोजन की आवश्यकता नहीं होती है. यह सारा डेटा पहले से ही मेमोरी में है और पूरी Power Apps भाषा को लागू किया जा सकता है.

प्रत्यायोजन योग्य फ़ंक्शन

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

फ़िल्टर फ़ंक्शंस

फ़िल्टर, खोज, प्रथम और लुकअप को प्रत्यायोजित किया जा सकता है।

फ़िल्टर करें और LookUp फ़ंक्शन के अंदर, आप उपयुक्त रिकॉर्ड्स को चुनने के लिए तालिका के स्तंभ के साथ इनका उपयोग कर सकते हैं:

  • और (समेत &&), या (सहित ||), नहीं (सहित !)
  • में

    नोट

    में केवल आधार डेटा स्रोत पर कॉलम के लिए प्रत्यायोजित है. उदाहरण के लिए, यदि डेटा स्रोत खाता तालिका है तो Filter(Accounts, Name in ["name1", "name2"]) मूल्यांकन के लिए डेटा स्रोत को प्रतिनिधि करता है. हालांकि, Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) प्रत्यायोजित नहीं करता है क्योंकि पूरा नाम कॉलम खाते की तुलना में एक अलग टेबल (PrimaryContact) पर है. अभिव्यक्ति का मूल्यांकन स्थानीय स्तर पर किया जाता है.

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • StartsWith, EndsWith
  • नियतांक मान जो सभी रिकॉर्डों में समान हैं, जैसे कि नियंत्रण गुण और वैश्विक और संदर्भ चर.

आप अपने फ़ॉर्मूले के उन हिस्सों का भी उपयोग कर सकते हैं जो सभी रिकॉर्ड के लिए नियतांक मान का मूल्यांकन करते हैं. उदाहरण के लिए, Left( Language(), 2 ), Date( 2019, 3, 31 ) और Today() रिकॉर्ड के किसी भी स्तंभ पर निर्भर नहीं करता है और इसलिए, सभी रिकॉर्ड के लिए समान मान देता है. ये मान डेटा स्रोत पर नियतांक के रूप में भेजे जा सकते हैं और प्रत्यायोजन को अवरुद्ध नहीं करेंगे.

पिछली सूची में ये उल्लेखनीय आइटम शामिल नहीं हैं:

क्वेरी सीमाएँ

लुकअप स्तर

Power Apps दो लुकअप स्तरों का समर्थन करता है. इसका अर्थ यह है कि एक क्वेरी अभिव्यक्ति में - अधिकतम - दो लुकअप फ़ंक्शन हो सकते हैं। Power Fx यह सीमा प्रदर्शन को बनाए रखने के लिए है। यदि क्वेरी अभिव्यक्ति में लुकअप शामिल है, तो Power Apps सबसे पहले आधार तालिका प्राप्त करने के लिए क्वेरी करता है। फिर, यह दूसरी क्वेरी करता है जो लुकअप जानकारी के साथ पहली तालिका का विस्तार करता है। हम अधिकतम के रूप में इससे एक स्तर आगे का समर्थन करते हैं। हालाँकि, ऑफ़लाइन के लिए, हम केवल एक स्तर के लुकअप विस्तार का समर्थन करते हैं।

अभिव्यक्ति मूल्यांकन - इकाई की संपत्ति समानता ऑपरेटर के बाईं ओर 'एलएचएस' पर होनी चाहिए

किसी समीकरण में तुलना की जाने वाली इकाई के गुण को बाईं ओर (बाएं पक्ष) रखना महत्वपूर्ण है। उदाहरण के लिए, नीचे दिए गए उदाहरण में इकाई गुण 'व्यावसायिक इकाई ID'.Name एक गुण मान है और इसे मूल्यांकन किए जाने वाले अभिव्यक्ति के LHS पर रखा जाना चाहिए। निम्नलिखित अभिव्यक्ति सफल होती है:

Filter(
        Budgets,
        'Business unit ID'.Name = LookUp(
            Users,
            'Primary Email' = User().Email,
            'Business Unit'
        ).Name,
        DataCardValue37.Selected.'Date Range String'='Date Range String'
    )

हालाँकि, यह अभिव्यक्ति नहीं होगी:

 Filter(
        Budgets,
        LookUp(
            Users,
            'Primary Email' = User().Email,
            'Business Unit'
        ).Name = 'Business unit ID'.Name,
        'Date Range String'=DataCardValue37.Selected.'Date Range String'
    )

सॉर्टिंग फ़ंक्शन

सॉर्ट और SortByColumns प्रत्यायोजित किए जा सकते हैं.

सॉर्ट में, फ़ॉर्मूला केवल स्तंभ का नाम हो सकता है और इसमें अन्य ऑपरेटर या फ़ंक्शन शामिल नहीं हो सकते हैं.

सामूहिक फ़ंक्शन

बैक-एंड पर समर्थन के आधार पर कुछ समग्र कार्यों को सौंपा जा सकता है। योग, औसत, न्यूनतम और अधिकतम प्रत्यायोजित किए जा सकते हैं. गिनती कार्य जैसे CountRows और Count को भी सौंपा जा सकता है। इस समय केवल सीमित संख्या में डेटा स्रोत ही इन कार्यों को प्रत्यायोजन के लिए समर्थन देते हैं। अधिक जानकारी के लिए, प्रतिनिधि सूची देखें।

RemoveIf और UpdateIf डेलिगेशन समर्थन प्रायोगिक में है और डिफ़ॉल्ट रूप से बंद है।

गैर-प्रत्यायोजित कार्य

अन्य सभी फ़ंक्शन प्रत्यायोजन का समर्थन नहीं करते हैं, जिनमें ये महत्वपूर्ण फ़ंक्शन शामिल हैं:

गैर-प्रत्यायोजित सीमाएँ

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

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

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

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

सीमा बदला जा रहा है

500 रिकॉर्ड की डिफ़ॉल्ट संख्या है, लेकिन आप इस नंबर को संपूर्ण अनुप्रयोग के लिए बदल सकते हैं:

  1. सेटिंग्‍स का चयन करें.
  2. सामान्य के तहत डेटा पंक्ति सीमा सेटिंग को 1 से बदल कर 2000 करें.

कुछ मामलों में, आप जानते हैं कि 2,000 (या 1,000 या 1,500) आपके परिदृश्य की आवश्यकताओं को पूरा कर देंगे। देखभाल के साथ, आप अपने परिदृश्य को फिट करने के लिए इस संख्या को बढ़ा सकते हैं. जैसे ही आप इस संख्या को बढ़ाते हैं, आपके अनुप्रयोग का प्रदर्शन ख़राब हो सकता है, विशेष रूप से बहुत सारी स्तंभ वाली चौड़ी तालिकाओं के लिए. फिर भी, सबसे अच्छा उत्तर यह है कि आप जितना कर सकते हैं उतने ही प्रत्यायोजित करें.

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

प्रत्यायोजन की चेतावनी

यह जानना आसान बनाने के लिए कि क्या है और इसे प्रत्यायोजित नहीं किया जा रहा है, Power Apps चेतावनी (पीला त्रिकोण) तब प्रदान करते हैं जब आप एक ऐसा फार्मूला बनाते हैं जिसमें कुछ ऐसा होता है जिसे प्रत्यायोजित नहीं किया जा सकता है.

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

उदाहरण

इस उदाहरण के लिए, आप [dbo].[Fruit] नामक SQL सर्वर तालिका के आधार पर तीन-स्क्रीन अनुप्रयोग स्वचालित रूप से उत्पन्न करेंगे. ऐप को कैसे जनरेट करें, इस बारे में जानकारी के लिए, आप SQL सर्वर पर लेख में दिए गए समान सिद्धांतों को लागू कर सकते हैं। Dataverse

तीन-स्क्रीन वाला ऐप.

गैलरी का आइटम गुण फ़ॉर्मूले में सेट है जिसमें SortByColumns और खोजें फ़ंक्शन शामिल हैं, जिनमें से दोनों को प्रत्यायोजित किया जा सकता है.

खोज बॉक्‍स में, "एप्प्ल" लिखें.

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

पाठ इनपुट नियंत्रण खोजें.

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

SortByColumns कॉल निकालें.

नए परिणामों में "पाइनएप्पल" नहीं बल्कि "एप्प्ल" शामिल हैं. हालांकि, गैलरी के बगल में पीला त्रिकोण दिखाई देता है (और स्क्रीन थंबनेल में यदि बाईं नेविगेशन पट्टी थंबनेल दिखाती है) और फ़ॉर्मूले के एक हिस्से के नीचे एक नीली, लहरदार रेखा दिखाई देती है. इनमें से प्रत्येक तत्व एक चेतावनी का संकेत देता है। यदि आप गैलरी के बगल में पीले त्रिकोण पर हवर करते हैं, तो यह संदेश प्रकट होता है:

प्रत्यायोजन की चेतावनी पर हवर करें.

SQL सर्वर एक प्रतिनिधि डेटा स्रोत है, और फ़िल्टर फ़ंक्शन है, हालांकि, मिड और लेन को किसी डेटा स्रोत में नहीं सौंपा जा सकता है.

लेकिन क्या इसने काम किया, या नहीं किया? अच्छा, एक प्रकार का. और यही कारण है कि यह एक चेतावनी है और लाल, लहराती चीख़ नहीं है.

  • यदि तालिका में 500 से कम रिकॉर्ड हैं, तो फ़ॉर्मूला पूरी तरह से काम करता है. सभी रिकॉर्ड उपकरण में लाए गए थे और फ़िल्टर स्थानीय रूप से लागू किया गया था.
  • यदि तालिका में 500 से अधिक रिकॉर्ड हैं, तो फ़ॉर्मूले 501 या उच्चतर रिकॉर्ड नहीं करेगा, भले ही वह मानदंडों से मेल खाता हो.

इसे भी देखें

प्रदर्शन पर गैर-प्रत्यायोजनीय फ़ंक्शन और अनुचित डेटा पंक्ति सीमा को उपयोग करने का प्रभाव
प्रत्यायोजन का उपयोग करने के लिए प्रदर्शन युक्तियाँ और सर्वोत्तम प्रथाएँ

नोट

क्या आप हमें अपनी दस्तावेज़ीकरण भाषा वरीयताओं के बारे में बता सकते हैं? एक छोटा सर्वेक्षण पूरा करें. (कृपया ध्यान दें कि यह सर्वेक्षण अंग्रेज़ी में है)

सर्वेक्षण में लगभग सात मिनट लगेंगे. कोई भी व्यक्तिगत डेटा एकत्र नहीं किया जाता है (गोपनीयता कथन).