שתף באמצעות


פונקציה Concurrent

חל על: יישומי בד ציור יישומים מונחי דגמים

הערכת נוסחאות מרובות במקביל, זו לצד זו.

תיאור‬‏‫

הפונקציה Concurrent מאפשרת להעריך נוסחאות מרובות שצוינו באותו מאפיין להערכה בו-זמנית אם יש להן מחבר או קריאות Dataverse. בדרך כלל, הערכה של נוסחאות מרובות מתבצעת על-ידי שרשור שלהן יחד עם האופרטור ; (נקודה-פסיק), שמעריך כל נוסחה ברצף. עם הפונקציה Concurrent, היישום יעריך את כל הנוסחאות בתוך מאפיין בו-זמנית גם לאחר השימוש במפעיל ;. התרחשות בו-זמנית זו תעזור למשתמשים להמתין פחות לאותה תוצאה.

במאפיין OnStart של היישום, השתמש ב- Concurrent כדי לשפר את הביצועים כאשר היישום טוען נתונים. כאשר קריאות נתונים לא מתחילות עד שהקריאות הקודמות מסתיימות, היישום חייב להמתין לסכום של כל זמני הבקשה. אם קריאות נתונים מתחילות במקביל, היישום צריך להמתין רק לזמן הארוך ביותר לבקשה. דפדפני האינטרנט משפרים לעתים קרובות את הביצועים על-ידי ביצוע קריאות רשת במקביל.

לא ניתן לחזות את הסדר שבו הנוסחאות בפונקציה Concurrent מתחילות ומסיימות הערכה. נוסחאות בפונקציה Concurrent אינן אמורות להכיל יחסי תלות בנוסחאות אחרות בתוך אותה פונקציה Concurrent ו- Power Apps יציג שגיאה אם תנסה לעשות זאת. מבפנים, ניתן לקבל בבטחה יחסי תלות בנוסחאות מחוץ לפונקציה Concurrent מכיוון שהן יסתיימו לפני שהפונקציה Concurrent תתחיל. נוסחאות לאחר הפונקציה Concurrent יכולות לקבל בבטחה יחסי תלות בנוסחאות שבפנים: כולן יסתיימו לפני שהפונקציה Concurrent תסתיים ותעבור לנוסחה הבאה בשרשרת (אם תשתמש באופרטור ;). היזהר מיחסי תלות עדינים של סדר אם אתה קורא לפונקציות או לפעולות שירות בעלות תופעות לוואי.

ניתן לשרשר נוסחאות יחד עם האופרטור ; בתוך ארגומנט ל- Concurrent. לדוגמה, Concurrent( Set( a, 1 ); Set( b, a+1 ), Set( x, 2 ); Set( y, x+2 ) )‎ מבצעת הערכה Set( a, 1 ); Set( b, a+1 ) בו זמנית עם Set( x, 2 ); Set( y, x+2 )‎. במקרה זה, יחסי התלות בתוך הנוסחאות תקינים: a יוגדר לפני b ו- x יוגדר לפני y.

בהתאם למכשיר או לדפדפן שבו היישום פועל, תתבצע הערכה בו-זמנית של קומץ נוסחאות בלבד. הפונקציה Concurrent משתמשת ביכולות הזמינות והיא לא תסתיים עד להערכה של כל הנוסחאות.

אם תאפשר ניהול שגיאות ברמת הנוסחה (בהגדרות מתקדמות), השגיאה הראשונה שתיתקל בה בסדר הארגומנטים מוחזרת מ- Concurrent; אחרת, הערך ריק מוחזר. אם כל הנוסחאות מצליחות, הערך true מוחזר. אם נוסחה אחת נכשלת, שארית הנוסחה נעצרת, אולם ממשיכה להתבצע הערכה של נוסחאות אחרות.

באפשרותך להשתמש בפונקציה Concurrent רק בנוסחאות של אופן פעולה.

תחביר

Concurrent( Formula1, Formula2 [, ...] )

  • Formula(s)‎ – נדרש. נוסחאות להערכה בו-זמנית. עליך לספק לפחות שתי נוסחאות.

דוגמאות

