الدالات Filter وSearch وLookUp

ينطبق على: تطبيقات قماش تدفقات سطح المكتب التطبيقات التي يحركها النموذج Power Platform CLI

البحث عن سجل واحد أو أكثر في الجدول.

شاهد هذا الفيديو لتتعلم كيفية استخدام عامل التصفية, **بحث و مهام بحث:

‏‫ملاحظة

Pأوامر AC CLI pac power-fx لا تدعم وظيفة بحث.

الوصف

تبحث وظيفة Filter عن سجلات في جدول يفي بصيغة. استخدم الدالة Filter للعثور على مجموعة من السجلات التي تطابق معيارًا واحدًا أو أكثر وتجاهل السجلات التي لا تتطابق معها.

تبحث وظيفة LookUp عن السجل الأول في جدول يفي بصيغة. استخدم وظيفة LookUp للبحث عن سجل واحد يطابق معيارًا واحدًا أو أكثر.

بالنسبة لكلتا الوظيفتين، يتم تقييم الصيغة لكل سجل في الجدول. يتم تضمين السجلات التي تؤدي إلى صواب في النتيجة. إلى جانب عوامل الصيغة العادية، يمكنك استخدام عاملي in وexactin للحصول على مطابقات السلاسل الفرعية.

تتوفر حقول السجل التي تتم معالجتها في الوقت الحالي في الصيغة. استخدم عامل ThisRecord أو ببساطة قم بالإشارة إلى الحقول بالاسم كما تفعل مع أي قيمة أخرى. كما يمكن استخدام عامل As لتسمية السجل الذي تتم معالجته والذي يمكن أن يساعد في تسهيل فهم الصيغة الخاصة بك وجعل السجلات المتداخلة قابلة للوصول. لمزيد من المعلومات، راجع الأمثلة التالية والعمل في نطاق السجلات.

تبحث وظيفة Search عن السجلات الموجودة في جدول يحتوي على سلسلة في أحد أعمدته. قد تظهر السلسلة في أي مكان داخل العمود؛ على سبيل المثال، سيؤدي البحث عن "rob" أو "bert" إلى العثور على تطابق في عمود يحتوي على "Robert". البحث غير حساس لحالة الأحرف. بخلاف وظيفة Filter وLookUp، تستخدم وظيفة Search سلسلة واحدة للمطابقة بدلاً من الصيغة.

تقوم وظيفتا Filter وSearch بإرجاع جدول يتضمن نفس أعمدة الجدول الأصلي والسجلات التي تطابق المعايير. تقوم LookUp بإرجاع فقط السجل الأول الذي تم العثور عليه، بعد تطبيق الصيغة لخفض السجل إلى قيمة واحدة. إذا لم يتم العثور على أي سجلات، تقوم وظيفتا Filter وSearch بإرجاع جدول فارغ، وتقوم وظيفة LookUp بإرجاع فارغ.

الجداول هي قيمة في Power Apps، تمامًا مثل سلسة أو رقم. يمكن تمريرها وإرجاعها من الوظائف. لا تقوم وظائف Filter، وSearch، وLookUp بتعديل جدول. بدلاً من ذلك، تأخذ جدولًا كوسيطة وتُرجع جدولًا أو سجلًا أو قيمة واحدة منه. راجع التعامل مع الجداول للاطلاع على مزيد من التفاصيل.

تفويض

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

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

إذا لم يكن التفويض ممكنًا، فسيقوم تطبيق Power Apps بسحب فقط مجموعة صغيرة من السجلات للعمل عليها محليًا. سوف تعمل وظائف التصفية والفرز في مجموعة مخفضة من السجلات. قد لا يكون المتوفر في المعرض القصة الكاملة، مما قد يؤدي إلى ارتباك المستخدمين.

راجع نظرة عامة على التفويض لمزيد من المعلومات.

بناء الجملة

