فهم التفويض في تطبيق لوحة
يتضمن Power Apps مجموعة من الوظائف لتصفية جداول البيانات وفرزها وتشكيلها في تطبيق لوحة: وظائف عامل التصفية و الفرز و AddColumns لتسمية القليل فقط. ومن خلال هذه الوظائف، يمكنك تزويد المستخدمين بالوصول المركز إلى المعلومات التي يحتاجون اليها. بالنسبة لمن لديهم خلفيه بقاعدة البيانات، يعد استخدام هذه الوظائف هو المكافئ لكتابة استعلام قاعدة بيانات.
ويعتبر المفتاح الخاص بإنشاء التطبيقات الفعالة هو تقليل كمية البيانات التي يجب إحضارها لجهازك. ربما تحتاج فقط إلى عدد بسيط من السجلات من بين ملايين السجلات، أو يمكن لقيمة تجميعية واحدة تمثيل آلاف السجلات. أو ربما يمكن استرداد مجموعة السجلات الأولى فقط، ويتم إحضار العناصر المتبقية بإيماءات من المستخدم بالرغبة في المزيد. يمكن أن يؤدي التركيز إلى خفض المعالجة والذاكرة وعرض النطاق الترددي للشبكة الذي يحتاجه تطبيقك بصورة كبيرة، مما يؤدي إلى استجابة أسهل للمستخدمين، حتى على الهواتف المتصلة عبر شبكة الجوال.
التفويض يعني استيفاء تعبير صيغ Power Apps للحاجة إلى تقليل حجم البيانات التي يتم نقلها عبر الشبكة. باختصار، يقوم Power Apps بتفويض معالجة البيانات إلى مصدر البيانات، بدلاً من نقل البيانات إلى التطبيق للمعالجة محليًا.
وعندما يصبح هذا الأمر معقدًا، وهو سبب وجود هذا المقال، يكون ذلك لأنه لا يمكن تفويض كل شيء يمكن التعبير عنه بإحدى صيغ Power Apps لكل مصدر بيانات. تحاكي لغة Power Apps لغة صيغة Excel، والمصممة بوصول الكامل وفوري إلى مصنف الكامل في الذاكرة، باستخدام مجموعة كبيرة من وظائف المعالجة الرقمية والنصية. ونتيجة لذلك، فإن لغة Power Apps هي لغة أكثر ثراءًا من أن تدعمها معظم مصادر البيانات، بما في ذلك مشغلات قواعد البيانات الفعالة مثل SQL Server.
يتطلب العمل مع مجموعات البيانات الكبيرة استخدام مصادر البيانات والصيغ التي يمكن تفويضها. إنها الطريقة الوحيدة ليعمل التطبيق بشكل جيد وضمان إمكانية وصول المستخدمين إلى كل المعلومات التي يحتاجونها. احذر من تحذيرات التفويض التي تعرِّف الأماكن التي لا يكون فيها التفويض ممكنًا. إذا كنت تعمل باستخدام مجموعات بيانات صغيرة (أقل من 500 سجل)، يمكنك استخدام أي مصدر بيانات وأي صيغة نظرًا لأن التطبيق يمكنه معالجة البيانات محليًا في حالة تعذر تفويض الصيغة.
ملاحظة
تم وضع علامة على تحذيرات التفويض مسبقًا في Power Apps كـ "نقطة زرقاء"، بينما تمت إعادة تصنيف اقتراحات التفويض كتحذيرات. إذا كانت البيانات الموجودة في مصدر البيانات تتجاوز 500 سجل ولا يمكن تفويض وظيفة ما، ربما لا يتمكن Power Apps من استرداد جميع بياناتك، وربما يتضمن التطبيق نتائج خاطئة. تساعدك تحذيرات التفويض في إدارة تطبيقك بحيث يتضمن نتائج صحيحة.
مصادر البيانات القابلة للتفويض
التفويض غير مدعوم إلا لمصادر بيانات جدولية معينة. إذا كان مصدر البيانات يدعم التفويض، فإن وثائق الموصل تحدد تدعم. على سبيل المثال، تعتبر مصادر البيانات الجدولية هذه هي الأكثر شيوعًا، وهي تدعم التفويض:
- وظائف وعمليات Power Apps القابلة للتفويض لـ Microsoft Dataverse
- وظائف وعمليات Power Apps القابلة للتفويض لـ SharePoint
- وظائف وعمليات Power Apps القابلة للتفويض لـ SQL Server
- وظائف وعمليات Power Apps القابلة للتفويض لـ Salesforce
لا تتطلب مصنفات Excel المستوردة (باستخدام مصدر البيانات إضافة بيانات ثابتة إلى التطبيق) والمجموعات والجداول المخزنة في متغيرات السياق تفويضًا. توجد كل هذه البيانات بالفعل في الذاكرة، ويمكن تطبيق لغة Power Apps بالكامل.
وظائف قابلة للتفويض
الخطوة التالية هي استخدام تلك الصيغ التي يمكن تفويضها فقط. ومتضمن هنا عناصر الصيغ التي يمكن تفويضها. ولكن يختلف كل مصدر من مصادر البيانات، ولا تدعم جميعها كافة هذه العناصر. التحقق من تحذيرات التفويض في صيغة معينة.
ستتغير هذه القوائم بمرور الوقت. نحن نعمل على دعم المزيد من الوظائف وعوامل التشغيل مع التفويض.
وظائف عوامل التصفية
يمكن تفويض كل من عامل التصفية وعملية البحث و البحث.
ومن خلال وظائف Filter و LookUp، يمكنك استخدام هذه الحقول مع أعمدة الجدول لتحديد السجلات المناسبة:
- And (بما في ذلك &&)، Or (بما في ذلك ||)، Not (بما في ذلك !)
- In
ملاحظة
In يتم تفويضها فقط للأعمدة الموجودة في مصدر البيانات الأساسي. على سبيل المثال، إذا كان مصدر البيانات هو جدول الحسابات يقوم
Filter(Accounts, Name in ["name1", "name2"])بتفويض مصدر البيانات للتقويم. ومع ذلك، لا يقومFilter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])بالتفويض لأن عمود العمود الكامل موجود في جدول مختلف (PrimaryContact) غير الحسابات. يتم تقييم التعبير محليًا. - =, <>, >=, <=, >, <
- +, -
- TrimEnds
- IsBlank
- StartsWith, EndsWith
- القيم الثابتة التي هي نفسها في كافة السجلات، مثل خصائص عناصر التحكم ومتغيرات السياق العامة.
يمكنك أيضًا استخدام أجزاء من الصيغة التي تقيم إلى قيمة ثابتة لكافة السجلات. على سبيل المثال، لا تعتمد يمين (اللغة ()، 2) و التاريخ (2019، 3، 31) و اليوم () على أي أعمدة في السجل، وبالتالي ترجع نفس القيمة لكافة السجلات. يمكن إرسال هذه القيم إلى مصدر البيانات كقيمة ثابتة ولن تقوم بحظر التفويض.
لا تتضمن القائمة السابقة هذه العناصر المهمة:
- إذا
- *، /، Mod
- تسلسل (بما في ذلك &)
- ExactIn
- وظائف معالجة السلسلة: أقل، أعلى، يسار, منتصف، الطول، ...
- الإشارات: الموقع، التسارع، البوصلة، ...
- Volatiles: عشوائي, ...
- المجموعات
وظائف الفرز
يمكن تفويض كل من الفرز و SortByColumns.
في الفرز، يمكن أن تكون الصيغة اسم عمود واحد فقط ولا يمكن أن تحتوي على عوامل تشغيل أو وظائف أخرى.
وظائف التجميع
يمكن تفويض كل من المجموع و المتوسط و الحد الأدنى و الحد الأقصى. يدعم عدد محدود من مصادر البيانات هذا التفويض في الوقت الحالي. راجع قائمة التفويض لمعرفة التفاصيل.
ملاحظة
إذا لم يتم تفويض تعبير، فسوف يعمل فقط على أول 500 سجل (قابل للتكوين حتى 2000، راجع تغيير الحد) المسترد من مصدر البيانات بدلا من تفويض معالجة كافة البيانات في مصدر البيانات.
لا يمكن تفويض وظائف العد مثل CountRows و CountA و العدد.
لا يمكن تفويض وظائف التجميع الأخرى مثل StdevP و VarP.
وظائف تشكيل الجدول
تدعم الوظائف AddColumns و DropColumns و RenameColumns و ShowColumns التفويض بشكل جزئي. يمكن تفويض الصيغ الموجودة في الوسيطات الخاصة بها. ولكن تخضع مخرجات هذه الوظائف لحد السجلات غير القابلة للتفويض.
كما هو الحال في هذا المثال، غالبًا ما يستخدم المنشئون AddColumns و البحث لدمج المعلومات من جدول إلى آخر، وهو ما يشاع الإشارة إليه بالانضمام إلى لغة قاعدة البيانات:
AddColumns( Products,
"Supplier Name",
LookUp( Suppliers, Suppliers.ID = Product.SupplierID ).Name
)
وعلى الرغم من أن المنتجات و الموردين قد يكونوا مصادر بيانات قابلة للتفويض ووظيفة البحث وظيفة قابلة للتفويض، فإن مخرجات AddColumns غير قابلة للتفويض. تقتصر نتيجة الصيغة بالكامل على الجزء الأول من مصدر بيانات المنتجات. ونظرًا لأن وظيفة البحث ومصدر البيانات الخاص بها قابل للتفويض، يمكن العثور على تطابق الموردين في أي مكان في مصدر البيانات، حتى وإن كان كبيرًا.
إذا كنت تستخدم AddColumns بهذه الطريقة، فإنه لابد من إجراء البحث لاستدعاءات منفصلة لمصدر البيانات لكل من هذه السجلات الأولي في المنتجات، والذي يتسبب في العديد من مشاكل الشبكة. إذا كان حجم الموردين صغيرًا بما يكفي ولا يتغير بشكل متكرر، يمكنك استدعاء وظيفة التجميع في OnStart لتخزين مصدر البيانات مؤقتًا في التطبيق عند بدء تشغيله. وكبديل لذلك ، يمكنك أعاده هيكله تطبيقك بحيث تقوم بالسحب في السجلات المرتبطة فقط عند قيام المستخدم بالسؤال عنها.
وظائف غير قابلة للتفويض
لا تدعم الوظائف الأخرى التفويض، بما في ذلك هذه الالوظائف المهمة:
- الأول و FirstN و الأخير و LastN
- Choices
- Concat
- تجميع ، ClearCollect
- CountIf، RemoveIf، UpdateIf
- GroupBy، فك تجميع
حدود غير قابلة للتفويض
ستتم معالجة الصيغ التي لا يمكن تفويضها محليًا. ويتيح ذلك استخدام لغة صيغة Power Apps الكاملة. ولكن في المقابل: يجب إحضار كافة البيانات إلى الجهاز أولاً، والذي قد يتضمن استرداد كمية كبيرة من البيانات عبر الشبكة. قد يستغرق ذلك وقتًا، مما يعطي الانطباع بأن التطبيق بطيئًا أو قد تعطل.
لتجنب هذا، يفرض Power Apps حدًا على كمية البيانات التي يمكن معالجتها محليًا: 500 سجل بشكل افتراضي. اخترنا هذا الرقم حتى يظل بإمكانك الوصول الكامل إلى مجموعات البيانات الصغيرة وستتمكن من تحسين استخدام مجموعات البيانات الكبيرة بمشاهدة نتائج جزئية.
يجب اتخاذ العناية الواضحة عند استخدام أداة الإنشاء هذه لأنها يمكنها إرباك المستخدمين. على سبيل المثال، ضع في اعتبارك وظيفة عامل تصفية مع صيغة تحديد لا يمكن تفويضها، عبر مصدر بيانات يحتوي على مليون سجل. ونظرًا لإجراء التصفية محليًا، سيتم فحص أول 500 سجل فقط. وإذا كان السجل المرغوب فيه هو السجل 501 أو 500,001، فلن يتم التعامل معه أو إرجاعه بواسطة عامل التصفية.
يمكن أن تسبب الوظائف التجميعية أيضًا إرباك. احسب المتوسط من عمود لنفس مصدر البيانات ذي المليون سجل. لا يمكن تفويض المتوسط في هذه الحالة نظرا لأن التعبير غير تفويض (راجع الملاحظة السابقة)، لذا يتم معدل أول 500 سجل فقط. إذا لم تكن حريصًا، فقد يكون هناك خطأ في الإجابة الجزئية كإجابة كاملة بواسطة مستخدم لتطبيقك.
تغيير الحد
500 هو العدد الافتراضي للسجلات، ولكن يمكنك تغيير هذا الرقم لتطبيق بالكامل:
- حدد الإعدادات.
- ضمن عام، قم بتغيير إعداد حد صفوف البيانات من 1 إلى 2000.
في بعض الحالات، ستعرف أن 2,000 (أو 1,000 أو 1,500) ستلبي احتياجات السيناريو الخاص بك. يمكنك زيادة هذا العدد بحرص ليناسب السيناريو الخاص بك. وكلما قمت بزيادة هذا العدد، قد ينخفض أداء التطبيق، خاصة للجداول العريضة التي تحتوي على العديد من الأعمدة. ولكن أفضل إجابة هي إجراء التفويض قدر الإمكان.
للتأكد من أن إمكانية توسيع التطبيق لمجموعات البيانات الكبيرة، قم بتقليل هذا الإعداد إلى 1. يُرجع أي شيء لا يمكن تفويضه سجلاً واحدًا، وهو ما ينبغي أن يكون سهل الكشف عنه عند اختبار التطبيق. يمكن أن يساعد هذا في تجنب المفاجآت عند محاولة اتخاذ تطبيق إثبات التصور للإنتاج.
تحذيرات التفويض
لتسهيل معرفة ما يتم تفويضه وما لا يتم تفويضه، يوفر Power Apps تحذيرًا (مثلث أصفر) عند إنشاء صيغة تحتوي على شيء لا يمكن تفويضه.
لا تظهر تحذيرات التفويض إلا في الصيغ التي تعمل في مصادر البيانات القابلة للتفويض. إذا لم يظهر تحذير وتعتقد أنه لم يتم تفويض الصيغة بشكل صحيح، تحقق من نوع مصدر البيانات في قائمة مصادر البيانات القابلة للتفويض الموضحة سابقًا في هذا الموضوع.
الأمثلة
بالنسبة لهذا المثال، ستقوم بإنشاء تطبيق ثلاثي الشاشة تلقائيًا استنادا إلى جدول SQL Server باسم [dbo].[Fruit]. للحصول على معلومات حول كيفية إنشاء التطبيق، يمكنك تطبيق قواعد مماثلة في الموضوع حول Dataverseإلى SQL server.