טעינה מהירה יותר של נתונים

  1. צור יישום והוסף ארבעה מקורות נתונים מ- Microsoft Dataverse,‏ SQL Server, או SharePoint.

    בדוגמה זו נעשה שימוש בארבע טבלאות מתוך מסד נתונים לדוגמה של Adventure Works ב- SQL Azure. לאחר יצירת מסד הנתונים, התחבר אליו מ- Power Apps באמצעות שם השרת המלא (לדוגמה, srvname.database.windows.net):

    התחבר למסד הנתונים של Adventure Works ב- Azure.

  2. הוסף פקד Button‎ והגדר את מאפיין OnSelect שלו לנוסחה זו:

    ClearCollect( Product, '[SalesLT].[Product]' );
    ClearCollect( Customer, '[SalesLT].[Customer]' );
    ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' );
    ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
    
  3. בתוך Microsoft Edge או Google Chrome, הפעל כלים למפתחים לניטור התעבורה ברשת בזמן שהיישום מופעל.

  4. (אופציונלי) הפעל ויסות ברשת כדי להדגיש את האפקטים של השוואה זו.

  5. תוך כדי לחיצה על מקש Alt, בחר בלחצן ולאחר מכן צפה בתעבורת הרשת.

    הכלים מציגים ארבע בקשות המבוצעות בסדרות, בדומה לדוגמה זו. הזמנים בפועל הוסרו מכיוון שהם משתנים באופן משמעותי. הגרף מראה שכל קריאה מתחילה לאחר שהאחרונה הסתיימה:

    גרף זמן של ארבע בקשות רשת, שכל אחת מהן מתחילה לאחר שהאחרונה הסתיימה, תוך כיסוי טווח הזמן המלא.

  6. שמור, סגור ופתח מחדש את היישום.

    Power Apps מאחסן נתונים במטמון, כך שבחירה חוזרת של הלחצן לא תגרום בהכרח לארבע בקשות חדשות. בכל פעם שתרצה לבדוק ביצועים, סגור את היישום ופתח אותו מחדש. אם הפעלת ויסות ברשת, מומלץ לכבות אותו עד שתהיה מוכן לבדיקה נוספת.

  7. הוסף פקד Button‎ שני והגדר את מאפיין OnSelect שלו לנוסחה זו:

    Concurrent(
        ClearCollect( Product, '[SalesLT].[Product]' ),
        ClearCollect( Customer, '[SalesLT].[Customer]' ),
        ClearCollect( SalesOrderDetail, '[SalesLT].[SalesOrderDetail]' ),
        ClearCollect( SalesOrderHeader, '[SalesLT].[SalesOrderHeader]' )
    )
    

    שים לב שהוספת את אותן קריאות ClearCollect ללחצן הראשון, אך הן נכללות בפונקציה Concurrent ומופרדות באמצעות פסיקים הפעם.

  8. נקה את צג הרשת בדפדפן.

  9. אם השתמשת בויסות ברשת בעבר, הפעל אותו שוב.

  10. תוך כדי לחיצה על מקש Alt, בחר בלחצן השני ולאחר מכן צפה בתעבורת הרשת.

    הכלים מציגים ארבע בקשות המבוצעות בו-זמנית, בדומה לדוגמה זו. שוב, הזמנים בפועל הוסרו מכיוון שהם משתנים באופן משמעותי. הגרף מראה שכל הקריאות מתחילות בערך באותו זמן ושהן לא ממתינות שהקריאה הקודמת תסתיים:

    גרף זמן של ארבע בקשות רשת, כל הארבע מתחילות יחד, ומכסות כמחצית מטווח הזמן.

    גרפים אלה מבוססים על אותו קנה מידה. באמצעות הפונקציה Concurrent, חסכת כמחצית מכמות הזמן הכולל הנדרשת לסיום של פעולות אלה.

  11. שמור, סגור ופתח מחדש את היישום.

תנאי Race

  1. הוסף חיבור לשירות Microsoft Translator ליישום שלך.

  2. הוסף פקד Text input ושנה את שמו ל- TextInput1 אם יש לו שם אחר.

  3. הוסף פקד Button‎ והגדר את מאפיין OnSelect שלו לנוסחה זו:

    Set( StartTime, Value( Now() ) );
    Concurrent(
        Set( FRTrans, MicrosoftTranslator.Translate( TextInput1.Text, "fr" ) );
            Set( FRTransTime, Value( Now() ) ),
        Set( DETrans, MicrosoftTranslator.Translate( TextInput1.Text, "de" ) );
            Set( DETransTime, Value( Now() ) )
    );
    Collect( Results,
        {
            Input: TextInput1.Text,
            French: FRTrans, FrenchTime: FRTransTime - StartTime,
            German: DETrans, GermanTime: DETransTime - StartTime,
            FrenchFaster: FRTransTime < DETransTime
        }
    )
    
  4. הוסף פקד Data table והגדר את מאפיין Items‎ שלו לתוצאות.

  5. בכרטיסיה מאפיינים של החלונית השמאלית, בחר ערוך שדות כדי לפתוח את החלונית שדות.

  6. ברשימת השדות, בחר בתיבת הסימון של כל שדה כדי להציג את כולם בטבלת הנתונים.

  7. (אופציונלי) גרור את השדה קלט לראש הרשימה וגרור את השדה FrenchFaster לתחתית הרשימה.

    רשימת שדות באוסף 'תוצאות'.

  8. בפקד Text input, הקלד או הדבק צירוף מילים לתרגום.

  9. תוך כדי לחיצה על מקש Alt, בחר את הלחצן מספר פעמים למילוי הטבלה.

    הזמנים מוצגים באלפיות השנייה.

    הצגת טבלת הנתונים המכילה תוצאות של תרגום המחרוזת

    בחלק מהמקרים, התרגום לצרפתית מהיר יותר מהתרגום לגרמנית, ולהיפך. שניהם מתחילים בו-זמנית, אבל אחד חוזר לפני השני מסיבות שונות, כולל השהיית רשת ועיבוד בצד השרת.

    תנאי Race יתרחש אם היישום היה תלוי בכך שתרגום אחד יסתיים ראשון. למרבה המזל, Power Apps מסמן את רוב יחסי התלות של התזמון שהוא יכול לזהות.