Filter(Table*, Formula1 [, *Formula2*, ... ] )

  • الجدول - مطلوب. الجدول المُراد البحث عنه.
  • الصيغة (الصيغ) – مطلوبة. الصيغة التي يتم من خلالها تقييم كل سجل في الجدول. تقوم الوظيفة بإرجاع جميع السجلات التي تؤدي إلى صواب. يمكنك الرجوع إلى الأعمدة داخل الجدول. إذا قمت بتوفير أكثر من صيغة واحدة، يتم دمج نتائج جميع المعادلات باستخدام وظيفة و .

Search(Table*, SearchString, Column1 [, *Column2*, ... ] )

  • الجدول - مطلوب. الجدول المُراد البحث عنه.
  • SearchString - مطلوبة. السلسلة المُراد البحث عنها. في حالة ظهور فارغ أو سلسلة فارغة، يتم إرجاع جميع السجلات.
  • العمود (الأعمدة) - مطلوب. أسماء الأعمدة الموجودة في الجدول المُراد البحث عنها. إذا تم العثور على SearchString ضمن بيانات أي عمود من هذه الأعمدة كتطابق جزئي، فسيتم إرجاع السجل بالكامل.

‏‫ملاحظة

في Power Apps قبل الإصدار 3.24042، كانت أسماء الأعمدة لـ بحث تم تحديد الوظيفة بسلسلة نصية باستخدام علامات الاقتباس المزدوجة، وإذا كانت متصلة بمصدر بيانات، فيجب أيضًا أن تكون أسماء منطقية. على سبيل المثال، استخدم الاسم المنطقي "cr43e_name"مع علامات اقتباس مزدوجة بدلا من اسم العرض Name بدون عروض أسعار. بالنسبة SharePoint لمصادر بيانات Excel التي تحتوي على أسماء أعمدة ذات المسافات، يتم تحديد كل مسافة باستخدام "_x0020_"، على سبيل المثال، "اسم العمود" Column_x0020_Name". Afer هذا الإصدار، يتم تحديث كافة التطبيقات تلقائيا إلى الجملة الجديدة الموضحة في هذه المقالة.

LookUp(Table*, Formula [, *ReductionFormula* ] )

  • الجدول - مطلوب. الجدول المُراد البحث عنه. في واجهة المستخدم، يتم عرض بناء الجملة كـ مصدر أعلى مربع الوظيفة.
  • الصيغة‏‎ - مطلوبة. الصيغة التي يتم من خلالها تقييم كل سجل في الجدول. تقوم الوظيفة بإرجاع السجل الأول الذي يؤدي إلى صواب. يمكنك الرجوع إلى الأعمدة داخل الجدول. في واجهه المستخدم، يتم عرض بناء الجملة كـ شرط أعلى مربع الوظيفة.
  • ReductionFormula - اختياري. يتم تقييم هذه الصيغة على السجل الذي تم العثور عليه، ثم تقلل السجل إلى قيمة واحدة. يمكنك الرجوع إلى الأعمدة داخل الجدول. إذا لم تستخدم هذه المعلمة، فسوف تُرجع الوظيفة السجل الكامل من الجدول. في واجهه المستخدم، يتم عرض بناء الجملة كـ نتيجة أعلى مربع الوظيفة.

الأمثلة

تستخدم الأمثلة التالية مصدر البياناتIceCream:

مصدر بيانات الأيس كريم.