يتم تعيين خاصية العناصر بالمعرض على صيغة تحتوي على الوظائف SortByColumns و البحث، وكلاهما يمكن تفويضهما.
في مربع البحث، اكتب "Apple".
تظهر نقاط متحركة خلال لحظات بالقرب من الجزء العلوي للشاشة عندما يتصل التطبيق بـ SQL Server لمعالجة طلب البحث. تظهر جميع السجلات التي تتوافق مع معايير البحث، حتى إذا كان مصدر البيانات يحتوي على ملايين السجلات.

تتضمن نتائج البحث "تفاح" و "تفاح بري" و "أناناس" وذلك لأن وظيفة البحث تظهر في كل مكان في عمود نص. إذا أردت العثور فقط على السجلات التي تحتوي على مصطلح البحث في بداية اسم الفاكهة، فيمكنك استخدام وظيفة أخرى قابلة للتفويض، التصفية، بعبارة بحث أكثر تعقيدًا. (لتبسيط الأمر، قم بإزالة اتصال SortByColumns).

تتضمن النتائج الجديدة "تفاح" وليس "تفاح بري" أو "أناناس". وعلى الرغم من ذلك يظهر المثلث الأصفر بجوار المعرض (وفي الصورة المصغرة للشاشة إذا كان شريط التنقل الأيمن يعرض الصور المصغرة)، ويظهر خط أزرق مموج أسفل جزء من الصيغة. يشير كل من هذه العناصر إلى تحذير. عند المرور فوق المثلث الأصفر الموجود بجوار المعرض، ستظهر هذه الرسالة:

يعتبر SQL server مصدر بيانات قابلف للتفويض و عامل التصفية وظيفة قابلة للتفويض، ولكن لا يمكن تقويض المنتصف و الطول لأي مصدر بيانات.
ولكن الأمر نجح، أليس كذلك؟ جيد، نوعًا ما. والسبب في ذلك أنه تحذير وليس خطًا مموجًا باللون الأحمر.
- إذا كان الجدول يحتوي على أقل من 500 سجل، فإن الصيغة تعمل بشكل مثالٍ. تم إحضار جميع السجلات إلى الجهاز، كما تم تطبيق عامل التصفية محليًا.
- إذا كان الجدول يحتوي على أكثر من 500 سجل، فلن تُرجع الصيغة السجل 501 أو ما بعده، حتى وإن كان متطابقًا مع المعايير.
راجع أيضًا
تأثير استخدام وظائف غير قابلة للتفويض وحدود صف البيانات غير المناسبة على الأداء
نصائح الأداء وأفضل الممارسات لاستخدام التفويض
ملاحظة
هل يمكنك إخبارنا عن تفضيلات لغة التوثيق الخاصة بك؟ شارك في استطلاع قصير. (يرجى ملاحظة أن هذا الاستطلاع باللغة الإنجليزية)
سيستغرق الاستطلاع حوالي سبع دقائق. لا يتم جمع أي بيانات شخصية (بيان الخصوصية).
الملاحظات
إرسال الملاحظات وعرضها المتعلقة بـ