الصيغة الوصف نتيجة
Filter( IceCream, OnOrder > 0 ) إرجاع السجلات التي يكون فيها OnOrder أكبر من الصفر. تصفية على الأمر.
Filter( IceCream، الكمية + OnOrder > 225 ) إرجاع السجلات حيث يكون مجموع عمودي الكمية وOnOrder أكبر من 225. تصفية الكمية والأوامر.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) إرجاع السجلات التي تظهر فيها كلمة "chocolate" في اسم النكهة، مستقلةً عن الأحرف الكبيرة أو الصغيرة. التصفية على قيم أقل.
Filter(IceCream, Quantity < 10 && OnOrder < 20) إرجاع السجلات التي تكون فيها الكمية أقل من 10 وOnOrder أقل من 20. لا توجد سجلات تطابق هذه المعايير، لذا يتم إرجاع جدول فارغ. تصفية على الكمية.
بحث (آيس كريم، "شوكولاتة"، نكهة) إرجاع السجلات التي تظهر فيها سلسلة "choc" في اسم النكهة، مستقلةً عن الأحرف الكبيرة أو الصغيرة. بحث عن العناصر.
بحث (آيس كريم، ""، نكهة) نظرًا لأن مصطلح البحث فارغ، يتم إرجاع جميع السجلات. بحث عن جميع العناصر.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) عمليات بحث عن سجل به قيمة Flavor تعادل "Chocolate"، والتي توجد مرة واحدة. بالنسبة للسجل الأول الذي تم العثور عليه، يتم إرجاع كميه هذا السجل. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) عمليات بحث عن سجل يحتوي على كمية أكبر من 150، والتي توجد بها عدة عمليات بحث. بالنسبة للسجل الأول الذي تم العثور عليه، الذي عبارة عن "فانيلا" نكهة، يتم إرجاع مجموع عمودي الكمية وOnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) عمليات بحث عن سجل به نكهة تعادل "الفستق"، والتي لا توجد لها أي عملية بحث. بسبب عدم العثور على أي شيء، يرجع البحث القيمة فارغ. blank
LookUp( IceCream, Flavor = "Vanilla" ) عمليات بحث عن سجل به قيمة Flavor تعادل "Vanilla"، والتي توجد مرة واحدة. نظرًا لعدم توفير صيغة تخفيض، يتم إرجاع السجل بالكامل. { النكهة: "فانيلا"، الكمية: 200،‏ OnOrder:‏ 75 }

التصفية باستخدام أعمدة الاختيار

يستخدم المثال التالي جدول الحساب في Microsoft Dataverse كمصدر بيانات. يوضح هذا المثال كيفية Filter قائمة الحسابات استنادًا إلى قيم عنصر تحكم مربع التحرير والسرد المحددة:

خطوة بخطوة

  1. افتح تطبيقًا فارغًا.

  2. أضف شاشة جديدة عن طريق تحديد شاشة جديدة.

  3. من علامة التبويب إدراج، حدد Gallery، ثم حدد عمودي.

  4. في علامة التبويب خصائص في الجزء الأيمن، افتح مصدر البيانات ثم حدد الحسابات.

  5. (اختياري) من القائمة تخطيط، حدد خيارات مختلفة.

  6. من علامة التبويب إدراج، حدد إدخال، ثم حدد Combo box. كرر الخطوة لإضافة عنصري تحكم مربع تحرير وسرد.

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

    تعيين قيم مربعات التحرير والسرد.

  8. الآن حدد عنصر تحكم Gallery وعيّن خاصية Items إلى الصيغة التالية:

    Filter(Accounts,
     'Industry' = ComboBox3.Selected.Industry Or IsBlank(ComboBox3.Selected.Industry),
     'Relationship Type' = ComboBox2.Selected.'Relationship Type' Or
       IsBlank(ComboBox2.Selected.'Relationship Type'),
     'Preferred Method of Contact' = ComboBox1.Selected.'Preferred Method of Contact' Or
       IsBlank(ComboBox1.Selected.'Preferred Method of Contact'))
    

    مصدر بيانات الحسابات.

تجربة البحث عن المستخدم

تستخدم الأمثلة التالية مصدر البياناتIceCream:

في العديد من التطبيقات، يمكنك كتابة حرف أو أكثر في مربع البحث لتصفية قائمة السجلات في مجموعة بيانات كبيرة. أثناء الكتابة، تعرض القائمة فقط تلك السجلات التي تطابق معايير البحث.

توضح الأمثلة الموجودة في بقية هذه المقالة نتائج البحث في قائمة مسماة Customers وتحتوي على هذه البيانات:

Search on customers.

لإنشاء مصدر البيانات هذا كمجموعة، أنشئ عنصر تحكم Button وقم بتعيين خصائص OnSelect الخاص به إلى هذه الصيغة:

ClearCollect(Customers, Table({ Name: "Fred Garcia", Company: "Northwind Traders" }, { Name: "Cole Miller", Company: "Contoso" }, { Name: "Glenda Johnson", Company: "Contoso" }, { Name: "Mike Collins", Company: "Adventure Works" }, { Name: "Colleen Jones", Company: "Adventure Works" }) )

كما هو موضح في هذا المثال، يمكنك إظهار قائمة بالسجلات الموجودة في عنصر تحكم Gallery في الجزء السفلي من الشاشة. بالقرب من أعلى الشاشة، يمكنك إضافة عنصر تحكم Text input تُسمى SearchInput‎، بحيث يمكن للمستخدمين تحديد السجلات التي تثير اهتمامهم.

البحث باستخدام إدخال البحث.

عندما يكتب المستخدم الأحرف في SearchInput، تتم تصفية النتائج في المعرض تلقائيًا. في هذه الحالة، يتم تكوين المعرض لإظهار السجلات التي يبدأ فيها اسم العميل (وليس اسم الشركة) بتسلسل الأحرف في SearchInput. في حالة قيام المستخدم بكتابة co في مربع البحث، فسيعرض المعرض هذه النتائج:

البحث باستخدام

للتصفية استنادًا إلى عمود الاسم، قم بتعيين خاصية Items الخاصة بعنصر تحكم gallery إلى إحدى هذه الصيغ:

صيغة ‏‏الوصف نتيجة
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) تصفية مصدر بيانات العملاء للسجلات التي تظهر فيها سلسلة البحث في بداية عمود الاسم. الاختبار غير حساس لحالة الأحرف. في حالة قيام المستخدم بكتابة co في مربع البحث، tسيعرض المعرض Colleen Jones وCole Miller. لا يعرض المعرض Mike Collins لأن عمود الاسم لهذا السجل لا يبدأ بسلسلة البحث. التصفية باستخدام
Filter( Customers, SearchInput.Text in Name ) تصفية مصدر بيانات العملاء للسجلات التي تظهر فيها سلسلة البحث في أي موضع في عمود الاسم. الاختبار غير حساس لحالة الأحرف. في حالة قيام المستخدم بكتابة co في مربع البحث، يعرض المعرض Colleen Jones،Cole Miller،Mike Collins لأن سلسلة البحث تظهر في أي موضع في عمود الاسم لجميع هذه السجلات. التصفية باستخدام إدخال البحث.
البحث (العملاء، SearchInput.Text، الاسم) وبنفس طريقة استخدام عامل in، تبحث وظيفة Search عن تطابق في أي موضع داخل عمود الاسم لكل سجل. يجب تضمين اسم العمود بين علامات اقتباس مزدوجة. البحث عن المستخدمين.

يمكنك توسيع البحث لتضمين عمود الشركة وعمود الاسم:

الصيغة الوصف النتيجة
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) تصفية مصدر بيانات العملاء للسجلات التي يبدأ فيها عمود الاسم أو عمود الشركة بسلسلة البحث (على سبيل المثال، co). ||عامل التشغيل هو صواب إذا كانت أي وظيفة StartsWith هي صواب. تصفية العملاء باستخدام
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) تصفية مصدر بيانات العملاء للسجلات التي يحتوي فيها عمود الاسم أو عمود الشركة على سلسلة البحث (على سبيل المثال، co) في أي موضع بها. تصفية العملاء باستخدام إدخال البحث.
البحث (العملاء، SearchInput.Text، الاسم، الشركة) بنفس طريقة استخدام عامل in، تبحث وظيفة Search عنمصدر بيانات العملاء للسجلات التي يحتوي فيها عمود الاسم أو عمود الشركة على سلسلة البحث (على سبيل المثال، co) في أي موضع فيها. وظيفة Search أسهل في القراءة والكتابة من وظيفة Filter إذا كنت تريد تحديد أعمدة متعددة وعوامل in متعددة.  البحث عن العملاء باستخدام إدخال البحث.